Мазмұны:
- 1 -қадам: алғышарттар
- 2 -қадам: алғышарттар (жалғасы жоқ)
- 3 -қадам: алғышарттар (жалғасы жоқ)
- 4 -қадам: алғышарттар (жалғасы жоқ)
- 5 -қадам: кодты іске қосуға дайындалу үшін Matlab жүйесін тазалаңыз
- 6 -қадам: Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз
- 7 -қадам: Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз (жалғасы жоқ)
- 8 -қадам: 2 айнымалы (қалыпты және диагностикалық) жасаңыз және олардың әрқайсысын 0 -ге теңестіріңіз
- 9 -қадам: Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл құрыңыз
- 10 -қадам: Қалыпты кескіндерді автоматты түрде жүктеу үшін цикл жасаңыз (жалғасы жоқ)
- 11 -қадам: Кескіннің шекарасын кесіңіз
- 12-қадам: Сұр масштабты кескін жасаңыз
- 13 -қадам: Контрастты кескін жасаңыз
- 14 -қадам: Контраст кескінін жақсарту
- 15 -қадам: Орташа сүзгіні жасаңыз
- 16 -қадам: Орташа сүзгіні контрастты кескінмен біріктіріңіз
- 17 -қадам: Пикселдерді азайту арқылы жаңа орташа маска жасаңыз
- 18 -қадам: екілік фильтрленген кескін жасаңыз
- 19 -қадам: Сүзілген суреттерде табылған ұсақ түйіршіктерді алып тастаңыз
- 20 -қадам: Дискінің құрылымдық элементін жасаңыз
- 21 -қадам: Морфологиялық жабу операцияларын орындаңыз
- 22 -қадам: кем дегенде 8 байланысы бар объектілерді табыңыз
- 23 -қадам: Қосылған пиксельдердің максималды санын табыңыз
- 24 -қадам: Максималды пиксель мәндерін 0 -ге орнатыңыз және> = 26 пиксельдік қосылымы бар пикселдерді табыңыз
- 25 -қадам: Суреттегі қан тамырларын алып тастаңыз
- 26 -қадам: Суретті көрсету
- 27 -қадам: Ыдыстарды алып тастаңыз және қанның блобтарын есептеңіз
- 28 -қадам: Анықталған қан ұйығыштарының санына сүйене отырып, торлы суретті диагностикалау
- 29 -қадам: Егер 5 -тен көп блоктар болса …
- 30 -қадам: Суреттің цифрлық мәні 2 және 3 болатын қалыпты суреттер үшін сүзу процесін қайталаңыз
- 31 -қадам: Диагноздалған кескіндер үшін бүкіл процесті қайталаңыз
- 32 -қадам: Статистикалық талдау
- 33 -қадам: сенімділік аралығын табу
Бейне: MATLAB арқылы диабеттік ретинопатияның автоматтандырылған диагностикасы: 33 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
(Жоғарыдағы кодты қараңыз)
Диабеттік ретинопатия-бұл қандағы қанттың жоғарылауынан туындаған диабетке байланысты көз ауруы. Қандағы қант деңгейінің жоғарылауы сетчаткадағы қан тамырларының ісінуіне әкеледі, бұл қан тамырларының кеңеюіне, тіпті тамырлардың ағуына әкеледі, бұл торлы суреттерде қара дақтардың пайда болуына әкеледі. Бұл кодпен біз қан тамырларының ағып кету нүктелерінің пайда болуын фондық диабеттік ретинопатияның көрсеткіші ретінде қолдануға тырысамыз, дегенмен нақты әлемде диагностиканың қосымша әдістері қажет болады. Бұл кодтың мақсаты - торлы суреттердегі қара дақтар арқылы көрсетілген диабеттік ретинопатияның белгілерін анықтау үшін суретті өңдеуді және торлы кескіндердің диагностикасын автоматтандыру.
Торлы қабықтың 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 жүйесін тазалаңыз
Кодқа қосу:
1. барлығын жабу (бұрын ашылған барлық суреттерді жабады)
2. clearvars - ресми диагностикадан басқа
3. cclc (Командалық терезені тазалайды)
6 -қадам: Диабеттік ретинопатия белгілері бар 10 қалыпты көз суретін және 10 суретті таңдаңыз
1. Диагностикалық мәтіндік файлды алыңыз және сурет атауларын шығарыңыз. Бұл атаулар мәтіндік файлдың бірінші бағанында бар, сондықтан оларды алу үшін 'officialdiagnoses (:, 1)' теріңіз. Кескін атауларының матрицасы «all_image_numbers» айнымалысына тағайындалды.
2. all_image_numbers айнымалысын cell2mat функциясын қолданып ұяшық жиымынан матрицалық массивке түрлендіріңіз.
7 -қадам: Диабеттік ретинопатия белгілері бар 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 -ге теңестіріңіз
Цикл нөмірлерін инициализациялау үшін бұл айнымалыларды 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 байланысы бар объектілерді табыңыз
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 -тен көп болса, бұл бөлім жұмыс істейді.
If операторын аяқтаңыз.
30 -қадам: Суреттің цифрлық мәні 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', төменгі_байланысты, жоғарғы_байланысты)
Ұсынылған:
Geeetech тақтасы Raspberry Pi арқылы тікелей USB кабелі арқылы: 4 қадам
Geeetech тақтасы Raspberry Pi арқылы тікелей USB кабелі арқылы: Сәлеметсіз бе! Бұл нұсқаулықта JST XH 4 істікшелі USB кабелін қалай жасау керектігін көрсетеді, осылайша сіз Raspberry Pi немесе басқа USB құрылғысын Geeetech 2560 rev 3 тақтасына A10 сияқты Geeetech принтеріне тікелей қосуға болады. Бұл кабель ыңғайлы параллельге қосылады
BMP280 датчиктері Arduino Uno арқылы SPI арқылы: 6 қадам
Бірнеше BMP280 датчиктері Arduino Uno арқылы SPI арқылы: Бұл оқулықта біз Arduino Uno -да SPI арқылы үш BMP280 қосамыз, бірақ сіз Uno -да D3 -тен D10 -ге дейінгі цифрлық порттарды қолдана отырып, әр сенсор үшін nSS (Slave Select) ретінде сегіз BMP280 қосуға болады. Нәтиже В өлшейтін атмосфералық қысым үлгілерінің
Neopixel Ws 2812 LED жолағы Android немесе Iphone арқылы Bluetooth арқылы басқарылатын Arduino көмегімен: 4 қадам
Neopixel Ws 2812 LED жолағы Arduino көмегімен Android немесе iPhone арқылы басқарылады: Сәлеметсіздерме балалар, мен осы нұсқаулықта Bluetooth байланысын қолдана отырып, Android телефонынан немесе iPhone -нан неопиксельді жарықдиодты немесе ws2812 жарықдиодты қалай басқару керектігін талқыладым. үйіңізге неопиксельді жолақты қосыңыз, Arduino -мен бірге
Braço Robô Controlado Celular арқылы Giroscopio арқылы: 3 қадам
Braço Robô Controlado Celular арқылы Giroscópio арқылы: Celular, a créção de um a braco robótico controlado pelo giroscópio de um celular, a part of emer partes: materiaisEsquema eletrônicoMoulecoando altoo braço
Инвентаризация - компьютердің жылдам диагностикасы енді толықтырылды, төменде қараңыз: 6 қадам
Инвентаризация - дербес компьютерлерді тез диагностикалау, төменде қараңыз: Егер сізге бұрын компьютерде жұмыс істеу қажет болса, сізге нақты инвентарь қажет. Бұл нұсқаулық тек әріптесі компьютерге драйверді іздеуде қиындықтар туындағандықтан пайда болды. Мен Aida32 жеке нұсқасын http://majorgeeks.com сайтынан қолданамын