Përmbajtje:
- Hapi 1: Parakushtet
- Hapi 2: Parakushtet (nuk janë)
- Hapi 3: Parakushtet (nuk janë)
- Hapi 4: Parakushtet (nuk)
- Hapi 5: Pastroni Matlab për t'u përgatitur për ekzekutimin e kodit
- Hapi 6: Përzgjidhni 10 Imazhe Normale të Syrit dhe 10 Imazhe Me Simptoma të Retinopatisë Diabetike
- Hapi 7: Përzgjidhni 10 Imazhe Normale të Syrit dhe 10 Imazhe Me Simptoma të Retinopatisë Diabetike (jo)
- Hapi 8: Krijoni 2 Variabla (Normale dhe të Diagnostikuara) dhe Vendosini Secila në 0
- Hapi 9: Krijoni një lak për ngarkimin automatik të imazheve normale
- Hapi 10: Krijoni një lak për ngarkimin automatik të imazheve normale (jo)
- Hapi 11: Prerja e kufijve të figurës
- Hapi 12: Krijoni një imazh në shkallë gri
- Hapi 13: Krijoni një imazh të kundërt
- Hapi 14: Përmirësoni imazhin e kontrastit
- Hapi 15: Krijoni një filtër mesatar
- Hapi 16: Kombinoni filtrin mesatar me imazhin e kundërt
- Hapi 17: Bëni një maskë të re mesatare duke zbritur piksele
- Hapi 18: Krijoni një imazh të filtruar binar
- Hapi 19: Hiqni blozat më të vogla të gjetura në imazhet e filtruara
- Hapi 20: Krijoni një element të strukturimit të diskut
- Hapi 21: Kryeni operacione mbyllëse morfologjike
- Hapi 22: Gjeni objektet me lidhshmëri së paku 8
- Hapi 23: Gjeni numrin maksimal të pikselave të lidhur
- Hapi 24: Vendosni vlerat maksimale të pikselëve në 0 dhe gjeni piksele me> = 26 lidhje me piksel
- Hapi 25: Hiqni enët e gjakut në imazh
- Hapi 26: Shfaqja e figurës
- Hapi 27: Hiqni Anijet dhe Numëroni Pikat e Gjakut
- Hapi 28: Diagnostifikoni imazhin e retinës në bazë të numrit të mpiksjeve të gjakut të identifikuara
- Hapi 29: Nëse ka më shumë se 5 pika …
- Hapi 30: Përsëriteni procesin e filtrimit për imazhe normale me vlera të shifrës së figurës si 2 dhe 3
- Hapi 31: Përsëriteni të gjithë procesin për imazhet e diagnostikuara
- Hapi 32: Analiza statistikore
- Hapi 33: Gjetja e Intervalit të Besimit
Video: Diagnoza e automatizuar e retinopatisë diabetike përmes MATLAB: 33 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
(Shihni skicën e kodit më lart)
Retinopatia diabetike është një sëmundje e lidhur me diabetin e syve e shkaktuar nga nivelet e larta të sheqerit në gjak. Nivelet e larta të sheqerit në gjak bëjnë që enët e gjakut në retinë të fryhen, gjë që çon në zgjerimin e enëve të gjakut dhe madje edhe rrjedhjet e enëve, të cilat çojnë në njolla të errëta në imazhet e retinës. Me këtë kod, ne synojmë të përdorim shfaqjen e njollave të rrjedhjes së enëve të gjakut si një tregues të retinopatisë diabetike në sfond, megjithëse teknikat e mëtejshme të diagnostikimit do të kërkoheshin në botën reale. Qëllimi i këtij kodi është të automatizojë përpunimin e imazhit dhe diagnostikimin e imazheve të retinës për të identifikuar shenjat e retinopatisë diabetike të shfaqura përmes njollave të errëta në imazhet e retinës.
10 imazhe normale të retinës dhe 10 imazhe të diagnostikuara të retinës u përpunuan përmes një kodi që së pari lexon dhe filtron imazhet dhe pastaj përcakton pikat e errëta për të përcaktuar nëse simptomat e retinopatisë diabetike janë të pranishme, bazuar në një prag të caktuar. Rezultatet pastaj shtypen në dritaren e komandës për interpretimin e shikuesit.
Hapi 1: Parakushtet
1. Sigurohuni që keni shkarkuar programin MATLAB në kompjuterin tuaj.
2. Shkarkoni skedarin txt që gjendet në lidhje. (Shtypni ‘ctrl+s’ për të ruajtur në të njëjtën drejtori si Kodi MATLAB)
Hapi 2: Parakushtet (nuk janë)
4. Hapni MATLAB dhe shkruani ‘uiimport’ në dritaren e komandës.
5. Zgjidhni skedarin officialdiagnoses.txt dhe importojeni në MATLAB si një matricë qelizore.
6. Sigurohuni që i shihni 'diagnozat zyrtare' si një ndryshore në hapësirën e punës.
Hapi 3: Parakushtet (nuk janë)
7. Shkarkoni funksionin ModWald.m, i cili mund të merret nga kodi i mësipërm ose ta shkarkoni nga Canvas.
(Kodi i siguruar nga Profesor King dhe Profesor Choi)
Hapi 4: Parakushtet (nuk)
8. Shkarkoni 400 imazhe të papërpunuara nga pjesa e të dhënave të Projektit STARE.
Hapi 5: Pastroni Matlab për t'u përgatitur për ekzekutimin e kodit
Shto në kod:
1. mbyll të gjitha (Mbyll të gjitha imazhet e hapura më parë)
2. Clearvars - përveç diagnozave zyrtare (Pastron të gjitha ndryshoret përveç skedarit txt të diagnozave zyrtare të importuar më parë)
3. cclc (Pastron dritaren e komandës)
Hapi 6: Përzgjidhni 10 Imazhe Normale të Syrit dhe 10 Imazhe Me Simptoma të Retinopatisë Diabetike
1. Merrni skedarin e tekstit të diagnozës dhe nxirrni emrat e imazheve. Këta emra përmbahen në kolonën e parë të skedarit tekst, kështu që për t'i nxjerrë ato shkruani 'diagnozat zyrtare (:, 1)'. Matrica e emrave të imazheve iu caktua një ndryshoreje, "të gjithë_image_numbers"
2. Shndërroni ndryshoren all_image_numbers nga një grup qelizash në një grup matricash duke përdorur funksionin cell2mat
Hapi 7: Përzgjidhni 10 Imazhe Normale të Syrit dhe 10 Imazhe Me Simptoma të Retinopatisë Diabetike (jo)
3. Përzgjidhni 10 imazhe normale të syve për të ekzekutuar kodin. Imazhet e zgjedhura në këtë rast ishin 278, 199, 241, 235, 35, 77, 82, 164, 239, 170.
Vendosini këta numra në një matricë dhe caktojini ato në një ndryshore që do të thirret kur ngarkoni imazhet.
4. Përsëriteni hapin 3 për imazhet e retinës që janë diagnostikuar me retinopati diabetike. Imazhet e zgjedhura në këtë rast ishin 139, 137, 136, 135, 133, 140, 141, 116, 157, 188.
Hapi 8: Krijoni 2 Variabla (Normale dhe të Diagnostikuara) dhe Vendosini Secila në 0
Krijoni këto ndryshore para lakut for për të inicializuar numrat e lakut.
Hapi 9: Krijoni një lak për ngarkimin automatik të imazheve normale
1. Krijoni një lak for
2. Vendosni një ndryshore numërimi (i, në këtë rast) në një matricë të vlerave 1-10. Kjo ndryshore numërimi do të përdoret për të thirrur secilën imazh individualisht
3. Merrni elementin i në matricën e imazheve për të nxjerrë dhe konvertuar emrin e figurës nga një varg në një numër duke përdorur funksionin num2str.
Gjeni numrin e shifrave të pranishme në emrin e figurës duke përdorur funksionin numerik. Caktojeni këtë vlerë një ndryshoreje, shifra_ normale. Ky numër duhet të jetë 1 për numrat njëshifror, 2 për numrat dyshifrorë dhe 3 për numrat treshifrorë. Ky informacion do të përdoret për të thirrur automatikisht imazhe.
Hapi 10: Krijoni një lak për ngarkimin automatik të imazheve normale (jo)
3. Krijoni një deklaratë if që përmban të tre mundësitë nga hapat e mëparshëm. Nëse emri i figurës ka 1 shifër, imazhi do të quhet "im000", nëse ka 2 shifra, imazhi do të quhet "im00", dhe nëse ka 3 imazhi do të quhet "im0".
4. Nën secilën deklaratë if, caktoni një ndryshore në imread "im" nën deklaratën përkatëse, if me numrin e duhur të zerove (siç përshkruhet më sipër), e ndjekur nga i.
Hapi 11: Prerja e kufijve të figurës
Merrni imazhin origjinal dhe aplikoni një filtër imcrop për të eleminuar kufijtë e zinj dhe caktoni një ndryshore I_crop. Drejtkëndëshi i prerjeve specifikohet duke përdorur një matricë [95, 95, 500, 410].
Hapi 12: Krijoni një imazh në shkallë gri
Merrni imazhin e prerë dhe aplikoni filtrin rbg2gray për të ndryshuar imazhin në shkallë gri. Caktojeni këtë imazh në ndryshoren I2.
Hapi 13: Krijoni një imazh të kundërt
Merrni imazhin I2 dhe përdorni imadjust për të ringritur vlerat e intensitetit.
Merrni vlerat që bien brenda intervalit [0.2, 0.7] dhe rishitini ato në një [0, 1]. Gama është vendosur në 0.8 për ta bërë imazhin më të ndritshëm. Cakto imazhin e ri te I_adjusted.
Hapi 14: Përmirësoni imazhin e kontrastit
Merrni imazhin I_ të rregulluar dhe përdorni funksionin adapthisteq për të rritur kontrastin.
Sintaksa Adapthisteq kërkon emrin e imazhit, I_adjusted, ‘numTiles’, madhësinë e numTiles, ‘nBins’ dhe numrin e koshave. Madhësia e numTiles vendoset në [8 8], duke e ndarë imazhin në pllaka 8x8 dhe numri i koshave është vendosur në 28. Cakto imazhin në I_constrast.
Hapi 15: Krijoni një filtër mesatar
Krijoni një ndryshore të quajtur 'meanfilt' duke përdorur funksionin fspecial. Futni 'funksionin mesatar' për të krijuar filtrin mesatar dhe futni [90 90] për madhësinë e dritares rrëshqitëse.
Hapi 16: Kombinoni filtrin mesatar me imazhin e kundërt
Krijoni një ndryshore të re të quajtur mask_mean dhe përdorni funksionin imfilter për të marrë imazhin I_contrast dhe për të aplikuar filtrin mesatar të krijuar më parë.
Hapi 17: Bëni një maskë të re mesatare duke zbritur piksele
Krijoni një ndryshore të quajtur mask_mean2 dhe përdorni funksionin imsubtract për të zbritur vlerën e secilit piksel në kontrastin I_ nga pikseli përkatës në mask_mean.
Hapi 18: Krijoni një imazh të filtruar binar
Shndërroni imazhet e shkallës gri në të zezë dhe të bardhë duke përdorur imbinarize. Maska hyrëse_mean2, ‘adaptive’, ‘Polarizimi i planit të parë’, ‘e errët’, ‘Ndjeshmëria’, 0.6. Cakto këtë imazh të ri për të maskuar_binarizuar.
Hapi 19: Hiqni blozat më të vogla të gjetura në imazhet e filtruara
Hiqni objektet me lidhje më pak se 100 piksele duke përdorur funksionin bwareaopen në mask_binarize dhe vendosni vlerën e pragut në 100. Caktoni ndryshoren si bw.
Hapi 20: Krijoni një element të strukturimit të diskut
Krijoni një element strukturimi të diskut (me rreze 2) duke përdorur funksionin strel. Caktojeni atë se.
Hapi 21: Kryeni operacione mbyllëse morfologjike
Merrni bw dhe aplikoni funksionin imclose në elementin strukturor për të kryer një operacion të ngushtë morfologjik në objekt.
Hapi 22: Gjeni objektet me lidhshmëri së paku 8
Merrni bw dhe përdorni bwconncomp për të gjetur objektet me lidhje të paktën 8 në imazh. Caktoni daljen e numrit në cc_1.
Hapi 23: Gjeni numrin maksimal të pikselave të lidhur
Përdorni funksionin e argëtimit të qelizave për të kryer funksionin "numel" në çdo qelizë në CC. Kjo gjen numrin e elementeve në qelizën PixelIdxList. Caktoni vlerën "numPixels".
Gjeni vlerat maksimale në numPIxels. Cakto maksimumin më të madh në "më të madhin" dhe indeksin e vlerës maksimale në "idx".
Hapi 24: Vendosni vlerat maksimale të pikselëve në 0 dhe gjeni piksele me> = 26 lidhje me piksel
= 26 Lidhshmëri Pixel "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp
= 26 Lidhshmëri Pixel "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp
= 26 Lidhshmëri Pixel "src =" {{file.large_url | shto: 'auto = webp & frame = 1 & height = 300' %} ">
= 26 Lidhshmëri Pixel "src =" {{file.large_url | shto: 'auto = webp & frame = 1 & height = 300' %} ">
Vendosni pikselët me vlerat më të mëdha në imazhin "bw" në 0, duke i bërë pikselët të zinj.
Gjeni objektet me një lidhje prej të paktën 26 piksele në imazh duke përdorur bwconncomp. Cakto ndryshoren cc_1.
Hapi 25: Hiqni enët e gjakut në imazh
Hiqni enët e gjakut ende të pranishme në imazh duke përdorur funksionin bwpropfilt me një gamë prej [0, 0.9].
[0.9, 1] përjashtohet sepse vlerat afër 1 tregojnë një linjë. Caktoni në "RemoveVessels".
Hapi 26: Shfaqja e figurës
Shfaqni çdo imazh të filtruar në një nënplot. Shfaq me hyrje "kufitare" dhe "të ngushta", shfaq çdo imazh në një strukturë të nënplotit. Shtoni një titull në çdo imazh për të dalluar se cili filtër është përdorur.
Hapi 27: Hiqni Anijet dhe Numëroni Pikat e Gjakut
1. Merrni "RemoveVessels" dhe aplikoni funksionin "Centroid" në programprops për të identifikuar centroidet e objekteve në imazh. Këto objekte duhet të korrespondojnë me mpiksjen e gjakut të pranishme në imazh.
2. Numëroni numrin e mpiksjeve të gjakut të identifikuar duke marrë gjatësinë e matricës centroid.
Hapi 28: Diagnostifikoni imazhin e retinës në bazë të numrit të mpiksjeve të gjakut të identifikuara
Përdorni nëse deklaratat për të diagnostikuar imazhin bazuar në numrin e mpiksjes së gjakut të identifikuar.
Nëse numri i centroideve të identifikuar ishte më i vogël ose i barabartë me 5, imazhi identifikohej si normal.
Nëse numri i centroideve ishte më i madh se 5, imazhi u diagnostikua me retinopati diabetike.
Rezultati shtypet në dritaren e komandës duke përdorur fprintf.
Hapi 29: Nëse ka më shumë se 5 pika …
Përsëritni udhëzimet e mësipërme për imazhet e diagnostikuara si një deklaratë tjetër. Kjo pjesë do të funksionojë nëse numri i pikave është më i madh se 5.
Përfundoni deklaratën if.
Hapi 30: Përsëriteni procesin e filtrimit për imazhe normale me vlera të shifrës së figurës si 2 dhe 3
Përsëriteni procesin për pjesën e mbetur të origjinalit nëse deklaratat kur numelohen (numri i shifrave në numrin e figurës) është i barabartë me 2 dhe 3. Kjo përfundon ciklin for për imazhet normale.
Përfundoni lakin for.
Hapi 31: Përsëriteni të gjithë procesin për imazhet e diagnostikuara
Përsëriteni të gjithë procesin duke përdorur imazhet e diagnostikuara të listuara nga matrica "numrat_te_extract_diagnosed".
Sigurohuni që të kaloni çdo figurë (i) dhe ta ndryshoni atë në figurë (i+10) kështu që shifrat e diagnostikuara do të shfaqen si imazhe 11 deri në 20.
Hapi 32: Analiza statistikore
1. 'Actual_Diagnosis_Matrix' përdoret për të krahasuar rezultatet me diagnozën zyrtare të gjetur në skedarin txt. 10 zero e para tregojnë se 10 imazhet e para duhet të jenë normale. 10 të fundit tregojnë se 10 imazhet e fundit duhet të klasifikohen si retinopati diabetike.
2. Shenja e barabartë e dyfishtë e përdorur për të krijuar 'numër_i saktë' krijon një grup logjik duke krahasuar vlerën e elementeve përkatëse të 'Actual_Diagnosis_Matrix' me 'Diagnosis_Matrix' të krijuar nga laku for.
Për secilin element që përputhet me diagnozën do të shtohet 1, që do të thotë se kodi e ka diagnostikuar saktë atë imazh. Nëse është e pasaktë do të shtojë një 0 në matricë.
Pastaj, marrja e shumës së asaj i mbledh të gjitha ato. Me fjalë të tjera, ajo gjen shumën e imazheve të diagnostikuara saktë.
3. 'Përqindja_përfundim_i saktë' është përqindja e llogaritur se sa i saktë është diagnostikuar me kodin retinopatia diabetike. Numri i imazheve të diagnostikuara saktë ndahet me 20 (numri i përgjithshëm i fotografive) dhe shumëzohet me 100 për të gjetur përqindjen e diagnozave të suksesshme.
Hapi 33: Gjetja e Intervalit të Besimit
1. Sigurohuni që keni shkarkuar ModWald.m për ta thirrur atë si funksion. Pa funksionin, ju do të duhet të llogaritni intervalin e besimit duke përdorur metodën e modifikuar të Wald vetë.
2. Funksioni ModWald ka 2 hyrje ku e para është numri i imazheve të identifikuara saktë, dhe e dyta është sasia totale e imazheve.
3. Funksioni ModWald do të nxjerrë kufijtë e poshtëm dhe të sipërm të intervalit të besimit të proporcioneve për saktësinë e të dhënave të marra. Me fjalë të tjera, do të jepni një interval përqindjesh ku përqindja e vërtetë e saktësisë së kodit do të qëndrojë.
4. Përdorni fprintf më poshtë për të nxjerrë statistikat dhe intervalin e besimit në dritaren e komandës.
> fprintf ('%. 0f përqind e imazheve të retinës u diagnostikuan saktë sipas diagnozës zyrtare. / n / n', Final_percentage_correct)
> fprintf ('Përqindja e vërtetë në të cilën kodi ynë do të diagnostikojë saktë retinopatinë diabetike / n do të bjerë në rangun e [%.3f, %.3f], bazuar në 20 imazhe të kampionuara / n', më të ulët_ të lidhur, të sipërm të lidhur]
Recommended:
Kontrolli i udhëhequr përmes aplikacionit Blynk duke përdorur Nodemcu përmes internetit: 5 hapa
Kontrolli i udhëhequr përmes aplikacionit Blynk duke përdorur Nodemcu në internet: Përshëndetje të gjithëve Sot do t'ju tregojmë se si mund të kontrolloni një LED duke përdorur një smartphone përmes internetit
EKG e automatizuar- BME 305 Projekti përfundimtar Kredi shtesë: 7 hapa
EKG-BME 305 Finali i Projektit Kredi shtesë: Një elektrokardiogram (EKG ose EKG) përdoret për të matur sinjalet elektrike të prodhuara nga një rrahje zemre dhe luan një rol të madh në diagnostikimin dhe prognozën e sëmundjeve kardiovaskulare. Disa nga informacionet e marra nga një EKG përfshijnë ritmin
Modeli i qarkut të EKG -së të automatizuar: 4 hapa
Modeli i Qarkut të EKG -së të Automatizuar: Qëllimi i këtij projekti është të krijojë një model qarku me përbërës të shumtë që mund të amplifikojnë dhe filtrojnë në mënyrë adekuate një sinjal të EKG -së në hyrje. Tre përbërës do të modelohen individualisht: një përforcues instrumentesh, një filtër aktiv i nivelit dhe një
Kontrolloni pajisjet përmes internetit përmes shfletuesit. (IoT): 6 hapa
Kontrolloni pajisjet përmes internetit përmes shfletuesit. (IoT): Në këtë Instructable unë do t'ju tregoj se si mund t'i kontrolloni pajisjet si LED, Reletë, motorët etj përmes internetit përmes shfletuesit të uebit. Dhe mund t'i qaseni kontrolleve në mënyrë të sigurt mbi çdo pajisje. Platforma në internet që kam përdorur këtu është vizita e RemoteMe.org
Roboti i Trajnueshëm i Gjestit i kontrolluar përmes Bluetooth përmes Arduino: 4 hapa
Roboti i Trajnueshëm i Gjestit i Kontrolluar Me anë të Bluetooth në Arduino: Ka dy mënyra në Krah. Së pari është Modaliteti Manual që mund të lëvizni krahun me bluetooth në telefonin tuaj celular duke lëvizur rrëshqitësit në aplikacion. Në të njëjtën kohë, ju mund të ruani pozicionet tuaja dhe mund të luani … E dyta është Gesture Mode që përdor ph -in tuaj