Isi kandungan:
- Langkah 1: Prasyarat
- Langkah 2: Prasyarat (jangan)
- Langkah 3: Prasyarat (jangan)
- Langkah 4: Prasyarat (jangan)
- Langkah 5: Bersihkan Matlab untuk Bersedia untuk Menjalankan Kod
- Langkah 6: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetes
- Langkah 7: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetik (jangan)
- Langkah 8: Buat 2 Pembolehubah (Normal dan Diagnosis) dan Tetapkan Masing-masing Sama dengan 0
- Langkah 9: Buat gelung untuk memuat naik gambar normal secara automatik
- Langkah 10: Buat gelung untuk memuat naik gambar normal secara automatik (jangan)
- Langkah 11: Pangkas Batas Gambar
- Langkah 12: Buat Gambar berskala Kelabu
- Langkah 13: Buat Gambar Berbeza
- Langkah 14: Tingkatkan Imej Kontras
- Langkah 15: Buat Penapis Purata
- Langkah 16: Gabungkan Purata Penapis dengan Gambar Berbeza
- Langkah 17: Buat Topeng Maksud Baru dengan Mengurangkan Piksel
- Langkah 18: Buat Gambar Penapis Binari
- Langkah 19: Keluarkan Gumpalan yang Lebih Kecil yang Terdapat dalam Gambar yang Disaring
- Langkah 20: Buat Elemen Penstrukturan Cakera
- Langkah 21: Lakukan Operasi Tutup Morfologi
- Langkah 22: Cari Objek Dengan Kesambungan Paling Sedikit 8
- Langkah 23: Cari Bilangan Maksimum Piksel yang Disambungkan
- Langkah 24: Tetapkan Nilai Piksel Maksimum ke 0 dan Cari Piksel Dengan> = 26 Kesambungan Piksel
- Langkah 25: Keluarkan Kapal Darah dalam Gambar
- Langkah 26: Paparan Gambar
- Langkah 27: Keluarkan Kapal dan Hitung Gumpalan Darah
- Langkah 28: Mendiagnosis Gambar Retina Berdasarkan Bilangan Gumpalan Darah yang Dikenal
- Langkah 29: Sekiranya Terdapat Lebih Dari 5 Gumpalan…
- Langkah 30: Proses Penapisan Ulangan untuk Gambar Biasa Dengan Nilai Digit Gambar Sebagai 2 dan 3
- Langkah 31: Ulangi Seluruh Proses untuk Gambar Diagnosis
- Langkah 32: Analisis Statistik
- Langkah 33: Mencari Selang Keyakinan
Video: Diagnosis Automatik Retinopati Diabetes Melalui MATLAB: 33 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
(Lihat garis besar kod di atas)
Retinopati diabetes adalah penyakit mata yang berkaitan dengan diabetes yang disebabkan oleh kadar gula darah tinggi. Tahap gula darah yang tinggi menyebabkan pembuluh darah di retina membengkak, yang menyebabkan pembuluh darah membesar dan bahkan kebocoran saluran, yang menyebabkan bintik-bintik gelap pada gambar retina. Dengan kod ini, kami bertujuan untuk menggunakan penampilan titik kebocoran saluran darah sebagai petunjuk retinopati diabetes latar belakang, walaupun teknik diagnosis lebih lanjut diperlukan di dunia nyata. Matlamat kod ini adalah untuk mengautomasikan pemprosesan gambar dan mendiagnosis gambar retina untuk mengenal pasti tanda-tanda retinopati diabetes yang ditunjukkan melalui bintik-bintik gelap pada gambar retina.
10 gambar retina normal dan 10 gambar retina yang didiagnosis diproses melalui kod yang pertama kali membaca dan menyaring gambar dan kemudian mengukur bintik-bintik gelap untuk menentukan apakah terdapat gejala retinopati diabetes, berdasarkan ambang yang ditentukan. Hasilnya kemudian dicetak ke tetingkap arahan untuk penafsiran penonton.
Langkah 1: Prasyarat
1. Pastikan program MATLAB dimuat turun di komputer anda.
2. Muat turun fail txt yang terdapat di pautan. (Tekan 'ctrl + s' untuk menyimpan ke direktori yang sama dengan Kod MATLAB)
Langkah 2: Prasyarat (jangan)
4. Buka MATLAB dan ketik 'uiimport' ke tetingkap arahan.
5. Pilih fail officialdiagnoses.txt dan import ke MATLAB sebagai matriks sel.
6. Pastikan anda melihat 'diagnosis rasmi' sebagai pemboleh ubah di ruang kerja.
Langkah 3: Prasyarat (jangan)
7. Muat turun fungsi ModWald.m, yang dapat diperoleh dari kod di atas atau memuat turunnya dari Canvas.
(Kod disediakan oleh Profesor King dan Profesor Choi)
Langkah 4: Prasyarat (jangan)
8. Muat turun 400 gambar mentah dari bahagian data Projek STARE.
Langkah 5: Bersihkan Matlab untuk Bersedia untuk Menjalankan Kod
Tambahkan ke kod:
1. tutup semua (Tutup semua gambar yang dibuka sebelumnya)
2. clearvars - kecuali officialdiagnoses (Membersihkan semua pemboleh ubah kecuali fail rasmi txt yang diimport sebelumnya)
3. cclc (Kosongkan Tetingkap Perintah)
Langkah 6: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetes
1. Ambil fail teks diagnosis dan ekstrak nama gambar. Nama-nama ini terdapat di lajur pertama fail teks sehingga untuk mengekstraknya taip 'officialdiagnoses (:, 1)'. Matriks nama gambar diberikan kepada pemboleh ubah, "all_image_numbers"
2. Tukarkan pemboleh ubah all_image_numbers dari array sel ke array matriks menggunakan fungsi cell2mat
Langkah 7: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetik (jangan)
3. Pilih 10 gambar mata biasa untuk menjalankan kod. Gambar yang dipilih dalam kes ini ialah 278, 199, 241, 235, 35, 77, 82, 164, 239, 170.
Letakkan nombor ini dalam matriks dan tetapkannya ke pemboleh ubah yang akan dipanggil semasa memuatkan gambar.
4. Ulangi langkah 3 untuk gambar retina yang telah didiagnosis dengan retinopati diabetes. Gambar yang dipilih dalam kes ini ialah 139, 137, 136, 135, 133, 140, 141, 116, 157, 188.
Langkah 8: Buat 2 Pembolehubah (Normal dan Diagnosis) dan Tetapkan Masing-masing Sama dengan 0
Buat pemboleh ubah ini sebelum loop untuk menginisialisasi nombor gelung.
Langkah 9: Buat gelung untuk memuat naik gambar normal secara automatik
1. Buat gelung untuk
2. Tetapkan pemboleh ubah pengiraan (i, dalam kes ini) ke matriks nilai 1-10. Pemboleh ubah pengiraan ini akan digunakan untuk memanggil setiap gambar secara individu
3. Ambil elemen i dalam matriks gambar untuk mengekstrak dan menukar nama gambar dari rentetan menjadi nombor menggunakan fungsi num2str.
Cari bilangan digit yang terdapat dalam nama gambar menggunakan fungsi numel. Berikan nilai ini kepada pemboleh ubah, digit_normal. Nombor ini hendaklah 1 untuk nombor satu digit, 2 untuk nombor dua digit, dan 3 untuk nombor tiga digit. Maklumat ini akan digunakan untuk memanggil gambar secara automatik.
Langkah 10: Buat gelung untuk memuat naik gambar normal secara automatik (jangan)
3. Buat pernyataan if yang mengandungi ketiga-tiga kemungkinan dari langkah sebelumnya. Jika nama gambar memiliki 1 digit, gambar akan disebut sebagai "im000", jika memiliki 2 digit, gambar akan disebut sebagai "im00", dan jika memiliki 3 gambar akan disebut sebagai "im0".
4. Di bawah setiap pernyataan if, tetapkan pemboleh ubah untuk membaca "im" di bawah, jika pernyataan yang sesuai dengan bilangan nol yang sesuai (seperti yang dijelaskan di atas), diikuti oleh i.
Langkah 11: Pangkas Batas Gambar
Ambil gambar asal dan sapukan penapis imcrop untuk menghilangkan sempadan hitam dan tetapkan pada pemboleh ubah I_crop. Segi empat tepat tanaman ditentukan menggunakan matriks [95, 95, 500, 410].
Langkah 12: Buat Gambar berskala Kelabu
Ambil gambar yang dipotong dan terapkan penapis rbg2gray untuk menukar gambar ke skala kelabu. Tetapkan gambar ini kepada pemboleh ubah I2.
Langkah 13: Buat Gambar Berbeza
Ambil gambar I2 dan gunakan imadjust untuk menilai semula nilai intensiti.
Ambil nilai yang berada dalam julat [0.2, 0.7] dan nilai semula ke [0, 1]. Gamma diatur ke 0,8 untuk menjadikan gambar lebih cerah. Tetapkan gambar baru kepada I_adjusted.
Langkah 14: Tingkatkan Imej Kontras
Ambil gambar I_adjusted dan gunakan fungsi adaptthisteq untuk meningkatkan kontras.
Sintaks Adapthisteq memerlukan nama gambar, I_adjusted, ‘numTiles’, ukuran numTiles, ‘nBins’, dan jumlah tong sampah. Saiz numTiles diatur ke [8 8], membahagi gambar menjadi 8x8 jubin dan bilangan tong ditetapkan ke 28. Tetapkan gambar ke I_constrast.
Langkah 15: Buat Penapis Purata
Buat pemboleh ubah bernama 'meanfilt' menggunakan fungsi fspecial. Masukkan ‘fungsi purata’ untuk membuat penapis purata dan masukkan [90 90] untuk ukuran tetingkap gelangsar.
Langkah 16: Gabungkan Purata Penapis dengan Gambar Berbeza
Buat pemboleh ubah baru bernama mask_mean dan gunakan fungsi imfilter untuk mengambil gambar I_contrast dan untuk menerapkan filter rata-rata yang dibuat sebelumnya.
Langkah 17: Buat Topeng Maksud Baru dengan Mengurangkan Piksel
Buat pemboleh ubah bernama mask_mean2 dan gunakan fungsi imsubtract untuk mengurangkan nilai setiap piksel dalam I_contrast dari piksel yang sesuai di mask_mean.
Langkah 18: Buat Gambar Penapis Binari
Ubah gambar skala kelabu menjadi hitam putih menggunakan imbinarize. Masukan masukan_mean2, ‘adaptif’, ‘ForegroundPolarity’, ‘dark’, ‘Sensitivity’, 0.6. Tetapkan gambar baru ini untuk mask_binarize.
Langkah 19: Keluarkan Gumpalan yang Lebih Kecil yang Terdapat dalam Gambar yang Disaring
Keluarkan objek dengan sambungan kurang dari 100 piksel menggunakan fungsi bwareaopen pada mask_binarize dan tetapkan nilai ambang ke 100. Tetapkan pemboleh ubah sebagai bw.
Langkah 20: Buat Elemen Penstrukturan Cakera
Buat elemen penstrukturan cakera (dengan jejari 2) menggunakan fungsi strel. Berikannya kepada se.
Langkah 21: Lakukan Operasi Tutup Morfologi
Ambil bw dan terapkan fungsi imclose pada elemen struktur untuk melakukan operasi tutup morfologi pada objek.
Langkah 22: Cari Objek Dengan Kesambungan Paling Sedikit 8
Ambil bw dan gunakan bwconncomp untuk mencari objek dengan sambungan sekurang-kurangnya 8 dalam gambar. Tetapkan output nombor ke cc_1.
Langkah 23: Cari Bilangan Maksimum Piksel yang Disambungkan
Gunakan fungsi cellfun untuk melakukan fungsi "numel" pada setiap sel di CC. Ini menemui bilangan elemen dalam sel PixelIdxList. Tetapkan Nilai kepada "numPixels".
Cari nilai maksimum dalam numPIxels. Tetapkan maksimum terbesar ke "terbesar" dan indeks nilai maksimum ke "idx".
Langkah 24: Tetapkan Nilai Piksel Maksimum ke 0 dan Cari Piksel Dengan> = 26 Kesambungan Piksel
= 26 Kesambungan Pixel "src =" https://content.instructables.com/ORIG/FXY/DTW3/JEOIIEL4/FXYDTW3JEOIIEL4-p.webp
= 26 Kesambungan Pixel "src =" https://content.instructables.com/ORIG/FXO/GBX1/JEOIIELB/FXOGBX1JEOIIELB-p.webp
= 26 Kesambungan Pixel "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
= 26 Kesambungan Pixel "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300'%} ">
Tetapkan piksel dengan nilai terbesar dalam gambar "bw" ke 0, menjadikan piksel menjadi hitam.
Cari objek dengan sambungan sekurang-kurangnya 26 piksel dalam gambar menggunakan bwconncomp. Tetapkan kepada pemboleh ubah cc_1.
Langkah 25: Keluarkan Kapal Darah dalam Gambar
Tanggalkan saluran darah yang masih terdapat dalam gambar menggunakan fungsi bwpropfilt dengan julat [0, 0.9].
[0.9, 1] dikecualikan kerana nilai hampir dengan 1 menunjukkan garis. Tugaskan ke "RemoveVessels".
Langkah 26: Paparan Gambar
Paparkan setiap gambar yang ditapis dalam subplot. Imshow. dengan input 'sempadan' dan 'ketat', memaparkan setiap gambar dalam struktur subplot. Tambahkan tajuk untuk setiap gambar untuk membezakan penapis mana yang digunakan.
Langkah 27: Keluarkan Kapal dan Hitung Gumpalan Darah
1. Ambil "RemoveVessels" dan terapkan ciri "Centroid" di kawasanprop untuk mengenal pasti pusat objek dalam gambar. Objek ini harus sesuai dengan pembekuan darah yang terdapat dalam gambar.
2. Hitung bilangan gumpalan darah yang dikenal pasti dengan mengambil panjang matriks sentroid.
Langkah 28: Mendiagnosis Gambar Retina Berdasarkan Bilangan Gumpalan Darah yang Dikenal
Gunakan jika pernyataan untuk mendiagnosis gambar berdasarkan jumlah gumpalan darah yang dikenal pasti.
Sekiranya bilangan centroid yang dikenal pasti kurang dari atau sama dengan 5, gambar itu dikenal pasti normal.
Sekiranya bilangan centroid lebih besar daripada 5, gambar itu didiagnosis dengan retinopati diabetes.
Hasilnya dicetak ke tetingkap perintah menggunakan fprintf.
Langkah 29: Sekiranya Terdapat Lebih Dari 5 Gumpalan…
Ulangi arahan di atas untuk gambar yang didiagnosis sebagai pernyataan lain. Bahagian ini akan dijalankan sekiranya bilangan gumpalan lebih besar daripada 5.
Tamatkan penyataan if.
Langkah 30: Proses Penapisan Ulangan untuk Gambar Biasa Dengan Nilai Digit Gambar Sebagai 2 dan 3
Ulangi proses untuk baki yang asli jika pernyataan apabila numel (bilangan digit dalam nombor gambar) sama dengan 2 dan 3. Ini melengkapkan gelung untuk gambar normal.
Tamatkan gelung untuk.
Langkah 31: Ulangi Seluruh Proses untuk Gambar Diagnosis
Ulangi keseluruhan proses menggunakan gambar yang didiagnosis yang disenaraikan oleh matriks "number_to_extract_diagnosed".
Pastikan untuk memeriksa setiap angka (i) dan ubah menjadi angka (i + 10) sehingga angka yang didiagnosis akan muncul sebagai gambar 11 hingga 20.
Langkah 32: Analisis Statistik
1. 'Actual_Diagnosis_Matrix' digunakan untuk membandingkan hasilnya dengan diagnosis rasmi yang terdapat dalam fail txt. Sifar 10 pertama menunjukkan bahawa 10 gambar pertama mestilah normal. 10 gambar terakhir menunjukkan bahawa 10 gambar terakhir harus dikelaskan sebagai retinopati diabetes.
2. Tanda sama berganda yang digunakan untuk membuat 'number_correct' membuat susunan logik dengan membandingkan nilai elemen yang sesuai dari 'Actual_Diagnosis_Matrix' dengan 'Diagnosis_Matrix' yang dibuat dari loop for.
Untuk setiap elemen yang sesuai dengan diagnosis, 1 akan ditambahkan, yang bermaksud kod mendiagnosis gambar itu dengan betul. Sekiranya tidak betul ia akan menambah 0 ke matriks.
Kemudian, dengan mengambil jumlah itu menambah semua. Dengan kata lain, ia menjumpai jumlah gambar yang didiagnosis dengan betul.
3. 'Final_percentage_correct' adalah peratusan yang dikira seberapa tepat kod yang didiagnosis retinopati diabetes. Bilangan gambar yang didiagnosis dengan betul dibahagikan dengan 20 (jumlah gambar) dan didarabkan dengan 100 untuk mencari peratusan diagnosis yang berjaya.
Langkah 33: Mencari Selang Keyakinan
1. Pastikan anda memuat turun ModWald.m untuk memanggilnya sebagai fungsi. Tanpa fungsi, anda harus mengira selang keyakinan menggunakan kaedah Wald yang diubahsuai sendiri.
2. Fungsi ModWald mempunyai 2 input di mana yang pertama adalah jumlah gambar yang dikenal pasti dengan betul, dan yang kedua adalah jumlah keseluruhan gambar.
3. Fungsi ModWald akan mengeluarkan batas bawah dan atas selang keyakinan berkadar untuk ketepatan data sampel. Dengan kata lain, anda akan memberikan selang peratusan di mana peratusan ketepatan kod yang sebenar.
4. Gunakan fprintf di bawah untuk mengeluarkan statistik dan selang keyakinan ke tetingkap arahan.
> fprintf ('%. 0f peratus gambar retina didiagnosis dengan betul mengikut diagnosis rasmi. / n / n', Final_percentage_correct)
> fprintf ('Peratusan sebenar di mana kod kami akan mendiagnosis retinopati diabetes dengan betul akan berada dalam julat [%.3f,%.3f], berdasarkan 20 gambar sampel / n', bawah_batas, atas_bound)
Disyorkan:
Mengawal Aplikasi Led Melalui Blynk Menggunakan Nodemcu Melalui Internet: 5 Langkah
Mengawal Led Melalui Aplikasi Blynk Menggunakan Nodemcu Melalui Internet: Halo Semua Hari Ini Kami Akan Menunjukkan kepada Anda Bagaimana Anda Boleh Mengendalikan LED Menggunakan Telefon Pintar Melalui Internet
Panduan Pengkodan / Diagnosis BMW INPA E60: 4 Langkah
Panduan Pengkodan / Diagnosa BMW INPA E60: Dalam artikel ini, saya akan mengumpulkan beberapa kes mengenai kes kerja BMW INPA pada BMW E60, dan jika anda mempunyai kes BMW INPA E60 yang lain yang ingin dikongsi dengan orang lain, sila hantarkan ke e-mel saya. akan meletakkannya di sini untuk berkongsi
Kawal Peranti Melalui Internet Melalui Penyemak Imbas. (IoT): 6 Langkah
Kawal Peranti Melalui Internet Melalui Penyemak Imbas. (IoT): Dalam Instructable ini saya akan menunjukkan kepada anda bagaimana anda dapat mengawal peranti seperti LED, Relay, motor dll melalui internet melalui penyemak imbas web. Dan anda boleh mengakses kawalan dengan selamat ke mana-mana peranti. Platform web yang saya gunakan di sini adalah lawatan RemoteMe.org
Automasi Rumah: Papan Suis Automatik Dengan Kawalan Dimmer Melalui Bluetooth Menggunakan Tiva TM4C123G: 7 Langkah
Automasi Rumah: Papan Suis Automatik Dengan Kawalan Dimmer Melalui Bluetooth Menggunakan Tiva TM4C123G: Pada masa ini, kami mempunyai alat kawalan jauh untuk set televisyen kami dan sistem elektronik lain, yang menjadikan kehidupan kami sangat mudah. Adakah anda pernah tertanya-tanya mengenai automasi rumah yang akan memberi kemudahan mengawal lampu tiub, kipas dan alat-alat lain
Memindahkan Fail Melalui LAN Anda Melalui BitTorrent: 6 Langkah
Memindahkan Fail Melalui LAN Anda Melalui BitTorrent: Kadang kala anda mungkin perlu memindahkan fail melalui rangkaian ke beberapa komputer. Walaupun anda boleh meletakkannya di pemacu kilat atau CD / DVD, anda harus pergi ke setiap komputer untuk menyalin fail dan mungkin memerlukan beberapa saat untuk menyalin semua fail (terutamanya dengan f