MATLAB аркылуу диабетикалык ретинопатиянын автоматтык диагнозу: 33 кадам
MATLAB аркылуу диабетикалык ретинопатиянын автоматтык диагнозу: 33 кадам

Мазмуну:

Anonim
MATLAB аркылуу диабетикалык ретинопатиянын автоматташтырылган диагностикасы
MATLAB аркылуу диабетикалык ретинопатиянын автоматташтырылган диагностикасы
MATLAB аркылуу диабетикалык ретинопатиянын автоматташтырылган диагностикасы
MATLAB аркылуу диабетикалык ретинопатиянын автоматташтырылган диагностикасы

(Жогорудагы коддун схемасын караңыз)

Диабетикалык ретинопатия-бул кандагы канттын деңгээлинин жогорулашынан келип чыккан диабет менен байланышкан көз оорусу. Кандагы канттын жогорку деңгээли торчодогу кан тамырлардын шишишине алып келет, бул кан тамырлардын чоңоюшуна, ал тургай идиштин агышына алып келет, бул болсо торчо сүрөттөлүштөрүндө кара тактарга алып келет. Бул код менен биз кан тамырларынын агып кетүү тактарын фондук диабетикалык ретинопатиянын көрсөткүчү катары колдонууну максат кылабыз, бирок реалдуу дүйнөдө мындан ары диагноз коюу ыкмалары талап кылынат. Бул коддун максаты - ретиналдык сүрөттөрдөгү кара тактар аркылуу көрсөтүлгөн диабетикалык ретинопатиянын белгилерин аныктоо үчүн сетчатканын сүрөттөрүн иштетүүнү жана диагностикалоону автоматташтыруу.

10 кадимки торчо сүрөтү жана 10 диагноз коюлган торчо сүрөттөр код аркылуу иштетилип, алгач сүрөттөрдү окуйт жана чыпкалайт, андан кийин кара чекиттерди сандык диапетикалык ретинопатиянын симптомдору бар же жок экенин аныктайт. Натыйжалар көрүүчү чечмелөө үчүн буйрук терезесине басылат.

1 -кадам: Пререквизиттер

Алдын ала шарттар
Алдын ала шарттар

1. Компьютериңизге MATLAB программасы жүктөлгөнүн текшериңиз.

2. Шилтемедеги txt файлын жүктөп алыңыз. (MATLAB коду менен бир каталогго сактоо үчүн "ctrl+s" баскычын басыңыз)

2 -кадам: Пререквизиттер (улантылбайт)

Алдын ала шарттар (улантылбайт)
Алдын ала шарттар (улантылбайт)
Алдын ала шарттар (улантылбайт)
Алдын ала шарттар (улантылбайт)

4. MATLABты ачыңыз жана буйрук терезесине "uiimport" териңиз.

5. officialdiagnoses.txt файлын тандап, аны MATLABка клетка матрицасы катары импорттоңуз.

6. "Расмий диагноздорду" жумуш мейкиндигинде өзгөрмөлүү катары көрүңүз.

3 -кадам: Пререквизиттер (улантылбайт)

Алдын ала шарттар (улантылбайт)
Алдын ала шарттар (улантылбайт)

7. ModWald.m функциясын жүктөңүз, аны жогорудагы коддон алууга же Canvasтан жүктөп алууга болот.

(Профессор Кинг жана профессор Чой тарабынан берилген код)

4 -кадам: Пререквизиттер (улантылбайт)

Алдын ала шарттар (улантылбайт)
Алдын ала шарттар (улантылбайт)

8. STARE Долбоорунун маалымат бөлүмүнөн 400 чийки сүрөттү жүктөп алыңыз.

5 -кадам: Кодду иштетүүгө даярдануу үчүн Matlabти тазалаңыз

Кодду иштетүүгө даярдануу үчүн Matlabти тазалаңыз
Кодду иштетүүгө даярдануу үчүн Matlabти тазалаңыз

Кодго кошуу:

1. баарын жабуу (мурда ачылган сүрөттөрдүн баарын жабат)

2. clearvars - расмий диагноздорду кошпогондо (расмий импорттолгон txt файлынан башка бардык өзгөрмөлөрдү тазалайт)

3. cclc (Командалык терезени тазалайт)

6 -кадам: Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөттөрүн жана 10 сүрөттү тандаңыз

Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөттөрүн жана 10 сүрөттү тандаңыз
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөттөрүн жана 10 сүрөттү тандаңыз
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөттөрүн жана 10 сүрөттү тандаңыз
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөттөрүн жана 10 сүрөттү тандаңыз

1. Диагностиканын текст файлын алып, сүрөттүн аталыштарын чыгарып алыңыз. Бул аттар текст файлынын биринчи тилкесинде камтылган, андыктан аларды чыгаруу үчүн 'officialdiagnoses (:, 1)' териңиз. Сүрөт аттарынын матрицасы "all_image_numbers" өзгөрмөсүнө ыйгарылган

2. cell2mat функциясын колдонуп, all_image_numbers өзгөрмөсүн уяча массивинен матрицалык массивге айландырыңыз

7 -кадам: Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көздүн сүрөттөрүн жана 10 сүрөттү тандаңыз (мындан ары)

Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөтүн жана 10 сүрөттү тандаңыз (улантылбайт)
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөтүн жана 10 сүрөттү тандаңыз (улантылбайт)
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөтүн жана 10 сүрөттү тандаңыз (улантылбайт)
Диабетикалык ретинопатиянын симптомдору бар 10 кадимки көз сүрөтүн жана 10 сүрөттү тандаңыз (улантылбайт)

3. Кодду иштетүү үчүн 10 кадимки көз сүрөтүн тандаңыз. Бул учурда тандалган сүрөттөр 278, 199, 241, 235, 35, 77, 82, 164, 239, 170 болгон.

Бул сандарды матрицага жайгаштырыңыз жана аларды сүрөттөрдү жүктөөдө чакырыла турган өзгөрмөгө дайындаңыз.

4. Диабетикалык ретинопатия диагнозу коюлган торчо сүрөттөр үчүн 3 -кадамды кайталаңыз. Бул учурда тандалган сүрөттөр 139, 137, 136, 135, 133, 140, 141, 116, 157, 188 болгон.

8 -кадам: 2 өзгөрмөнү түзүңүз (кадимки жана диагнозу коюлган) жана аларды ар бирине 0го барабар кылыңыз

2 өзгөрмөлөрдү түзүңүз (кадимки жана диагностикалык) жана алардын бардыгын 0го барабар кылыңыз
2 өзгөрмөлөрдү түзүңүз (кадимки жана диагностикалык) жана алардын бардыгын 0го барабар кылыңыз

Бул өзгөрмөлөрдү циклдин номерлерин инициализациялоо үчүн for циклинин алдында түзүңүз.

9 -кадам: Жөнөкөй сүрөттөрдү автоматтык түрдө жүктөө үчүн Loop түзүү

Жөнөкөй сүрөттөрдү автоматтык түрдө жүктөө үчүн Loop түзүү
Жөнөкөй сүрөттөрдү автоматтык түрдө жүктөө үчүн Loop түзүү

1. for циклин түзүңүз

2. Эсептөөчү өзгөрмөнү (бул учурда) 1-10 маанилердин матрицасына коюңуз. Бул эсептөөчү өзгөрмө ар бир сүрөттү жекече чакыруу үчүн колдонулат

3. num2str функциясын колдонуп, сүрөттүн атын саптан санга айландыруу үчүн матрицанын i элементин алыңыз.

Numel функциясын колдонуп, сүрөттүн аталышындагы цифраларды табыңыз. Бул маанини digit_normal өзгөрмөсүнө дайындаңыз. Бул сан бир орундуу сандар үчүн 1, эки орундуу сандар үчүн 2, үч орундуу сандар үчүн 3 болушу керек. Бул маалымат сүрөттөрдү автоматтык түрдө чалуу үчүн колдонулат.

10 -кадам: Жөнөкөй сүрөттөрдү автоматтык түрдө жүктөө үчүн цикл түзүңүз (мындан ары)

Кадимки сүрөттөрдү автоматтык түрдө жүктөө үчүн Loop түзүңүз (мындан ары)
Кадимки сүрөттөрдү автоматтык түрдө жүктөө үчүн Loop түзүңүз (мындан ары)

3. Мурунку кадамдардын бардык үч мүмкүнчүлүгүн камтыган if операторун түзүңүз. Эгерде сүрөттүн аталышында 1 цифра болсо, анда сүрөт "im000", 2 цифрасы болсо, сүрөт "im00" деп аталат, ал эми 3 болсо, сүрөт "im0" деп аталат.

4. Ар бир if билдирүүсүнүн астына, тиешелүү нөлдүн номерин (жогоруда сүрөттөлгөндөй) камтыган "im" деген имаратты окууга өзгөрмөнү дайындаңыз, андан кийин i.

11 -кадам: Сүрөттүн чек араларын кесүү

Сүрөттүн чек араларын кесүү
Сүрөттүн чек араларын кесүү

Түпнуска сүрөттү алыңыз жана кара чектерди жок кылуу жана I_crop өзгөрмөсүнө дайындоо үчүн imcrop чыпкасын колдонуңуз. Кесилген тик бурчтук матрицанын жардамы менен көрсөтүлөт [95, 95, 500, 410].

12-кадам: Боз масштабдуу сүрөт түзүү

Боз масштабдуу сүрөт түзүү
Боз масштабдуу сүрөт түзүү

Кесилген сүрөттү алыңыз жана rbg2gray чыпкасын колдонуп, сүрөттү боз масштабга өзгөртүңүз. Бул сүрөттү I2 өзгөрмөсүнө дайындаңыз.

13 -кадам: Контрасттуу сүрөт түзүү

Контрасттуу сүрөт түзүү
Контрасттуу сүрөт түзүү

I2 сүрөтүн алыңыз жана интенсивдүүлүк баалуулуктарын кайра өлчөө үчүн imadjust колдонуңуз.

[0.2, 0.7] диапазонуна кирген маанилерди алыңыз жана аларды [0, 1] чейин кайра өлчөмдөңүз. Гамма сүрөттү жарык кылуу үчүн 0,8ге коюлган. Жаңы сүрөттү I_adjustedге дайындаңыз.

14 -кадам: Контраст сүрөтүн күчөтүү

Контраст сүрөтүн күчөтүү
Контраст сүрөтүн күчөтүү

I_adjusted сүрөтүн алыңыз жана контрастты күчөтүү үчүн adapthisteq функциясын колдонуңуз.

Adapthisteq синтаксиси сүрөт аталышын, I_adjusted, "numTiles", numTiles өлчөмүн, "nBins" жана урналардын санын талап кылат. NumTiles өлчөмү [8 8] болуп, сүрөттү 8х8 плиткаларга бөлүп, урналар саны 28ге коюлган. Сүрөттү I_constrastка дайындаңыз.

15 -кадам: Орточо чыпканы түзүңүз

Орточо чыпканы түзүү
Орточо чыпканы түзүү

Fspecial функциясын колдонуп, "Meanfilt" аттуу өзгөрмөнү түзүңүз. Орточо чыпканы түзүү үчүн "орточо функцияны" киргизиңиз жана [90 90] жылуучу терезенин өлчөмүнө киргизиңиз.

16 -кадам: Орточо чыпканы контрасттуу сүрөт менен бириктирүү

Орточо чыпканы контрасттуу сүрөт менен айкалыштырыңыз
Орточо чыпканы контрасттуу сүрөт менен айкалыштырыңыз

Mas_mean аттуу жаңы өзгөрмөнү түзүңүз жана I_contrast сүрөтүн тартуу үчүн imfilter функциясын колдонуңуз жана мурда түзүлгөн орточо чыпканы колдонуңуз.

17 -кадам: Пикселдерди алып салуу менен жаңы орточо маска жасаңыз

Пикселдерди алып салуу менен жаңы орто масканы жасаңыз
Пикселдерди алып салуу менен жаңы орто масканы жасаңыз

Mask_mean2 деген өзгөрмөнү түзүңүз жана imsubtract функциясын колдонуп, I_contrastтагы ар бир пикселдин маанисин mask_meanдагы тиешелүү пикселден алып салыңыз.

18 -кадам: Экилик фильтрленген сүрөттү түзүү

Экилик фильтрленген сүрөттү түзүү
Экилик фильтрленген сүрөттү түзүү

Imbinarize колдонуп боз масштабдуу сүрөттөрдү ак -кара кылып буруңуз. Киргизүү mask_mean2, "адаптивдүү", "ForegroundPolarity", "караңгы", "сезимталдык", 0.6. Бул жаңы сүрөттү mask_binarize үчүн дайындаңыз.

19 -кадам: Чыпкаланган сүрөттөрдө табылган Кичинекей Блобдорду алып салыңыз

Чыпкаланган сүрөттөрдө табылган Кичинекей Блобдорду алып салыңыз
Чыпкаланган сүрөттөрдө табылган Кичинекей Блобдорду алып салыңыз

Mask_binarize'деги bwareaopen функциясын колдонуп, 100 пикселден төмөн туташуусу бар объекттерди алып салыңыз жана босоголук маанини 100гө коюңуз. Өзгөрмөнү bw деп белгилеңиз.

20 -кадам: Дисктин структуралоо элементин түзүңүз

Дисктин структуралоо элементин түзүңүз
Дисктин структуралоо элементин түзүңүз

Strel функциясын колдонуу менен дисктин структуралоо элементин (2 радиусу менен) түзүңүз. Тапшырыңыз.

21 -кадам: Морфологиялык жабуу операцияларын аткарыңыз

Морфологиялык жабуу операцияларын аткарыңыз
Морфологиялык жабуу операцияларын аткарыңыз

Bw алып, объектке морфологиялык жабуу операциясын аткаруу үчүн imclose функциясын структуралык элементке колдонуңуз.

22 -кадам: Эң аз дегенде 8 менен туташуусу бар объекттерди табыңыз

Эң аз дегенде 8 байланышы бар объекттерди табыңыз
Эң аз дегенде 8 байланышы бар объекттерди табыңыз

Bw алыңыз жана bwconncomp колдонуп, сүрөттө кеминде 8 байланышы бар объекттерди табыңыз. Сандын чыгышын cc_1ге дайындаңыз.

23 -кадам: Туташкан пикселдердин максималдуу санын табыңыз

Байланышкан пикселдердин максималдуу санын табыңыз
Байланышкан пикселдердин максималдуу санын табыңыз
Байланышкан пикселдердин максималдуу санын табыңыз
Байланышкан пикселдердин максималдуу санын табыңыз

CCдеги ар бир уячада "numel" функциясын аткаруу үчүн cellfun функциясын колдонуңуз. Бул PixelIdxList уячасындагы элементтердин санын табат. "NumPixels" маанисин дайындоо.

NumPIxels максималдуу баалуулуктарды табуу. Эң чоң максимумду "эң чоңго" жана максималдуу маанинин индексин "idxке" дайындаңыз.

24 -кадам: Макс Пикселдин Маанилерин 0 кылып Пикселдерди Табуу>> 26 Пикселдик Байланыш

Сүрөттөгү кан идиштерин алып салуу
Сүрөттөгү кан идиштерин алып салуу

= 26 Пикселдик Байланыш "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp

Figure Display
Figure Display

= 26 Пикселдик Байланыш "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp

Кемелерди алып салгыла жана Blobs of Blood
Кемелерди алып салгыла жана Blobs of Blood

= 26 Пикселдик Байланыш "src =" {{file.large_url | кошуу: 'auto = webp & frame = 1 & height = 300' %} ">

Тор көзүнүн сүрөтүн аныкталган кан уюган санына карап диагноз коюңуз
Тор көзүнүн сүрөтүн аныкталган кан уюган санына карап диагноз коюңуз

= 26 Пикселдик Байланыш "src =" {{file.large_url | кошуу: 'auto = webp & frame = 1 & height = 300' %} ">

"Bw" сүрөттөгү эң чоң мааниге ээ пикселдерди 0 кылып пикселдерди кара кылып коюңуз.

Bwconncomp аркылуу сүрөттө 26 пикселден кем эмес туташуусу бар объекттерди табыңыз. Cc_1 өзгөрмөсүнө дайындоо.

25 -кадам: Сүрөттөгү кан идиштерин алып салуу

[0, 0.9] диапазону менен bwpropfilt функциясын колдонуп, сүрөттө дагы деле бар болгон кан тамырларды алып салыңыз.

[0.9, 1] алынып салынат, анткени 1ге жакын маанилер сызыкты көрсөтөт. "RemoveVessels" тапшырыңыз.

26 -кадам: Фигураны көрсөтүү

Ар бир чыпкаланган сүрөттү субплотто көрсөтүү. Imshow. "чек" жана "катуу" киргизүүлөрү менен, ар бир сүрөттү субплоттун структурасында көрсөтөт. Кайсы чыпка колдонулганын айырмалоо үчүн ар бир сүрөттүн аталышын кошуңуз.

27 -кадам: идиштерди алып салуу жана Blobs Blood

1. "RemoveVessels" алыңыз жана "Centroid" өзгөчөлүгүн regionprops колдонуп, сүрөттөгү объекттердин центроиддерин аныктаңыз. Бул объектилер сүрөттөлүштөгү уюган канга туура келиши керек.

2. Центроид матрицанын узундугун алуу менен аныкталган тромбдордун санын эсептөө.

28 -кадам: Аныкталган тромбдордун санына жараша торчонун сүрөтүн диагностикалаңыз

Аныкталган тромбдордун санына жараша сүрөттү диагностикалоо үчүн if сөздөрүн колдонуңуз.

Эгерде аныкталган центроиддердин саны 5тен аз же барабар болсо, анда сүрөт кадимкидей аныкталган.

Эгерде центроиддердин саны 5тен көп болсо, сүрөттө диабеттик ретинопатия диагнозу коюлган.

Натыйжа fprintf аркылуу буйрук терезесине басылат.

29 -кадам: Эгерде 5тен ашык блоктор бар болсо…

Эгерде 5тен ашык блоктор бар болсо…
Эгерде 5тен ашык блоктор бар болсо…

Башка билдирүү катары диагноз коюлган сүрөттөр үчүн жогорудагы көрсөтмөлөрдү кайталаңыз. Бул бөлүк блоктордун саны 5тен көп болсо иштейт.

If билдирүүсүн бүтүрүңүз.

30 -кадам: Кадимки сүрөттөр үчүн чыпкалоо процессин 2 жана 3 катары цифралык цифралар менен кайталаңыз

Сүрөттүн цифралык мааниси 2 жана 3 болгон кадимки сүрөттөр үчүн чыпкалоо процессин кайталаңыз
Сүрөттүн цифралык мааниси 2 жана 3 болгон кадимки сүрөттөр үчүн чыпкалоо процессин кайталаңыз
Сүрөттүн цифралык мааниси 2 жана 3 болгон кадимки сүрөттөр үчүн чыпкалоо процессин кайталаңыз
Сүрөттүн цифралык мааниси 2 жана 3 болгон кадимки сүрөттөр үчүн чыпкалоо процессин кайталаңыз

Эгерде цифралар (сүрөттүн номериндеги цифралар саны) 2 жана 3кө барабар болсо, түпнусканын калган бөлүгү үчүн процессти кайталаңыз. Бул кадимки сүрөттөр үчүн for циклин аяктайт.

For циклин бүтүрүңүз.

31 -кадам: Диагноз коюлган сүрөттөр үчүн бүт процессти кайталаңыз

Диагноз коюлган сүрөттөр үчүн бүт процессти кайталаңыз
Диагноз коюлган сүрөттөр үчүн бүт процессти кайталаңыз

"Сандар_то_экстракт_диагност" матрицасында көрсөтүлгөн диагноз коюлган сүрөттөрдү колдонуу менен бүт процессти кайталаңыз.

Ар бир фигурадан (i) өтүп, аны цифрага (i+10) өзгөртүүнү унутпаңыз, андыктан диагноз коюлган цифралар 11ден 20га чейинки сүрөттөр катары калкып чыгат.

32 -кадам: Статистикалык анализ

Статистикалык анализ
Статистикалык анализ

1. 'Actual_Diagnosis_Matrix' txt файлында табылган расмий диагноз менен жыйынтыктарды салыштыруу үчүн колдонулат. Биринчи 10 нөл нөлдүн биринчи 10 сүрөттөрү кадимкидей болушу керектигин көрсөтүп турат. Акыркы 10 сүрөт акыркы 10 сүрөт диабетикалык ретинопатия катары классификацияланууга тийиш экенин көрсөтүп турат.

2. 'Number_c Correct' түзүү үчүн колдонулган кош тең белги, for циклинен түзүлгөн 'Actual_Diagnosis_Matrix' тиешелүү элементтеринин маанисин 'Diagnosis_Matrix' менен салыштыруу аркылуу логикалык массивди түзөт.

Диагнозго дал келген ар бир элемент үчүн 1 кошулат, бул код туура сүрөттү аныктады. Туура эмес болсо, ал матрицага 0 кошот.

Андан кийин, мунун суммасын алуу баардыгын кошот. Башкача айтканда, туура диагноз коюлган сүрөттөрдүн суммасын табат.

3. "Финал_процент_туура" - бул кант диабетикалык ретинопатия диагнозунун канчалык так эсептелген пайызы. Туура диагноз коюлган сүрөттөрдүн саны 20га бөлүнөт (сүрөттөрдүн жалпы саны) жана 100гө көбөйтүлүп, ийгиликтүү диагноздордун пайызы табылат.

33 -кадам: Ишеним аралыгын табуу

Ишеним аралыгын табуу
Ишеним аралыгын табуу

1. Функция катары чалуу үчүн ModWald.m жүктөлгөнүн текшериңиз. Функция болбосо, өзгөртүлгөн Wald ыкмасын колдонуу менен ишеним интервалын өзүңүз эсептешиңиз керек болот.

2. ModWald функциясында 2 киргизүү бар, мында биринчиси туура аныкталган сүрөттөрдүн саны, экинчиси - сүрөттөрдүн жалпы суммасы.

3. ModWald функциясы тандалган маалыматтардын тууралыгы үчүн пропорциялардын ишеним аралыгынын төмөнкү жана жогорку чектерин чыгарат. Башкача айтканда, бул коддун тактыгынын чыныгы пайызы турган пайыздык интервалды берет.

4. Статистиканы жана ишеним интервалын буйрук терезесине чыгаруу үчүн төмөндөгү fprintf колдонуңуз.

> fprintf ('%. Торчо сүрөттөрүнүн 0f пайызы официалдуу диагнозго ылайык туура диагноз коюлган. / n / n', Акыркы_жүз_туура)

> fprintf ('Биздин код диабеттик ретинопатияны туура диагноздоонун чыныгы пайызы / n 20 тандалган сүрөттөргө негизделген [%.3f, %.3f] диапазонуна түшөт / n', төмөнкү_байланыш, жогорку_байланыш)

Сунушталууда: