Tartalomjegyzék:
- 1. lépés: Előfeltételek
- 2. lépés: Előfeltételek (nem)
- 3. lépés: Előfeltételek (nem)
- 4. lépés: Előfeltételek (nem)
- 5. lépés: Tisztítsa meg a Matlab -ot, hogy felkészüljön a futó kódra
- 6. lépés: Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel
- 7. lépés: Válasszon ki 10 normál szemképet és 10 képet diabéteszes retinopátia tüneteivel (nem)
- 8. lépés: Hozzon létre 2 változót (normál és diagnosztizált), és állítsa mindegyiket 0 -ra
- 9. lépés: Hozzon létre hurkot a normál képek automatikus feltöltéséhez
- 10. lépés: Hozzon létre hurkot a normál képek automatikus feltöltéséhez (nem)
- 11. lépés: Vágja le a kép határait
- 12. lépés: szürkeárnyalatos kép létrehozása
- 13. lépés: Hozzon létre kontrasztos képet
- 14. lépés: Javítsa a kontrasztképet
- 15. lépés: Hozzon létre egy átlagos szűrőt
- 16. lépés: Kombinálja az átlagoló szűrőt a kontrasztos képpel
- 17. lépés: Készítsen új átlagos maszkot a Pixelek levonásával
- 18. lépés: Hozzon létre egy binárisan szűrt képet
- 19. lépés: Távolítsa el a szűrt képeken található kisebb foltokat
- 20. lépés: Hozzon létre egy lemezstrukturáló elemet
- 21. lépés: Végezze el a morfológiai zárási műveleteket
- 22. lépés: Keresse meg a legalább 8 -as kapcsolattal rendelkező objektumokat
- 23. lépés: Keresse meg a csatlakoztatott képpontok maximális számát
- 24. lépés: Állítsa a Max Pixel értékeket 0 -ra, és keressen Pixeleket, ahol> = 26 Pixel Connectivity
- 25. lépés: Távolítsa el a véredényeket a képen
- 26. lépés: Ábra megjelenítése
- 27. lépés: Távolítsa el az edényeket és számolja meg a vérfoltokat
- 28. lépés: A retina kép diagnosztizálása az azonosított vérrögök száma alapján
- 29. lépés: Ha több mint 5 folt van…
- 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
- 31. lépés: Ismételje meg a teljes folyamatot a diagnosztizált képeknél
- 32. lépés: Statisztikai elemzés
- 33. lépés: A bizalmi intervallum keresése
Videó: A diabéteszes retinopátia automatizált diagnózisa a MATLAB segítségével: 33 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
(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
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)
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)
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)
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
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
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)
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
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
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)
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
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
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
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
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 „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
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
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
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 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 (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
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
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
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
= 26 Pixel Connectivity "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp
= 26 Pixel Connectivity "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp
= 26 Pixel Connectivity "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
= 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…
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 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 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
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
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:
Irányítsa a háztartási gépeket az Alexa segítségével az ESP8266 vagy az ESP32 segítségével: 8 lépés
Irányítsa a háztartási gépeket Alexa segítségével az ESP8266 vagy ESP32 segítségével: Hé, mi újság, srácok! Akarsh itt a CETech -től. Ez a projektem segíteni fog az életed megkönnyítésében, és úgy fogsz érezni magad, mint egy király, miután irányítottad a házban lévő eszközöket, csak parancsot adva Alexának. A legfontosabb dolog e
A MATLAB App Designer használata az Arduino segítségével: 5 lépés
A MATLAB App Designer használata az Arduino segítségével: A MATLAB App Designer egy hatékony eszköz, amely lehetővé teszi grafikus felhasználói felületek (GUI) tervezését a MATLAB összes funkciójával. Ebben az oktatóanyagban egy GUI -t készítünk a LED fényerejének szabályozására könnyen követhető lépések. N
Felnőtt hallásvizsgálat készítése a MATLAB segítségével: 6 lépés
Hogyan készítsünk felnőtt hallásvizsgálatot a MATLAB segítségével: NYILATKOZAT: Tesztünk NEM orvosi diagnosztika, ezért nem szabad használni. A hallás pontos méréséhez forduljon orvoshoz. A már meglévő anyagok felhasználásával csoportunk hallásvizsgálatot végzett. Tesztünk csak felnőttek és tizenévesek számára készült
Agydaganat MRI kimutatása a Matlab segítségével: 6 lépés
Agydaganat MRI detektálása Matlab segítségével: Szerző: Madhumita Kannan, Henry Nguyen, Ashley Urrutia Avila, Mei JinEz a MATLAB -kód egy olyan program, amely a páciens agyi MRI -vizsgálatában talált daganat pontos méretét, alakját és helyét érzékeli. Ezt a programot eredetileg daganatellenes kezelésre tervezték
Az Arduino vezérlése vezeték nélkül a MATLAB segítségével: 11 lépés
Irányítsd vezeték nélkül az Arduino -t a MATLAB segítségével: Láttam néhány barkácsolót arról, hogyan lehet kommunikációt létrehozni a MATLAB alkalmazás és az Arduino között, amely PC -hez van kötve. Azonban nem találkoztam semmivel, ami az Arduino -t MATLAB -on keresztül vezeték nélkül vezérelné az ENC28J60 -kompatibilis Ethernet -pajzs használatával