Բովանդակություն:

BME 60B Sandbox Project: 6 քայլ
BME 60B Sandbox Project: 6 քայլ

Video: BME 60B Sandbox Project: 6 քայլ

Video: BME 60B Sandbox Project: 6 քայլ
Video: BME Sandbox Project 2024, Հուլիսի
Anonim
BME 60B Sandbox Project
BME 60B Sandbox Project

Մեր Sandbox Project- ը նպատակ ունի օգնել կենսաբանական ոլորտի հետազոտողներին վերլուծել բջիջների նմուշները և պարզել նրանց բջիջների պայմանները: Այն բանից հետո, երբ օգտվողը մուտքագրում է իր բջջի նմուշի պատկերը, մեր ծածկագիրը մշակում է պատկերը, որպեսզի այն պատրաստ լինի բջիջների հաշվարկի ՝ պատկերը վերածելով մոխրագույն և երկուական: Կոդն օգտագործում է շեմը ՝ բջիջների զանգվածները ճշգրիտ գտնելու համար հեռացնելու ավելորդ տեղեկատվությունը, որը չի վերաբերում իրական բջիջներին: Պատկերի բջիջների քանակը հաշվելուց հետո մեր ծածկագիրը տալիս է պատկերի պիքսելային չափը և այնուհետև գտնում է բջիջների տարածման բաշխումը ՝ գծելով բջիջների թիվը բջիջների մակերեսի դիմաց, որպեսզի օգտագործողին համընկնում տա, մշակույթի ուտեստի մակերեսի տոկոսը, որը ծածկված է հետաքրքրության բջիջներով: Միախառնման հիման վրա հետազոտողը կարող է որոշել ՝ արդյոք բջիջները պետք է անցնել, թե ոչ. բջիջների փոխանցումը վերաբերում է բջիջների կամ միկրոօրգանիզմների կյանքի կամ քանակի ընդլայնմանը `որոշ մշակույթ տեղափոխելով թարմ աճման միջավայր, և դա օգտակար է, երբ բջիջները չափազանց մեծանում են կամ սնունդը սպառվում է: Կոդը գործարկելուց և պատկերը մշակելուց հետո օգտվողը կարող է որոշել ՝ ընդունո՞ւմ են, թե՞ մերժում են արդյունքները, և անհրաժեշտության դեպքում շարունակելու է տվյալների ավելի լավ որոնման շեմի ճշգրտումը:

Քայլ 1. Ընտրեք և կազմաձևեք պատկերը վերլուծության համար

Ընտրեք և կազմաձևեք պատկերը վերլուծության համար
Ընտրեք և կազմաձևեք պատկերը վերլուծության համար

Մեր կոդի առաջին քայլն է ընտրել համապատասխան պատկերը և կարգավորել այն Matlab- ում վերլուծության համար: Մենք կարող ենք ընտրել պատկերը ՝ օգտագործելով uigetfile գործառույթը, որը թույլ է տալիս մեզ գրավել ցանկացած ֆայլ և տեղադրել այն ծրագրի մեջ: Այնուհետև, օգտագործելով imread- ը, մենք կարդում ենք պատկերը և այն կարգավորում ենք Matlab- ում վերլուծության համար: Ընտրված պատկերը այնուհետև ցուցադրվում է ենթածրագրում:

Քայլ 2. Շեմ և GUI

Շեմ և GUI
Շեմ և GUI
Շեմ և GUI
Շեմ և GUI

Կոդի հենց սկզբում պատկերն ընտրվում է «uigetfile» - ի միջոցով, այնուհետև այդ պատկերը սահմանում փոփոխականով: Փոփոխականն այնուհետև կօգտագործվի ծածկագիրը նույնականացնելու համար ՝ տարբեր վերլուծություններ կատարելիս: Նկարում ստեղծվում է 2x2 ենթահող: 1 -ին դիրքում կցուցադրվի բնօրինակ պատկերը: Կոդի հաջորդ բաժինը այն տեղն է, որտեղ տեղի են ունենում շեմերի ճշգրտումներ: Սկզբում օգտագործվում է 0.6 շեմի լռելյայն և ցուցադրվում է ենթածրագրի 2 -րդ դիրքում: If-statement- ը այնուհետև օգտագործվում է որոշելու համար, թե արդյոք օգտվողը ցանկանում է պահպանել շեմը կամ հարմարեցնել այն: Օգտագործողը կարող է շեմը հարմարեցնել GUI- ի միջոցով, որը ներառում է պատկերը տարբեր շեմային պայմաններում, սահնակը և պահպանման կոճակը: Շեմը սահմանելուց հետո, օգտվողը կտտացնի պահպանման կոճակը ՝ պատկերը պահելու համար, և այն կպահվի օգտվողների MATLAB ֆայլերում որպես-p.webp

Քայլ 3. Եզրագծերի գծագրում և բջիջների բաշխում

Եզրագծերի գծագրում և բջիջների բաշխում
Եզրագծերի գծագրում և բջիջների բաշխում
Եզրագծերի գծագրում և բջիջների բաշխում
Եզրագծերի գծագրում և բջիջների բաշխում

Կոդի հաջորդ մասը գծում է ուրվագծերը: Կա մի հանգույց, որի մեջ բջիջները պարփակված են կարմիր պարագծով, իսկ այն բջիջները, որոնք գտնվում են մեկ այլ բջջի վերևում, կանաչով: Այնուհետև ուրվագծված պատկերը ցուցադրվում է 3 -րդ դիրքում `ինտերակտիվ հեռավորության գծով: Այս տողը որոշելու է պիքսելների թիվը գծում, որը հարմարեցված է օգտագործողի կողմից պիքսելից միլիմետր փոխարկիչին: Այնուհետև հեռավորության գործոնը բազմապատկվում է տարածաշրջանի օգնությամբ որոշված տարածքի վրա և տարածքն այժմ արտահայտվում է միլիմետր քառակուսու վրա: Այնուհետև տվյալները գծագրվում են հիստոգրամի միջոցով ՝ տեսնելու բջիջների բաշխվածությունն ըստ իր տարածքի: Այս հիստոգրամը կցուցադրվի 4 -րդ դիրքում:

Քայլ 4: Փոխարկել բջիջի պատկերը

Փոխարկել բջջային պատկերը
Փոխարկել բջջային պատկերը

Այս քայլին մենք վերցրեցինք մոխրագույն մասշտաբի պատկերը և այն երկուականացրինք, զտեցինք և շրջեցինք: Պատկերի վրա այս գործառույթների կատարումը հեռացրեց աղմկոտ պիքսելները, որոնք կարող էին սխալվել բջիջների հետ և բջիջների եզրերի շուրջ պատկերն ավելի հարթ և փափուկ դարձրեց: Դա արվել է պատկերի բջիջները հանելու համար որպես տարբերակելի «բլբուլներ», որոնք ինտենսիվությամբ տարբերվում էին ֆոնից: «Blobs» - ը բարձր ինտենսիվությամբ սպիտակ պատկերներ էին, իսկ ֆոնը ՝ սև: Եթե մի փոքր ավելի շատ ժամանակ հատկացվեր, ապա իմբինարիզացիայի գործառույթի փոխարեն մենք կօգտագործեինք Blob- ի պատկերի այլ փոխակերպում `ավելի ճշգրիտ և մեր պատկերներին ավելի հարմար լինելու համար, սակայն մեզ ավելի շատ ժամանակ էր պետք գործառույթը հետազոտելու և իրականացնելու համար:

Քայլ 5. Հաշվեք բջիջները և հաշվարկեք բջիջների միաձուլումը

Հաշվեք բջիջները և հաշվարկեք բջիջների միաձուլումը
Հաշվեք բջիջները և հաշվարկեք բջիջների միաձուլումը

Կոդի այս քայլում մենք նպատակ ունեինք հաշվել պատկերի բջիջների թիվը: Մենք հիմնականում օգտագործում էինք regionprops գործառույթը `բլբերի մակերեսները հաշվարկելու համար, և եթե հաշվարկվեր, որ տարածքը գտնվում է մեր ցանկալի սահմաններում, այն գծապատկերված կլինի ենթահողում: Սահմանները սահմանվեցին, որպեսզի հեռացվեն փոքր աղմկոտ պիքսելները կամ մեծ ինտենսիվությունները, որոնք բջիջներ չէին: Այնուհետև բջիջների հաշվիչը կհաշվարկի այն գծագրված ցենտրոիդները և դրանք կավելացներ for loop- ի հաշվիչում: Երբ որոշվեցին բջիջների մակերեսները, մենք կարողացանք հաշվարկել միախառնումը: Կոդի այս քայլի հիմնական կարևորությունը բջիջների միախառնումը գտնելն էր, և դա առանցքային էր կոդի մեր վերջնական նպատակի համար: Մենք դա արեցինք ՝ յուրաքանչյուր բլբում ամփոփելով պիքսելները (գումարը (allAreas)) և այն բաժանելով պատկերի ընդհանուր պիքսելային արժեքին (numel (img)): Այս հարաբերակցությունը մեզ կտա միախառնում, և եթե որոշվի, որ այն ավելի քան 80% է, քան ժամանակն է, որ բջիջները անցնեն հետազոտողի կողմից: Մենք նպատակ ունեինք լինել հնարավորինս ճշգրիտ և ճշգրիտ, բայց սահմանափակ ժամանակով այդքան անճշտություն առաջացավ: Եթե ժամանակը թույլ տա, մենք կփնտրեինք ուղիներ, որոնք ավելի ճշգրիտ կդարձնեին բլթերի հաշվարկը, ինչպես օրինակ ՝ ավելի շատ զտման տեխնիկան և (կամ) Hough Transform- ը, քանի որ դեռ բավարար հետազոտություններ չեն կատարվել ՝ ֆիլտրման այդ տեխնիկան փորձելու համար:

Քայլ 6: Բջիջների կլորություն

Բջիջների կլորություն
Բջիջների կլորություն
Բջիջների կլորություն
Բջիջների կլորություն

Նախքան կարողանալ չափել բլբի կլորությունը պատկերի մեջ, մենք պետք է RGB- ից փոխարկենք մոխրագույնի, երկուականացնենք, շրջենք և զտենք պատկերը: Filterտման տեխնիկան օգտագործում է bwareaopen գործառույթը, որը զտում է հետաքրքրության պատկերը և այն հեռացնում է չափազանց փոքր բնութագրերը կամ պիքսելները, որոնք չեն ներկայացնում բջիջի չափը: Սկավառակի և 2 -ի հարևանությամբ ստեղծվում է կառուցվածքային տարր և օգտագործվում է հետին պլանում կամ բջիջների ներսում ցանկացած բացը լրացնելու համար: Այնուհետև մենք օգտագործում ենք bwboundaries գործառույթը, որը հետևում է բլբերի և պահում է այն մատրիցայի մեջ: Այնուհետև մենք նկարը պիտակավորում ենք ՝ օգտագործելով տարբեր գույներ, որպեսզի այն դառնա ավելի հստակ տեսողական: Հաջորդը, օգտագործելով մի օղակ, որն անցնում է պատկերում հայտնաբերված օբյեկտների և անցքերի քանակի համաձայն, այն սահմանում է այս զանգվածին համապատասխան բլթերի շուրջը: Այս հանգույցն ավարտվելուց հետո սկսվում է մեկ այլ օղակ ՝ կրկին ըստ պատկերում հայտնաբերված օբյեկտների և անցքերի քանակի: Այս անգամ մենք օգտագործում ենք regionprops գործառույթը, որը զանգվածից հավաքում է որոշ հատկություններ, ինչպիսիք են մակերեսը և պահում է օբյեկտների և անցքերի քանակը պարունակող տեղեկատվությունը: Օգտագործելով այս տեղեկատվությունը, մենք հաշվարկում ենք այդ օբյեկտների մակերեսը և պարագիծը `օգտագործելով կենտրոնախոսի ձևը: Արդյունքները համեմատելու համար սահմանվում է շեմ, երբ մենք հաշվարկում ենք շրջանաձև օբյեկտի մետրային միավորը և այս չափումը գծագրում ենք որպես տեքստ ՝ հաշվարկված կենտրոնախույզների կողքին: Վերջնական կոդը կցուցադրի պատկերի տարբեր բջիջների կլորությունը, իսկ մեկ արժեքին մոտ ցանկացած արժեք կլինի ավելի կլոր, քան մյուսները: 1 արժեքը ենթադրում է, որ բջիջը կատարյալ կլոր է և գտնվում է անցնելու համար լավ վիճակում:

Խորհուրդ ենք տալիս: