Tartalomjegyzék:

A diabéteszes retinopátia automatizált diagnózisa a MATLAB segítségével: 33 lépés
A diabéteszes retinopátia automatizált diagnózisa a MATLAB segítségével: 33 lépés

Videó: A diabéteszes retinopátia automatizált diagnózisa a MATLAB segítségével: 33 lépés

Videó: A diabéteszes retinopátia automatizált diagnózisa a MATLAB segítségével: 33 lépés
Videó: Болезненная диабетическая нейропатия 2024, December
Anonim
A diabéteszes retinopátia automatizált diagnózisa a MATLAB -on keresztül
A diabéteszes retinopátia automatizált diagnózisa a MATLAB -on keresztül
A diabéteszes retinopátia automatizált diagnózisa a MATLAB -on keresztül
A diabéteszes retinopátia automatizált diagnózisa a MATLAB -on keresztül

(Lásd a fenti kódvázlatot)

A diabéteszes retinopátia a cukorbetegséggel összefüggő szembetegség, amelyet a magas vércukorszint okoz. A magas vércukorszint miatt a retina erei megduzzadnak, ami az erek megnagyobbodásához, sőt az erek szivárgásához vezet, ami sötét foltokhoz vezet a retina képein. Ezzel a kóddal arra törekszünk, hogy a véredények szivárgási foltjait a diabéteszes retinopátia hátterének indikátoraként alkalmazzuk, bár a való világban további diagnosztikai technikákra lenne szükség. Ennek a kódnak az a célja, hogy automatizálja a képfeldolgozást és a retina képek diagnosztizálását, hogy azonosítsa a diabéteszes retinopátia jeleit a retina képek sötét foltjain keresztül.

10 normál retina képet és 10 diagnosztizált retinaképet dolgoztak fel egy kódon keresztül, amely először olvassa és szűri a képeket, majd számszerűsíti a sötét foltokat annak megállapítására, hogy a diabéteszes retinopátia tünetei jelen vannak -e egy adott küszöb alapján. Az eredményeket ezután a parancsablakba nyomtatják a nézők értelmezése érdekében.

1. lépés: Előfeltételek

Előfeltételek
Előfeltételek

1. Győződjön meg arról, hogy a MATLAB program letöltve van a számítógépére.

2. Töltse le a linkben található txt fájlt. (Nyomja meg a „ctrl+s” gombot a MATLAB kóddal megegyező könyvtárba mentéshez.)

2. lépés: Előfeltételek (nem)

Előfeltételek (nem)
Előfeltételek (nem)
Előfeltételek (nem)
Előfeltételek (nem)

4. Nyissa meg a MATLAB -ot, és írja be az „uiimport” parancsot a parancsablakba.

5. Válassza ki a officialdiagnoses.txt fájlt, és importálja azt a MATLAB -ba cellamátrixként.

6. Győződjön meg arról, hogy a "officialdiagnoses" változó a munkaterületen.

3. lépés: Előfeltételek (nem)

Előfeltételek (nem)
Előfeltételek (nem)

7. Töltse le a ModWald.m függvényt, amelyet a fenti kódból szerezhet be, vagy letöltheti a Vászonról.

(A kódot King professzor és Choi professzor adta meg)

4. lépés: Előfeltételek (nem)

Előfeltételek (nem)
Előfeltételek (nem)

8. Töltse le a 400 nyers képet a STARE Project adatszekciójából.

5. lépés: Tisztítsa meg a Matlab -ot, hogy felkészüljön a futó kódra

Tisztítsa meg a Matlabot, hogy felkészüljön a futó kódra
Tisztítsa meg a Matlabot, hogy felkészüljön a futó kódra

Hozzáadás a kódhoz:

1. az összes bezárása (bezárja az összes korábban megnyitott képet)

2. clearvars - kivéve a hivatalos diagnózist (Törli az összes változót, kivéve a korábban importált hivatalos diagnózis txt fájlt)

3. cclc (Törli a parancsablakot)

6. lépés: Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel

Válasszon 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel
Válasszon 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel
Válasszon 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel
Válasszon 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel

1. Vegye ki a diagnózis szövegfájlját, és bontsa ki a képek nevét. Ezeket a neveket a szövegfájl első oszlopában találja, így a kibontáshoz írja be a „officialdiagnoses (:, 1)” parancsot. A képnevek mátrixát az „all_image_numbers” változóhoz rendelték

2. Konvertálja az all_image_numbers változót cellatömbből mátrix tömbré a cell2mat függvény használatával

7. lépés: Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)

Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)
Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)
Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)
Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)

3. Válassza ki a 10 normál szemképet a kód futtatásához. A kiválasztott képek ebben az esetben 278, 199, 241, 235, 35, 77, 82, 164, 239, 170 voltak.

Helyezze ezeket a számokat egy mátrixba, és rendelje hozzá egy változóhoz, amelyet a képek betöltésekor hívnak.

4. Ismételje meg a 3. lépést azoknál a retina képeknél, amelyeket diabéteszes retinopátiával diagnosztizáltak. A kiválasztott képek ebben az esetben 139, 137, 136, 135, 133, 140, 141, 116, 157, 188 voltak.

8. lépés: Hozzon létre 2 változót (normál és diagnosztizált), és állítsa mindegyiket 0 -ra

Hozzon létre 2 változót (normál és diagnosztizált), és állítsa mindegyiket 0 -ra
Hozzon létre 2 változót (normál és diagnosztizált), és állítsa mindegyiket 0 -ra

Hozza létre ezeket a változókat a for ciklus előtt, hogy inicializálja a ciklusszámokat.

9. lépés: Hozzon létre hurkot a normál képek automatikus feltöltéséhez

Hozzon létre egy hurkot a normál képek automatikus feltöltéséhez
Hozzon létre egy hurkot a normál képek automatikus feltöltéséhez

1. Hozzon létre egy for ciklusot

2. Állítson be egy számláló változót (ebben az esetben i) 1-10 értékű mátrixba. Ez a számláló változó az egyes képek külön -külön történő meghívására szolgál

3. Vegye ki az i elemet a képek mátrixában, hogy kivonja és konvertálja a kép nevét egy karakterláncból számgá a num2str függvénnyel.

Keresse meg a képnévben található számjegyek számát a numel funkció segítségével. Rendelje hozzá ezt az értéket egy számjegy_normális változóhoz. Ennek a számnak 1 -nek kell lennie egyjegyű számoknál, 2 -nek kétjegyű számoknál és 3 -nak háromjegyű számoknál. Ezeket az információkat a képek automatikus hívására használják.

10. lépés: Hozzon létre hurkot a normál képek automatikus feltöltéséhez (nem)

Hozzon létre egy hurkot a normál képek automatikus feltöltéséhez (nem)
Hozzon létre egy hurkot a normál képek automatikus feltöltéséhez (nem)

3. Hozzon létre egy if utasítást, amely tartalmazza az előző lépések mindhárom lehetőségét. Ha a kép neve 1 számjegyű, akkor a kép „im000”, ha 2 számjegyű, akkor a kép „im00”, ha pedig 3, a kép „im0”.

4. Minden if utasítás alatt rendeljen hozzá egy változót az imread „im” alá a megfelelő, if utasításhoz a megfelelő számú nullával (a fent leírtak szerint), majd az i.

11. lépés: Vágja le a kép határait

Vágja le a kép határait
Vágja le a kép határait

Vegye ki az eredeti képet, és alkalmazzon egy imcrop szűrőt a fekete szegélyek kiküszöbölésére, és rendeljen hozzá egy változót I_crop. A vágási téglalapot mátrix segítségével határozzák meg [95, 95, 500, 410].

12. lépés: szürkeárnyalatos kép létrehozása

Szürkeárnyalatos kép létrehozása
Szürkeárnyalatos kép létrehozása

Fogja meg a kivágott képet, és alkalmazza az rbg2gray szűrőt a kép szürkeárnyalatosra váltásához. Rendelje hozzá ezt a képet az I2 változóhoz.

13. lépés: Hozzon létre kontrasztos képet

Hozzon létre kontrasztos képet
Hozzon létre kontrasztos képet

Készítse el az I2 képet, és használja az imadjust funkciót az intenzitás értékek átméretezéséhez.

Vegye a [0,2, 0,7] tartományba eső értékeket, és méretezze át őket [0, 1] -re. A gamma beállítása 0,8, hogy a kép világosabb legyen. Rendelje hozzá az új képet az I_adjusted fájlhoz.

14. lépés: Javítsa a kontrasztképet

Javítsa a kontrasztképet
Javítsa a kontrasztképet

Készítse el az I_adjusted képet, és használja az adapthisteq funkciót a kontraszt javítására.

Az Adapthisteq szintaxisa megköveteli a kép nevét, I_adjusted, „numTiles”, a numTiles méretét, az „nBins” -t és a tárolók számát. A numTiles mérete [8 8], a képet 8x8 lapokra osztva, a rekeszek számát pedig 28 -ra állítja. Rendelje hozzá a képet az I_constrast -hoz.

15. lépés: Hozzon létre egy átlagos szűrőt

Hozzon létre egy átlagos szűrőt
Hozzon létre egy átlagos szűrőt

Hozzon létre egy „meanfilt” nevű változót az fspecial függvény használatával. Adja meg az „átlagos funkciót” az átlagoló szűrő létrehozásához, és illessze be a [90 90] tolóablak méretéhez.

16. lépés: Kombinálja az átlagoló szűrőt a kontrasztos képpel

Kombinálja az átlagoló szűrőt a kontrasztos képpel
Kombinálja az átlagoló szűrőt a kontrasztos képpel

Hozzon létre egy új, mask_mean nevű változót, és az imfilter függvénnyel készítse el az I_contrast képet, és alkalmazza a korábban létrehozott átlagszűrőt.

17. lépés: Készítsen új átlagos maszkot a Pixelek levonásával

Készítsen új átlagos maszkot a Pixelek levonásával
Készítsen új átlagos maszkot a Pixelek levonásával

Hozzon létre egy mask_mean2 nevű változót, és az imsubtract függvénnyel vonja le az I_contrast minden egyes pixelének értékét a mask_mean megfelelő pixelből.

18. lépés: Hozzon létre egy binárisan szűrt képet

Hozzon létre egy binárisan szűrt képet
Hozzon létre egy binárisan szűrt képet

A szürkeárnyalatos képeket fekete -fehérré változtathatja az imbinarize használatával. Beviteli maszk_mean2, „adaptív”, „ElőtérPolaritás”, „sötét”, „Érzékenység”, 0,6. Rendelje hozzá ezt az új képet a mask_binarize fájlhoz.

19. lépés: Távolítsa el a szűrt képeken található kisebb foltokat

Távolítsa el a szűrt képeken található kisebb foltokat
Távolítsa el a szűrt képeken található kisebb foltokat

Távolítsa el a 100 pixelnél kisebb kapcsolattal rendelkező objektumokat a mask_binarize bwareaopen funkciójával, és állítsa a küszöbértéket 100 -ra. Rendelje hozzá a változót bw -nek.

20. lépés: Hozzon létre egy lemezstrukturáló elemet

Hozzon létre egy lemezstrukturáló elemet
Hozzon létre egy lemezstrukturáló elemet

Hozzon létre egy lemezstrukturáló elemet (2 sugarú) a strel függvény használatával. Rendelje hozzá.

21. lépés: Végezze el a morfológiai zárási műveleteket

Végezzen morfológiai zárási műveleteket
Végezzen morfológiai zárási műveleteket

Vegyük a bw -t, és alkalmazzuk a beillesztési függvényt a szerkezeti elemre, hogy morfológiai közeli műveletet végezzünk az objektumon.

22. lépés: Keresse meg a legalább 8 -as kapcsolattal rendelkező objektumokat

Keresse meg az objektumokat legalább 8 kapcsolattal
Keresse meg az objektumokat legalább 8 kapcsolattal

Fogja a bw -t, és a bwconncomp használatával keresse meg a képen a legalább 8 -as kapcsolattal rendelkező objektumokat. Rendelje hozzá a számkimenetet a cc_1 fájlhoz.

23. lépés: Keresse meg a csatlakoztatott képpontok maximális számát

Keresse meg a csatlakoztatott képpontok maximális számát
Keresse meg a csatlakoztatott képpontok maximális számát
Keresse meg a csatlakoztatott képpontok maximális számát
Keresse meg a csatlakoztatott képpontok maximális számát

Használja a cellfun függvényt a „numel” funkció végrehajtásához a CC minden cellájában. Ez megkeresi a PixelIdxList cella elemeinek számát. Rendeljen értéket a „numPixels” értékhez.

Keresse meg a maximális értékeket a numPIxels -ben. Rendelje hozzá a legnagyobb maximumot a „legnagyobb” értékhez, és a maximális érték indexét az „idx” értékhez.

24. lépés: Állítsa a Max Pixel értékeket 0 -ra, és keressen Pixeleket, ahol> = 26 Pixel Connectivity

Távolítsa el a véredényeket a képen
Távolítsa el a véredényeket a képen

= 26 Pixel Connectivity "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp

Ábra Kijelző
Ábra Kijelző

= 26 Pixel Connectivity "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp

Távolítsa el az edényeket és számolja meg a vérfoltokat
Távolítsa el az edényeket és számolja meg a vérfoltokat

= 26 Pixel Connectivity "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Diagnosztizálja a retina képét az azonosított vérrögök száma alapján
Diagnosztizálja a retina képét az azonosított vérrögök száma alapján

= 26 Pixel Connectivity "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Állítsa a legnagyobb értékű képpontokat a „bw” képen 0 -ra, így a képpontok feketék lesznek.

Keresse meg a képen a legalább 26 képpontos kapcsolattal rendelkező objektumokat a bwconncomp használatával. Hozzárendelés a cc_1 változóhoz.

25. lépés: Távolítsa el a véredényeket a képen

Távolítsa el a képen még meglévő ereket a bwpropfilt funkció használatával [0, 0,9] tartományban.

A [0,9, 1] kizárt, mert az 1 -hez közeli értékek egy sort jelölnek. Rendelje hozzá az „RemoveVessels” elemhez.

26. lépés: Ábra megjelenítése

Minden egyes szűrt kép megjelenítése alterületen. Imshow. „border” és „tight” bemenetekkel minden képet alterület -struktúrában jelenít meg. Adjon címet minden képhez, hogy megkülönböztesse a használt szűrőt.

27. lépés: Távolítsa el az edényeket és számolja meg a vérfoltokat

1. Vegye ki az „RemoveVessels” elemet, és alkalmazza a „Centroid” funkciót a regionprops -ban, hogy azonosítsa a képen látható objektumok középpontjait. Ezeknek az objektumoknak meg kell felelniük a képen látható vérrögöknek.

2. Számolja meg a centroid mátrix hossza alapján az azonosított vérrögök számát.

28. lépés: A retina kép diagnosztizálása az azonosított vérrögök száma alapján

Használja az if utasításokat a kép diagnosztizálásához az azonosított vérrögök száma alapján.

Ha az azonosított centroidok száma 5 -nél kisebb vagy egyenlő, akkor a képet normálnak találták.

Ha a centroidok száma 5 -nél nagyobb volt, a képet diabéteszes retinopátiával diagnosztizálták.

Az eredményt a fprintf paranccsal nyomtatja ki a parancsablakba.

29. lépés: Ha több mint 5 folt van…

Ha több mint 5 folt van…
Ha több mint 5 folt van…

Ismételje meg a fenti utasításokat a diagnosztizált képekhez, más állításként. Ez a rész akkor fut, ha a foltok száma nagyobb, mint 5.

Fejezze be az if állítást.

30. lépés: Ismételje meg a szűrési folyamatot a normál képeknél, 2 és 3 képszámértékekkel

Ismételje meg a szűrési folyamatot normál képeknél, 2 és 3 képszámértékekkel
Ismételje meg a szűrési folyamatot normál képeknél, 2 és 3 képszámértékekkel
Ismételje meg a szűrési folyamatot normál képeknél, 2 és 3 képszámértékekkel
Ismételje meg a szűrési folyamatot normál képeknél, 2 és 3 képszámértékekkel

Ismételje meg a folyamatot az eredeti többi részében is, ha a számok (a képszám számjegyeinek száma) esetén 2 és 3 utasításokat ad ki. Ezzel befejeződik a normál képek for ciklusa.

Fejezze be a for ciklust.

31. lépés: Ismételje meg a teljes folyamatot a diagnosztizált képeknél

Ismételje meg a teljes folyamatot a diagnosztizált képeknél
Ismételje meg a teljes folyamatot a diagnosztizált képeknél

Ismételje meg az egész folyamatot a „számok_kivonat_diagnózisa” mátrix által felsorolt diagnosztizált képek használatával.

Győződjön meg róla, hogy minden figurát (i) végiggondol, és módosítja (i+10) ábrára, hogy a diagnosztizált számok 11-20 képként jelenjenek meg.

32. lépés: Statisztikai elemzés

Statisztikai analízis
Statisztikai analízis

1. Az 'Actual_Diagnosis_Matrix' az eredményeket a txt fájlban található hivatalos diagnózishoz hasonlítja. Az első 10 nulla azt jelzi, hogy az első 10 képnek normálisnak kell lennie. Az utolsó 10 azt jelzi, hogy az utolsó 10 képet diabéteszes retinopátiaként kell besorolni.

2. A 'number_correct' létrehozásához használt kettős egyenlőjel logikai tömböt hoz létre, összehasonlítva az 'Actual_Diagnosis_Matrix' megfelelő elemeinek értékét a for hurokból létrehozott 'Diagnosis_Matrix' értékkel.

Minden elemhez, amely megfelel a diagnózisnak, 1 -et adnak hozzá, ami azt jelenti, hogy a kód helyesen diagnosztizálta a képet. Ha helytelen, 0 -t ad hozzá a mátrixhoz.

Ezután az összeg összegét összeadva az összeset összeadjuk. Más szóval, megtalálja a helyesen diagnosztizált képek összegét.

3. A „végső_százalék_korrekt” a diabéteszes retinopátiát diagnosztizált százalékos aránya. A helyesen diagnosztizált képek számát el kell osztani 20 -zal (a képek teljes száma) és megszorozni 100 -zal, hogy megtaláljuk a sikeres diagnózisok százalékát.

33. lépés: A bizalmi intervallum keresése

A bizalmi intervallum keresése
A bizalmi intervallum keresése

1. Győződjön meg róla, hogy letöltötte a ModWald.m funkciót, hogy meghívja. A függvény nélkül saját maga kell kiszámítania a konfidencia intervallumot a módosított Wald módszerrel.

2. A ModWald funkció 2 bemenettel rendelkezik, ahol az első a helyesen azonosított képek száma, a második pedig a képek teljes mennyisége.

3. A ModWald funkció a mintavételi adatok pontossága érdekében az arányok megbízhatósági intervallumának alsó és felső határát adja ki. Más szóval, megad egy százalékos intervallumot, ahol a kód pontosságának valódi százaléka fog feküdni.

4. Az alábbi fprintf használatával adja ki a statisztikai adatokat és a megbízhatósági intervallumot a parancsablakba.

> fprintf ('A retina képeinek%. 0f százaléka a hivatalos diagnózis szerint helyesen lett diagnosztizálva. / n / n', Final_percentage_crerect)

>

Ajánlott: