Daftar Isi:
- Langkah 1: Prasyarat
- Langkah 2: Prasyarat (lanjutan)
- Langkah 3: Prasyarat (lanjutan)
- Langkah 4: Prasyarat (lanjutan)
- Langkah 5: Bersihkan Matlab untuk Mempersiapkan Menjalankan Kode
- Langkah 6: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetik
- Langkah 7: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetik (Lanjutan)
- Langkah 8: Buat 2 Variabel (Normal dan Didiagnosis) dan Tetapkan Masing-masing Sama dengan 0
- Langkah 9: Buat for Loop untuk Mengunggah Gambar Normal Secara Otomatis
- Langkah 10: Buat for Loop untuk Mengunggah Gambar Normal secara Otomatis (lanjutan)
- Langkah 11: Pangkas Perbatasan Gambar
- Langkah 12: Buat Gambar Skala Abu-abu
- Langkah 13: Buat Gambar Kontras
- Langkah 14: Tingkatkan Gambar Kontras
- Langkah 15: Buat Filter Rata-Rata
- Langkah 16: Gabungkan Filter Rata-Rata Dengan Gambar Kontras
- Langkah 17: Buat Topeng Berarti Baru dengan Mengurangi Piksel
- Langkah 18: Buat Gambar Terfilter Biner
- Langkah 19: Hapus Gumpalan Kecil yang Ditemukan di Gambar yang Difilter
- Langkah 20: Buat Elemen Penataan Disk
- Langkah 21: Lakukan Operasi Tutup Morfologis
- Langkah 22: Temukan Objek Dengan Konektivitas Minimal 8
- Langkah 23: Temukan Jumlah Maksimum Piksel Terhubung
- Langkah 24: Tetapkan Nilai Piksel Maks ke 0 dan Temukan Piksel Dengan >=26 Konektivitas Piksel
- Langkah 25: Hapus Pembuluh Darah di Gambar
- Langkah 26: Tampilan Gambar
- Langkah 27: Hapus Pembuluh dan Hitung Gumpalan Darah
- Langkah 28: Mendiagnosis Gambar Retina Berdasarkan Jumlah Gumpalan Darah yang Diidentifikasi
- Langkah 29: Jika Ada Lebih dari 5 Gumpalan…
- Langkah 30: Ulangi Proses Penyaringan untuk Gambar Normal Dengan Nilai Digit Gambar Sebagai 2 dan 3
- Langkah 31: Ulangi Seluruh Proses untuk Gambar yang Didiagnosis
- Langkah 32: Analisis Statistik
- Langkah 33: Menemukan Interval Keyakinan
Video: Diagnosis Otomatis Retinopati Diabetik Melalui MATLAB: 33 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
(Lihat garis besar kode di atas)
Retinopati diabetik adalah penyakit mata terkait diabetes yang disebabkan oleh kadar gula darah yang tinggi. Kadar gula darah yang tinggi menyebabkan pembuluh darah di retina membengkak, yang menyebabkan pembuluh darah membesar dan bahkan kebocoran pembuluh darah, yang menyebabkan bintik-bintik gelap pada gambar retina. Dengan kode ini, kami bertujuan untuk menggunakan munculnya titik kebocoran pembuluh darah sebagai indikator latar belakang retinopati diabetik, meskipun teknik diagnosis lebih lanjut akan diperlukan di dunia nyata. Tujuan dari kode ini adalah untuk mengotomatisasi pemrosesan gambar dan mendiagnosis gambar retina untuk mengidentifikasi tanda-tanda retinopati diabetik yang ditunjukkan melalui bintik-bintik gelap pada gambar retina.
10 gambar retina normal dan 10 gambar retina yang didiagnosis diproses melalui kode yang pertama membaca dan menyaring gambar dan kemudian menghitung bintik-bintik gelap untuk menentukan apakah ada gejala retinopati diabetik, berdasarkan ambang batas yang diberikan. Hasilnya kemudian dicetak ke jendela perintah untuk interpretasi pemirsa.
Langkah 1: Prasyarat
1. Pastikan Anda telah mengunduh program MATLAB di komputer Anda.
2. Unduh file txt yang ada di tautan. (Tekan 'ctrl+s' untuk menyimpan ke direktori yang sama dengan Kode MATLAB)
Langkah 2: Prasyarat (lanjutan)
4. Buka MATLAB dan ketik 'uiimport' ke dalam jendela perintah.
5. Pilih file officialdiagnoses.txt dan impor ke MATLAB sebagai matriks sel.
6. Pastikan Anda melihat 'diagnosis resmi' sebagai variabel di ruang kerja.
Langkah 3: Prasyarat (lanjutan)
7. Unduh fungsi ModWald.m, yang dapat diperoleh dari kode di atas atau unduh dari Canvas.
(Kode disediakan oleh Profesor King dan Profesor Choi)
Langkah 4: Prasyarat (lanjutan)
8. Unduh 400 gambar mentah dari bagian data Proyek STARE.
Langkah 5: Bersihkan Matlab untuk Mempersiapkan Menjalankan Kode
Tambahkan ke kode:
1. tutup semua (Menutup semua gambar yang dibuka sebelumnya)
2. clearvars - kecuali diagnosis resmi (Menghapus semua variabel kecuali file txt diagnosis resmi yang sebelumnya diimpor)
3. cclc (Membersihkan Jendela Perintah)
Langkah 6: Pilih 10 Gambar Mata Normal dan 10 Gambar Dengan Gejala Retinopati Diabetik
1. Ambil file teks diagnosis dan ekstrak nama gambar. Nama-nama ini terdapat di kolom pertama file teks sehingga untuk mengekstraknya ketik 'officialdiagnoses(:, 1)'. Matriks nama gambar ditetapkan ke variabel, " all_image_numbers"
2. Konversi variabel 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 (Lanjutan)
3. Pilih 10 gambar mata normal untuk menjalankan kode. Gambar yang dipilih dalam kasus ini adalah 278, 199, 241, 235, 35, 77, 82, 164, 239, 170.
Tempatkan angka-angka ini dalam matriks dan tetapkan ke variabel yang akan dipanggil saat memuat gambar.
4. Ulangi langkah 3 untuk gambar retina yang telah didiagnosis dengan retinopati diabetik. Gambar yang dipilih dalam kasus ini adalah 139, 137, 136, 135, 133, 140, 141, 116, 157, 188.
Langkah 8: Buat 2 Variabel (Normal dan Didiagnosis) dan Tetapkan Masing-masing Sama dengan 0
Buat variabel-variabel ini sebelum for loop untuk menginisialisasi nomor loop.
Langkah 9: Buat for Loop untuk Mengunggah Gambar Normal Secara Otomatis
1. Buat perulangan for
2. Tetapkan variabel penghitungan (i, dalam hal ini) ke matriks dengan nilai 1-10. Variabel penghitungan ini akan digunakan untuk memanggil setiap gambar satu per satu
3. Ambil elemen i dalam matriks gambar untuk mengekstrak dan mengubah nama gambar dari string menjadi angka menggunakan fungsi num2str.
Temukan jumlah digit yang ada dalam nama gambar menggunakan fungsi angka. Tetapkan nilai ini ke variabel, digits_normal. Angka ini harus 1 untuk angka satu digit, 2 untuk angka dua digit, dan 3 untuk angka tiga digit. Informasi ini akan digunakan untuk memanggil gambar secara otomatis.
Langkah 10: Buat for Loop untuk Mengunggah Gambar Normal secara Otomatis (lanjutan)
3. Buat pernyataan if yang berisi ketiga 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 variabel ke imread "im" di bawah pernyataan if yang sesuai dengan jumlah nol yang sesuai (seperti dijelaskan di atas), diikuti oleh i.
Langkah 11: Pangkas Perbatasan Gambar
Ambil gambar asli dan terapkan filter imcrop untuk menghilangkan batas hitam dan tetapkan ke variabel I_crop. Persegi panjang tanaman ditentukan menggunakan matriks [95, 95, 500, 410].
Langkah 12: Buat Gambar Skala Abu-abu
Ambil gambar yang dipotong dan terapkan filter rbg2gray untuk mengubah gambar menjadi skala abu-abu. Tetapkan gambar ini ke variabel I2.
Langkah 13: Buat Gambar Kontras
Ambil gambar I2 dan gunakan imadjust untuk mengubah skala nilai intensitas.
Ambil nilai yang berada dalam kisaran [0.2, 0.7] dan ubah skalanya menjadi [0, 1]. Gamma diatur ke 0,8 untuk membuat gambar lebih cerah. Tetapkan gambar baru ke I_adjusted.
Langkah 14: Tingkatkan Gambar Kontras
Ambil gambar I_adjusted dan gunakan fungsi adapthisteq untuk meningkatkan kontras.
Sintaks Adapthisteq memerlukan nama gambar, I_adjusted, 'numTiles', ukuran numTiles, 'nBins', dan jumlah bin. Ukuran numTiles diatur ke [8 8], membagi gambar menjadi ubin 8x8 dan jumlah nampan diatur ke 28. Tetapkan gambar ke I_constrast.
Langkah 15: Buat Filter Rata-Rata
Buat variabel bernama 'meanfilt' menggunakan fungsi fspecial. Masukkan 'fungsi rata-rata' untuk membuat filter rata-rata dan masukkan [90 90] untuk ukuran jendela geser.
Langkah 16: Gabungkan Filter Rata-Rata Dengan Gambar Kontras
Buat variabel baru bernama mask_mean dan gunakan fungsi imfilter untuk mengambil gambar I_contrast dan menerapkan filter mean yang dibuat sebelumnya.
Langkah 17: Buat Topeng Berarti Baru dengan Mengurangi Piksel
Buat variabel bernama mask_mean2 dan gunakan fungsi imsubtract untuk mengurangi nilai setiap piksel di I_contrast dari piksel yang sesuai di mask_mean.
Langkah 18: Buat Gambar Terfilter Biner
Ubah gambar skala abu-abu menjadi hitam putih menggunakan imbinarize. Masukkan mask_mean2, 'adaptif', 'ForegroundPolarity', 'gelap', 'Sensitivitas', 0,6. Tetapkan gambar baru ini ke mask_binarize.
Langkah 19: Hapus Gumpalan Kecil yang Ditemukan di Gambar yang Difilter
Hapus objek dengan konektivitas kurang dari 100 piksel menggunakan fungsi bwareaopen pada mask_binarize dan atur nilai ambang ke 100. Tetapkan variabel sebagai bw.
Langkah 20: Buat Elemen Penataan Disk
Buat elemen penataan disk (dengan radius 2) menggunakan fungsi strel. Tetapkan ke se.
Langkah 21: Lakukan Operasi Tutup Morfologis
Ambil bw dan terapkan fungsi imclose ke elemen struktural untuk melakukan operasi tutup morfologis pada objek.
Langkah 22: Temukan Objek Dengan Konektivitas Minimal 8
Ambil bw dan gunakan bwconncomp untuk menemukan objek dengan konektivitas minimal 8 pada gambar. Tetapkan output nomor ke cc_1.
Langkah 23: Temukan Jumlah Maksimum Piksel Terhubung
Gunakan fungsi cellfun untuk menjalankan fungsi “numel” pada setiap sel di CC. Ini menemukan jumlah elemen dalam sel PixelIdxList. Tetapkan Nilai ke "numPixels".
Temukan nilai maksimum di numPIxels. Tetapkan nilai maksimum terbesar ke "terbesar" dan indeks nilai maksimum ke "idx".
Langkah 24: Tetapkan Nilai Piksel Maks ke 0 dan Temukan Piksel Dengan >=26 Konektivitas Piksel
Atur piksel dengan nilai terbesar pada gambar “bw” ke 0, membuat piksel menjadi hitam.
Temukan objek dengan konektivitas minimal 26 piksel pada gambar menggunakan bwconncomp. Tetapkan ke variabel cc_1.
Langkah 25: Hapus Pembuluh Darah di Gambar
Hapus pembuluh darah yang masih ada pada gambar menggunakan fungsi bwpropfilt dengan kisaran [0, 0,9].
[0.9, 1] dikecualikan karena nilai yang mendekati 1 menunjukkan garis. Tetapkan ke "RemoveVessels".
Langkah 26: Tampilan Gambar
Tampilkan setiap gambar yang difilter dalam subplot. Imshow. dengan input 'border' dan 'tight', menampilkan setiap gambar dalam struktur subplot. Tambahkan judul ke setiap gambar untuk membedakan filter mana yang digunakan.
Langkah 27: Hapus Pembuluh dan Hitung Gumpalan Darah
1. Ambil "RemoveVessels" dan terapkan fitur 'Centroid' di regionprops untuk mengidentifikasi centroid objek dalam gambar. Benda-benda ini harus sesuai dengan gumpalan darah yang ada pada gambar.
2. Hitung jumlah bekuan darah yang diidentifikasi dengan mengambil panjang matriks centroid.
Langkah 28: Mendiagnosis Gambar Retina Berdasarkan Jumlah Gumpalan Darah yang Diidentifikasi
Gunakan pernyataan if untuk mendiagnosis gambar berdasarkan jumlah bekuan darah yang teridentifikasi.
Jika jumlah centroid yang teridentifikasi kurang dari atau sama dengan 5, maka citra teridentifikasi normal.
Jika jumlah centroid lebih besar dari 5, gambar didiagnosis dengan retinopati diabetik.
Hasilnya dicetak ke jendela perintah menggunakan fprintf.
Langkah 29: Jika Ada Lebih dari 5 Gumpalan…
Ulangi instruksi di atas untuk gambar yang didiagnosis sebagai pernyataan lain. Bagian ini akan berjalan jika jumlah gumpalan lebih besar dari 5.
Akhiri pernyataan if.
Langkah 30: Ulangi Proses Penyaringan untuk Gambar Normal Dengan Nilai Digit Gambar Sebagai 2 dan 3
Ulangi proses untuk sisa pernyataan if asli ketika angka (jumlah digit dalam nomor gambar) sama dengan 2 dan 3. Ini melengkapi perulangan for untuk gambar normal.
Akhiri perulangan for.
Langkah 31: Ulangi Seluruh Proses untuk Gambar yang Didiagnosis
Ulangi seluruh proses menggunakan gambar yang didiagnosis yang terdaftar oleh matriks “numbers_to_extract_diagnosed”.
Pastikan untuk menelusuri setiap gambar (i) dan mengubahnya menjadi gambar (i+10) sehingga angka yang didiagnosis akan muncul sebagai gambar 11 hingga 20.
Langkah 32: Analisis Statistik
1. 'Actual_Diagnosis_Matrix' digunakan untuk membandingkan hasil dengan diagnosis resmi yang ditemukan dalam file txt. 10 angka nol pertama menunjukkan bahwa 10 gambar pertama seharusnya normal. 10 yang terakhir menunjukkan bahwa 10 gambar terakhir harus diklasifikasikan sebagai retinopati diabetik.
2. Tanda sama dengan ganda yang digunakan untuk membuat 'number_correct' membuat larik logis dengan membandingkan nilai elemen yang sesuai dari 'Actual_Diagnosis_Matrix' dengan 'Diagnosis_Matrix' yang dibuat dari loop for.
Untuk setiap elemen yang cocok dengan diagnosis, angka 1 akan ditambahkan, artinya kode mendiagnosis gambar tersebut dengan benar. Jika salah itu akan menambahkan 0 ke matriks.
Kemudian, mengambil jumlah itu menambahkan semua yang. Dengan kata lain, ia menemukan jumlah gambar yang didiagnosis dengan benar.
3. 'Final_percentage_correct' adalah persentase yang dihitung dari seberapa akurat kode yang mendiagnosis retinopati diabetik. Jumlah gambar yang didiagnosis dengan benar dibagi 20 (jumlah total gambar) dan dikalikan dengan 100 untuk menemukan persentase diagnosis yang berhasil.
Langkah 33: Menemukan Interval Keyakinan
1. Pastikan Anda telah mengunduh ModWald.m untuk memanggilnya sebagai sebuah fungsi. Tanpa fungsi, Anda harus menghitung sendiri interval kepercayaan menggunakan metode Wald yang dimodifikasi.
2. Fungsi ModWald memiliki 2 input di mana yang pertama adalah jumlah gambar yang diidentifikasi dengan benar, dan yang kedua adalah jumlah total gambar.
3. Fungsi ModWald akan menampilkan batas bawah dan atas interval kepercayaan proporsi untuk keakuratan data sampel. Dengan kata lain, Anda akan memberikan interval persentase di mana persentase sebenarnya dari akurasi kode akan berada.
4. Gunakan fprintf di bawah ini untuk menampilkan statistik dan interval kepercayaan ke jendela perintah.
> fprintf('%.0f persen gambar retina didiagnosis dengan benar menurut diagnosis resmi. \n\n', Final_percentage_correct)
> fprintf('Persentase sebenarnya di mana kode kami akan mendiagnosis retinopati diabetik dengan benar\n akan\n jatuh ke dalam kisaran [%.3f, %.3f], berdasarkan 20 gambar sampel \n', batas_bawah, batas_atas)
Direkomendasikan:
Mengontrol Led Melalui Aplikasi Blynk Menggunakan Nodemcu Melalui Internet: 5 Langkah
Mengontrol Led Melalui Aplikasi Blynk Menggunakan Nodemcu Melalui Internet: Halo Semua Hari Ini Kami Akan Menunjukkan Kepada Anda Bagaimana Anda Dapat Mengontrol LED Menggunakan Smartphone Melalui Internet
Bantuan Parkir Mudah Perbaikan / Diagnosis: 4 Langkah
Parking Assist Easy Repair / Diagnose: Ok mari kita mulai, saya memiliki Chevrolet Avalanche 2010 dan memiliki 4 sensor bantuan parkir di bemper belakangnya. Keras ini dapat digunakan pada dan kendaraan sejauh pengetahuan saya, apakah Anda memiliki depan atau Rea atau keduanya. Jadi saya pergi ke favorit saya
Panduan Pengkodean / Diagnosis BMW INPA E60: 4 Langkah
Panduan Coding / Diagnosis BMW INPA E60: Pada artikel ini, saya akan mengumpulkan beberapa kasus tentang kasus kerja BMW INPA pada BMW E60, dan jika Anda memiliki kasus BMW INPA E60 lainnya yang ingin dibagikan kepada orang-orang, silakan kirim ke email saya. akan meletakkannya di sini untuk membagikannya
Kontrol Perangkat Melalui Internet Melalui Browser. (IoT): 6 Langkah
Kontrol Perangkat Melalui Internet Melalui Browser. (IoT): Dalam Instructable ini saya akan menunjukkan kepada Anda bagaimana Anda dapat mengontrol perangkat seperti LED, Relay, motor dll melalui internet melalui web-browser. Dan Anda dapat mengakses kontrol dengan aman melalui perangkat apa pun. Platform web yang saya gunakan di sini adalah kunjungan RemoteMe.org
Mentransfer File Melalui LAN Anda Melalui BitTorrent: 6 Langkah
Mentransfer File Melalui LAN Anda Melalui BitTorrent: Terkadang Anda mungkin perlu mentransfer file melalui jaringan ke beberapa komputer. Meskipun Anda dapat meletakkannya di flash drive atau CD/DVD, Anda harus pergi ke setiap komputer untuk menyalin file dan mungkin perlu beberapa saat untuk menyalin semua file (terutama dengan f