Mundarija:
- 1 -qadam: old shartlar
- 2 -qadam: old shartlar (davomi yo'q)
- 3 -qadam: old shartlar (davomi yo'q)
- 4 -qadam: old shartlar (davomi yo'q)
- 5 -qadam: Kodni ishga tushirishga tayyorgarlik ko'rish uchun Matlab -ni tozalang
- 6 -qadam: 10 ta oddiy ko'z tasvirini va diabetik retinopatiya belgilari bo'lgan 10 ta tasvirni tanlang
- 7 -qadam: Diabetik retinopatiya belgilari bo'lgan 10 ta oddiy ko'z tasvirini va 10 ta tasvirni tanlang (davomi yo'q)
- 8 -qadam: 2 o'zgaruvchini yarating (Oddiy va tashxis qilingan) va ularning har birini 0 ga qo'ying
- 9 -qadam: Oddiy tasvirlarni avtomatik yuklash uchun Loop yaratish
- 10 -qadam: Oddiy rasmlarni avtomatik yuklash uchun Loop yaratish
- 11 -qadam: Rasm chegaralarini kesib oling
- 12-qadam: Kulrang o'lchamdagi tasvirni yarating
- 13 -qadam: Kontrastli tasvirni yarating
- 14 -qadam: Kontrastli tasvirni kuchaytirish
- 15 -qadam: O'rtacha filtr yarating
- 16 -qadam: O'rtacha filtrni kontrastli tasvir bilan birlashtirish
- 17 -qadam: Piksellarni olib tashlash orqali yangi o'rtacha niqob qiling
- 18 -qadam: Ikkilik filtrli tasvirni yarating
- 19 -qadam: Filtrlangan rasmlarda topilgan kichikroq bo'laklarni olib tashlang
- 20 -qadam: Diskni tuzuvchi elementini yarating
- 21 -qadam: Morfologik yaqin operatsiyalarni bajaring
- 22 -qadam: Kamida 8 ga ulanadigan ob'ektlarni toping
- 23 -qadam: Maksimal ulangan piksellar sonini toping
- 24 -qadam: Maksimal piksel qiymatlarini 0 ga o'rnating va> = 26 pikselli ulanish bilan piksellarni toping
- 25 -qadam: Rasmdagi qon tomirlarini olib tashlang
- 26 -qadam: Rasmni ko'rsatish
- 27 -qadam: Kemalarni olib tashlang va qonning Bloblarini hisoblang
- 28 -qadam: aniqlangan qon pıhtılarının soniga qarab, to'r pardasi tasvirini tashxis qiling
- 29 -qadam: Agar 5 dan ortiq Blob bo'lsa …
- 30 -qadam: Oddiy tasvirlar uchun tasvirni raqamli qiymatlari 2 va 3 bo'lgan filtrlash jarayonini takrorlang
- 31 -qadam: Diagnostik tasvirlar uchun butun jarayonni takrorlang
- 32 -qadam: Statistik tahlil
- 33 -qadam: Ishonch oralig'ini topish
Video: MATLAB orqali diabetik retinopatiyaning avtomatlashtirilgan diagnostikasi: 33 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
(Yuqoridagi kod sxemasiga qarang)
Diabetik retinopatiya-bu qondagi qand miqdorining ko'payishi natijasida kelib chiqadigan diabet bilan bog'liq ko'z kasalligi. Qondagi qand miqdorining yuqori bo'lishi ko'zning to'r pardasidagi qon tomirlarining shishishiga olib keladi, bu esa tomirlarning kengayishiga va hatto tomirlarning oqishiga olib keladi, bu esa to'r pardasi tasvirlarida qorong'u joylarga olib keladi. Ushbu kod yordamida biz qon tomirlarida oqish joylarining paydo bo'lishini fon diabetik retinopatiyasining ko'rsatkichi sifatida ishlatishni maqsad qilib qo'yganmiz, lekin real dunyoda qo'shimcha diagnostika usullari talab qilinadi. Ushbu kodning maqsadi - retinal tasvirlardagi qora dog'lar orqali ko'rsatiladigan diabetik retinopatiya belgilarini aniqlash uchun tasvirni qayta ishlash va retinal tasvirlar diagnostikasini avtomatlashtirish.
Ko'zning to'r pardasining 10 ta normal tasviri va 10 ta aniqlangan retina tasviri kod orqali ishlov berilgan, u avval tasvirlarni o'qiydi va filtrlaydi, so'ngra qora dog'lar miqdorini aniqlaydi, bu chegaraga qarab diabetik retinopatiya alomatlari bor yoki yo'qligini aniqlash uchun. Keyin natijalar tomoshabinlar talqini uchun buyruqlar oynasida chop etiladi.
1 -qadam: old shartlar
1. Kompyuteringizda MATLAB dasturi yuklanganligiga ishonch hosil qiling.
2. Havolada topilgan txt faylini yuklab oling. (MATLAB kodi bilan bir xil katalogga saqlash uchun "ctrl+s" tugmalarini bosing)
2 -qadam: old shartlar (davomi yo'q)
4. MATLAB -ni oching va buyruqlar oynasiga "uiimport" kiriting.
5. officialdiagnoses.txt faylini tanlang va uni MATLABga hujayra matritsasi sifatida import qiling.
6. "Rasmiy diagnostika" ni ish maydonida o'zgaruvchi sifatida ko'rishingizga ishonch hosil qiling.
3 -qadam: old shartlar (davomi yo'q)
7. ModWald.m funksiyasini yuklang, uni yuqoridagi koddan olish mumkin yoki uni Canvas -dan yuklab olish mumkin.
(Kodni professor King va professor Choi taqdim etgan)
4 -qadam: old shartlar (davomi yo'q)
8. The STARE Project ma'lumotlar bo'limidan 400 ta xom tasvirni yuklab oling.
5 -qadam: Kodni ishga tushirishga tayyorgarlik ko'rish uchun Matlab -ni tozalang
Kodga qo'shing:
1. hammasini yoping (avval ochilgan rasmlarni yopadi)
2. clearvars - rasmiy tashxislardan tashqari (ilgari import qilingan rasmiy tashxis txt fayli bundan mustasno, barcha o'zgaruvchilarni tozalaydi)
3. cclc (Buyruqlar oynasini tozalaydi)
6 -qadam: 10 ta oddiy ko'z tasvirini va diabetik retinopatiya belgilari bo'lgan 10 ta tasvirni tanlang
1. Tashxis matnli faylini oling va rasm nomlarini chiqarib oling. Bu nomlar matnli faylning birinchi ustunida joylashgan bo'lib, ularni chiqarib olish uchun 'officialdiagnoses (:, 1)' yozing. Rasm nomlari matritsasi "all_image_numbers" o'zgaruvchisiga berilgan.
2. cell2mat funktsiyasidan foydalanib, all_image_numbers o'zgaruvchisini hujayra massividan matritsa qatoriga aylantiring.
7 -qadam: Diabetik retinopatiya belgilari bo'lgan 10 ta oddiy ko'z tasvirini va 10 ta tasvirni tanlang (davomi yo'q)
3. Kodni ishlatish uchun 10 ta oddiy ko'z tasvirini tanlang. Bu holda tanlangan tasvirlar 278, 199, 241, 235, 35, 77, 82, 164, 239, 170 edi.
Bu raqamlarni matritsaga joylashtiring va ularni tasvirlarni yuklashda chaqiriladigan o'zgaruvchiga tayinlang.
4. Diabetik retinopatiya tashxisi qo'yilgan retinal tasvirlar uchun 3 -bosqichni takrorlang. Bu holda tanlangan tasvirlar 139, 137, 136, 135, 133, 140, 141, 116, 157, 188 edi.
8 -qadam: 2 o'zgaruvchini yarating (Oddiy va tashxis qilingan) va ularning har birini 0 ga qo'ying
Loop raqamlarini ishga tushirish uchun for o'zgaruvchisidan oldin bu o'zgaruvchilarni yarating.
9 -qadam: Oddiy tasvirlarni avtomatik yuklash uchun Loop yaratish
1. for loop yaratish
2. Hisoblash o'zgaruvchisini (i, bu holda) 1-10 qiymatlar matritsasiga o'rnating. Ushbu hisoblash o'zgaruvchisi har bir tasvirni alohida chaqirish uchun ishlatiladi
3. Num2str funksiyasi yordamida tasvir nomini qatordan raqamga aylantirish va aylantirish uchun tasvir matritsasidagi i elementini oling.
Raqam funktsiyasidan foydalanib, rasm nomidagi raqamlar sonini toping. Bu qiymatni raqamlar_normal o'zgaruvchisiga belgilang. Bu raqam bitta raqamli raqamlar uchun 1, ikki xonali raqamlar uchun 2 va uch xonali raqamlar uchun 3 bo'lishi kerak. Bu ma'lumotlar rasmlarga avtomatik qo'ng'iroq qilish uchun ishlatiladi.
10 -qadam: Oddiy rasmlarni avtomatik yuklash uchun Loop yaratish
3. Oldingi bosqichlarning barcha uchta imkoniyatini o'z ichiga olgan if iborasini yarating. Agar tasvir nomi 1 ta raqamdan iborat bo'lsa, tasvir "im000", agar 2 ta raqam bo'lsa, tasvir "im00", 3 bo'lsa, tasvir "im0" deb nomlanadi.
4. Har bir if ifodasi ostida, mos keladigan, agar nolli sonli (yuqorida ta'riflanganidek), keyin "i" yozuvi ostida "im" ni o'qish uchun o'zgaruvchini belgilang.
11 -qadam: Rasm chegaralarini kesib oling
Qora chegaralarni yo'q qilish va I_crop o'zgaruvchiga tayinlash uchun asl tasvirni oling va imcrop filtrini qo'llang. Kesish to'rtburchagi matritsa yordamida aniqlanadi [95, 95, 500, 410].
12-qadam: Kulrang o'lchamdagi tasvirni yarating
Kesilgan tasvirni oling va tasvirni kul rangga o'zgartirish uchun rbg2gray filtrini qo'llang. Bu tasvirni I2 o'zgaruvchiga belgilang.
13 -qadam: Kontrastli tasvirni yarating
I2 tasvirini oling va intensivlik qiymatlarini qayta o'lchash uchun imadjust -dan foydalaning.
[0,2, 0,7] oralig'iga kiradigan qiymatlarni oling va ularni [0, 1] ga qayta o'lchamang. Tasvirni yorqinroq qilish uchun gamma 0,8 ga o'rnatiladi. Yangi tasvirni I_adjusted ga belgilang.
14 -qadam: Kontrastli tasvirni kuchaytirish
I_ sozlangan tasvirni oling va kontrastni kuchaytirish uchun adapthisteq funktsiyasidan foydalaning.
Adapthisteq sintaksisida tasvir nomi, I_adjusted, "numTiles", numTiles hajmi, "nBins" va axlat qutilari soni talab qilinadi. NumTiles hajmi [8 8] ga o'rnatiladi, tasvirni 8x8 plitalarga bo'linadi va axlat qutilari soni 28 ga o'rnatiladi. I_constrast tasvirini belgilang.
15 -qadam: O'rtacha filtr yarating
Fspecial funktsiyasidan foydalanib, "Meanfilt" nomli o'zgaruvchini yarating. O'rtacha filtrni yaratish uchun "o'rtacha funktsiyani" kiriting va toymas oynaning o'lchamiga [90 90] kiriting.
16 -qadam: O'rtacha filtrni kontrastli tasvir bilan birlashtirish
Mas_mean nomli yangi o'zgaruvchini yarating va I_contrast tasvirini olish va avval yaratilgan o'rtacha filtrni qo'llash uchun imfilter funktsiyasidan foydalaning.
17 -qadam: Piksellarni olib tashlash orqali yangi o'rtacha niqob qiling
Mask_mean2 nomli o'zgaruvchini yarating va imsubtract funktsiyasidan foydalanib, I_contrast -dagi har bir pikselning qiymatini mask_mean -dagi mos keladigan pikseldan olib tashlang.
18 -qadam: Ikkilik filtrli tasvirni yarating
Kul rang o'lchovli tasvirlarni qora va oq rangga aylantiring. Kiritish mask_mean2, "moslashuvchan", "oldingi fon qutbliligi", "qorong'i", "sezuvchanlik", 0.6. Ushbu yangi rasmni mask_binarize ga tayinlang.
19 -qadam: Filtrlangan rasmlarda topilgan kichikroq bo'laklarni olib tashlang
Mask_binarize -dagi bwareaopen funktsiyasidan foydalanib, ulanishi 100 pikseldan kam bo'lgan ob'ektlarni olib tashlang va chegara qiymatini 100 ga qo'ying. O'zgaruvchini bw sifatida belgilang.
20 -qadam: Diskni tuzuvchi elementini yarating
Strel funktsiyasidan foydalanib, diskni tuzish elementini yarating (radiusi 2). Buni tayinlang.
21 -qadam: Morfologik yaqin operatsiyalarni bajaring
Ob'ektga morfologik yaqin operatsiyani bajarish uchun bw ni oling va imclose funktsiyasini strukturaviy elementga qo'llang.
22 -qadam: Kamida 8 ga ulanadigan ob'ektlarni toping
Bw -ni oling va bwconncomp -dan foydalanib, rasmda kamida 8 ta ulanishi mumkin bo'lgan ob'ektlarni toping. Raqam chiqishini cc_1 ga belgilang.
23 -qadam: Maksimal ulangan piksellar sonini toping
Har bir katakchadagi "raqam" funktsiyasini bajarish uchun cellfun funktsiyasidan foydalaning. Bu PixelIdxList katakchasidagi elementlar sonini topadi. "NumPixels" ga qiymat bering.
NumPIxelsda maksimal qiymatlarni toping. Eng katta maksimalni "eng katta" ga va maksimal qiymat indeksini "idx" ga belgilang.
24 -qadam: Maksimal piksel qiymatlarini 0 ga o'rnating va> = 26 pikselli ulanish bilan piksellarni toping
= 26 pikselli ulanish "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp
= 26 pikselli ulanish "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp
= 26 pikselli ulanish "src =" {{file.large_url | qo'shish: 'auto = webp & frame = 1 & height = 300' %} ">
= 26 pikselli ulanish "src =" {{file.large_url | qo'shish: 'auto = webp & frame = 1 & height = 300' %} ">
"Bw" tasviridagi eng katta qiymatga ega bo'lgan piksellarni 0 ga o'rnating va piksellarni qora qilib qo'ying.
Bwconncomp yordamida rasmda kamida 26 piksel ulanishi mumkin bo'lgan ob'ektlarni toping. Cc_1 o'zgaruvchiga tayinlang.
25 -qadam: Rasmdagi qon tomirlarini olib tashlang
[0, 0.9] diapazonli bwpropfilt funktsiyasidan foydalanib, rasmda mavjud bo'lgan qon tomirlarini olib tashlang.
[0.9, 1] chiqarib tashlangan, chunki 1 ga yaqin qiymatlar chiziqni bildiradi. "Yuk tashish kemalariga" topshiriq bering.
26 -qadam: Rasmni ko'rsatish
Har bir filtrlangan tasvirni pastki qismda ko'rsatish. Imshow. "chegara" va "qattiq" kirishlar bilan, har bir tasvirni subplot tuzilmasida ko'rsatadi. Qaysi filtr ishlatilganligini aniqlash uchun har bir rasmga sarlavha qo'shing.
27 -qadam: Kemalarni olib tashlang va qonning Bloblarini hisoblang
1. "RemoveVessels" ni oling va "Centroid" funktsiyasini mintaqadagi ob -havoda qo'llang, rasmdagi ob'ektlarning markaziy markazlarini aniqlang. Bu narsalar tasvirdagi qon pıhtılarına to'g'ri kelishi kerak.
2. Tsentroid matritsaning uzunligini olish orqali aniqlangan qon quyqalar sonini hisoblang.
28 -qadam: aniqlangan qon pıhtılarının soniga qarab, to'r pardasi tasvirini tashxis qiling
Belgilangan qon pıhtılarının soniga qarab tasvirni aniqlash uchun if iboralaridan foydalaning.
Agar aniqlangan tsentroidlar soni 5 dan kam yoki teng bo'lsa, tasvir normal deb topilgan.
Agar tsentroidlar soni 5 tadan ko'p bo'lsa, tasvirga diabetik retinopatiya tashxisi qo'yilgan.
Natijada fprintf yordamida buyruqlar oynasida chop etiladi.
29 -qadam: Agar 5 dan ortiq Blob bo'lsa …
Tashxis qo'yilgan tasvirlar uchun yuqoridagi ko'rsatmalarni boshqa bayonot sifatida takrorlang. Bloblar soni 5 dan katta bo'lsa, bu qism ishlaydi.
If iborasini tugating.
30 -qadam: Oddiy tasvirlar uchun tasvirni raqamli qiymatlari 2 va 3 bo'lgan filtrlash jarayonini takrorlang
Agar raqamlar soni 2 va 3 ga teng bo'lsa, asl nusxaning qolgan qismi uchun jarayonni takrorlang.
For loopini tugating.
31 -qadam: Diagnostik tasvirlar uchun butun jarayonni takrorlang
"Raqamlar_to_ekstrakt_diagnozi" matritsasida ko'rsatilgan tashxis qo'yilgan tasvirlar yordamida butun jarayonni takrorlang.
Har bir raqamni (i) bosib o'tib, uni (i+10) raqamiga o'zgartirganingizga ishonch hosil qiling, shunda tashxis qo'yilgan raqamlar 11 dan 20 gacha tasvir sifatida paydo bo'ladi.
32 -qadam: Statistik tahlil
1. "Actual_Diagnosis_Matrix" natijalarni txt faylidagi rasmiy tashxis bilan solishtirish uchun ishlatiladi. Birinchi 10 ta nol birinchi 10 ta tasvir normal bo'lishi kerakligini ko'rsatadi. Oxirgi 10 ta rasm shuni ko'rsatadiki, oxirgi 10 ta rasm diabetik retinopatiya deb tasniflanishi kerak.
2. "Raqam_to'g'ri" ni yaratish uchun ishlatiladigan teng tenglik belgisi "loop_funktsiyasi" ning tegishli elementlarining qiymatini for loopdan yaratilgan "Diagnosis_Matrix" ga solishtirib, mantiqiy qator hosil qiladi.
Tashxisga mos keladigan har bir element uchun 1 qo'shiladi, bu kod to'g'ri tasvirni aniqlagan. Agar noto'g'ri bo'lsa, matritsaga 0 qo'shiladi.
So'ngra, bu yig'indini olsak, hammasi qo'shiladi. Boshqacha qilib aytganda, u to'g'ri tashxis qo'yilgan tasvirlar yig'indisini topadi.
3. "Final_foiz_to'g'ri" - bu diabetik retinopatiya aniqlangan kodning qanchalik to'g'ri hisoblangan foizi. To'g'ri tashxis qo'yilgan tasvirlar sonini 20 ga (rasmlarning umumiy soniga) bo'linadi va 100 ga ko'paytirib, muvaffaqiyatli tashxis qo'yish foizini topadi.
33 -qadam: Ishonch oralig'ini topish
1. ModWald.m ni yuklanganligiga ishonch hosil qiling, uni funksiya deb atash mumkin. Vazifasiz, o'zgartirilgan Wald usuli yordamida ishonch oralig'ini o'zingiz hisoblashingiz kerak bo'ladi.
2. ModWald funksiyasi 2 ta kirishga ega, bu erda birinchisi to'g'ri aniqlangan tasvirlar soni, ikkinchisi - tasvirlarning umumiy miqdori.
3. ModWald funktsiyasi tanlangan ma'lumotlarning to'g'riligi uchun nisbatlar ishonch oralig'ining pastki va yuqori chegaralarini chiqaradi. Boshqacha qilib aytganda, siz foizlar oralig'ini berasiz, bu erda kodning to'g'riligining haqiqiy foizi yotadi.
4. Statistika va ishonch oralig'ini buyruq oynasiga chiqarish uchun quyida fprintf tugmasidan foydalaning.
> fprintf ('%. Rasmiy tashxisga ko'ra, to'r pardasi tasvirlarining 0f foiziga to'g'ri tashxis qo'yilgan. / n / n', Final_foiz_to'g'ri)
> fprintf ('Bizning kodimiz diabetik retinopatiyaga to'g'ri tashxis qo'yadigan haqiqiy foiz / n 20 namunali rasmga asoslangan holda [%.3f, %.3f] oralig'iga tushadi / n', pastki_bog'li, yuqori_bog'langan)
Tavsiya:
Geeetech kengashi Raspberry Pi orqali to'g'ridan -to'g'ri simli USB kabeli orqali: 4 qadam
Geeetech kengashi Raspberry Pi orqali to'g'ridan -to'g'ri maxsus USB kabeli orqali: Salom! Ushbu qo'llanmada JST XH 4-pinli maxsus USB-ni qanday qilish kerakligi ko'rsatilgan, shuning uchun siz Raspberry Pi yoki boshqa USB qurilmangizni Geeetech printeridagi A10 kabi Geeetech 2560 rev 3 kartasiga to'g'ridan-to'g'ri ulashingiz mumkin. Bu kabel qulay paralelga ulanadi
IoT APIS V2 - avtomatlashtirilgan o'simliklarni sug'orish avtomatlashtirilgan tizimi: 17 qadam (rasmlar bilan)
IoT APIS V2 - Avtomatik o'simliklarni sug'orish IoT tizimi: Bu loyiha mening oldingi ko'rsatmalarimning evolyutsiyasi: APIS - O'simliklarni sug'orishning avtomatlashtirilgan tizimi Men deyarli bir yildan buyon APISdan foydalanmoqdaman va oldingi dizaynni yaxshilashni xohladim. zavodni masofadan turib kuzatib boring. Mana shunday
Bir nechta BMP280 datchiklari Arduino Uno orqali SPI orqali: 6 qadam
Bir nechta BMP280 datchiklari Arduino Uno -da SPI orqali: Bu qo'llanmada biz uchta BMP280 -ni Arduino Uno -ga SPI orqali ulashamiz, lekin har bir sensor uchun nSS (Slave Select) sifatida D3 dan D10 raqamli portlari yordamida Uno -da sakkizta BMP280 -ni ulashingiz mumkin. B o'lchagan atmosfera bosimi namunalarining
Braço Robo Controlado orqali uyali aloqa orqali: 3 qadam
Bracho Robô Controlado uyali aloqa tizimi orqali: yordamchi dasturlar bilan jihozlangan, ular bir -biridan farqli o'laroq, bir -biridan farqli o'laroq, elektron pochta orqali yuboriladi: axborot uzatish uchun telefon orqali yuboriladi
Inventarizatsiya - Kompyuterning tezkor diagnostikasi endi o'zgartirildi, quyida qarang: 6 qadam
Inventarizatsiya - Kompyuterni tez diagnostika qilish, endi quyida qarang: Agar siz oldingizda bo'lmagan kompyuterda ishlashingiz kerak bo'lsa, sizga aniq inventarizatsiya kerak bo'ladi. Bu ko'rsatma faqat hamkasbining kompyuter uchun haydovchini topishda qiynalayotgani tufayli paydo bo'ldi. Men Aida32 shaxsiy xizmatidan http://majorgeeks.com saytidan foydalanaman