Мазмұны:

MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы: 33 қадам
MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы: 33 қадам

Бейне: MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы: 33 қадам

Бейне: MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы: 33 қадам
Бейне: If You Eat an Apple Every Day, This Can Happen to Your Body | Apple Health Benefits 2024, Желтоқсан
Anonim
MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы
MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы
MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы
MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы

(Жоғарыдағы кодты қараңыз)

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

Торлы қабықтың 10 қалыпты суреті мен диагноз қойылған 10 торлы кескін кодты өңдеді, ол алдымен суреттерді оқиды және сүзеді, содан кейін қара нүктелердің мөлшерін анықтайды, бұл шегіне қарай диабеттік ретинопатия симптомдарының бар -жоғын анықтайды. Содан кейін нәтижелер көрерменді түсіндіру үшін командалық терезеге басып шығарылады.

1 -қадам: алғышарттар

Пререквизиттер
Пререквизиттер

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

2. Сілтемеден табылған txt файлын жүктеңіз. (MATLAB кодымен бір каталогқа сақтау үшін 'ctrl+s' пернелерін басыңыз)

2 -қадам: алғышарттар (жалғасы жоқ)

Алдын ала талаптар (жалғасы)
Алдын ала талаптар (жалғасы)
Алдын ала талаптар (жалғасы)
Алдын ала талаптар (жалғасы)

4. MATLAB ашыңыз және пәрмен терезесіне 'uiimport' теріңіз.

5. officialdiagnoses.txt файлын таңдап, оны MATLAB ұяшық матрицасы ретінде импорттаңыз.

6. Жұмыс кеңістігінде айнымалы ретінде 'officialdiagnos' көрінетініне көз жеткізіңіз.

3 -қадам: алғышарттар (жалғасы жоқ)

Алдын ала талаптар (жалғасы)
Алдын ала талаптар (жалғасы)

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

(Профессор Кинг пен профессор Чой ұсынған код)

4 -қадам: алғышарттар (жалғасы жоқ)

Алдын ала талаптар (жалғасы)
Алдын ала талаптар (жалғасы)

8. The STARE жобасының деректер бөлімінен 400 шикі суретті жүктеңіз.

5 -қадам: кодты іске қосуға дайындалу үшін Matlab жүйесін тазалаңыз

Кодты іске қосуға дайындалу үшін Matlab жүйесін тазалаңыз
Кодты іске қосуға дайындалу үшін Matlab жүйесін тазалаңыз

Кодқа қосу:

1. барлығын жабу (бұрын ашылған барлық суреттерді жабады)

2. clearvars - ресми диагностикадан басқа

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

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

Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз
Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз
Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз
Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз

1. Диагностикалық мәтіндік файлды алыңыз және сурет атауларын шығарыңыз. Бұл атаулар мәтіндік файлдың бірінші бағанында бар, сондықтан оларды алу үшін 'officialdiagnoses (:, 1)' теріңіз. Кескін атауларының матрицасы «all_image_numbers» айнымалысына тағайындалды.

2. all_image_numbers айнымалысын cell2mat функциясын қолданып ұяшық жиымынан матрицалық массивке түрлендіріңіз.

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 -қадам: Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл құрыңыз

Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасау
Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасау

1. for циклын жасаңыз

2. Есептеу айнымалысын (бұл жағдайда) 1-10 мәндерінің матрицасына орнатыңыз. Бұл санау айнымалысы әр суретті жеке шақыру үшін қолданылады

3. num2str функциясын қолданып кескін атауын жолдан санға түрлендіру үшін суреттер матрицасындағы i элементін алыңыз.

Нөмір функциясын қолдана отырып, кескін атауындағы цифрлардың санын табыңыз. Бұл мәнді digit_normal айнымалысына тағайындаңыз. Бұл сан бір таңбалы сандар үшін 1, қос таңбалы сандар үшін 2, үш таңбалы сандар үшін 3 болуы керек. Бұл ақпарат суреттерге автоматты түрде қоңырау шалу үшін қолданылады.

10 -қадам: Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасаңыз (жалғасы жоқ)

Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасаңыз (жалғасы жоқ)
Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасаңыз (жалғасы жоқ)

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_ реттелген кескінді алыңыз және контрастты жақсарту үшін adapthisteq функциясын қолданыңыз.

Adapthisteq синтаксисі I_adjusted, «numTiles», numTiles өлшемі, «nBins» және қоқыс жәшіктерінің санын талап етеді. NumTiles өлшемі [8 8] болып, кескінді 8х8 плиткаларға бөліп, қоқыс жәшіктерінің санын 28 етіп орнатады. I_constrast кескінін тағайындаңыз.

15 -қадам: Орташа сүзгіні жасаңыз

Орташа сүзгіні жасаңыз
Орташа сүзгіні жасаңыз

Fspecial функциясын қолдана отырып, 'Meanfilt' деп аталатын айнымалы құрыңыз. Орташа сүзгі жасау үшін «орташа функцияны» енгізіңіз және жылжымалы терезе өлшемі үшін [90 90] енгізіңіз.

16 -қадам: Орташа сүзгіні контрастты кескінмен біріктіріңіз

Орташа сүзгіні контрастты кескінмен біріктіріңіз
Орташа сүзгіні контрастты кескінмен біріктіріңіз

Mask_mean деп аталатын жаңа айнымалы құрыңыз және I_contrast кескінін алу үшін және бұрын жасалған орташа сүзгіні қолдану үшін имфильтр функциясын қолданыңыз.

17 -қадам: Пикселдерді азайту арқылы жаңа орташа маска жасаңыз

Пикселдерді азайту арқылы жаңа орташа маска жасаңыз
Пикселдерді азайту арқылы жаңа орташа маска жасаңыз

Mask_mean2 деп аталатын айнымалы мән жасаңыз және imsubtract функциясын I_contrast ішіндегі әрбір пиксельдің мәнін mask_mean сәйкес пикселінен шығару үшін қолданыңыз.

18 -қадам: екілік фильтрленген кескін жасаңыз

Екілік фильтрленген кескін жасаңыз
Екілік фильтрленген кескін жасаңыз

Сұр масштабты суреттерді ақ -қара түске айналдырыңыз. Енгізу mask_mean2, «бейімделгіш», «алдыңғы фондық полярлық», «қараңғы», «сезімталдық», 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

Фигуралық дисплей
Фигуралық дисплей

= 26 пиксельдік байланыс «src =» https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp

Ыдыстарды алып тастаңыз және қанның блобтарын санаңыз
Ыдыстарды алып тастаңыз және қанның блобтарын санаңыз

= 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 -ге жақын мәндер жолды көрсетеді. «Кемелерді жоюға» тапсырма беріңіз.

26 -қадам: Суретті көрсету

Әрбір сүзілген кескінді ішкі кеңістікте көрсетіңіз. Көрсету. «жиек» және «тығыз» кірістермен әр суретті ішкі құрылымда көрсетеді. Қандай сүзгі қолданылғанын ажырату үшін әр суретке тақырып қосыңыз.

27 -қадам: Ыдыстарды алып тастаңыз және қанның блобтарын есептеңіз

1. «RemoveVessels» алыңыз және суреттегі объектілердің центроидтерін анықтау үшін «Centroid» мүмкіндігін аймақтық аймақтарға қолданыңыз. Бұл заттар суреттегі қан ұйығыштарына сәйкес келуі керек.

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 -қадам: Диагноздалған кескіндер үшін бүкіл процесті қайталаңыз

Диагноз қойылған суреттер үшін бүкіл процесті қайталаңыз
Диагноз қойылған суреттер үшін бүкіл процесті қайталаңыз

Бүкіл процесті «numbers_to_extract_diagnosed» матрицасында көрсетілген диагноз қойылған кескіндерді пайдаланып қайталаңыз.

Әрбір (i) фигурадан өтіп, оны (i+10) санына ауыстырғаныңызға көз жеткізіңіз, сонда диагноз қойылған сандар 11 -ден 20 -ға дейінгі суреттер ретінде шығады.

32 -қадам: Статистикалық талдау

Статистикалық талдау
Статистикалық талдау

1. 'Нақты диагностика_матрицасы' нәтижелерді 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', төменгі_байланысты, жоғарғы_байланысты)

Ұсынылған: