Pemrosesan Gambar Moyamoya: 8 Langkah
Pemrosesan Gambar Moyamoya: 8 Langkah
Anonim
Pemrosesan Gambar Moyamoya
Pemrosesan Gambar Moyamoya

Moyamoya, "kepulan asap," adalah penyakit langka yang disebabkan oleh penyumbatan arteri di ganglia basal, yang merupakan area di dasar otak. Penyakit ini merupakan penyakit serebrovaskular progresif yang paling banyak menyerang anak-anak. Gejala moyamoya termasuk stroke awal, stroke ringan konstan, kelemahan otot, kelumpuhan, atau kejang akibat penyempitan arteri yang progresif. Tanpa pengobatan, moyamoya akan menyebabkan masalah dengan bicara, gangguan sensorik, dan kesadaran yang rusak. Dalam proyek kami, kami akan menggunakan MATLAB untuk memproses gambar MRI atau MRA menggunakan berbagai filter untuk mengurangi noise di dalam gambar untuk menemukan area yang terpengaruh. Selain itu, kami akan menggunakan peningkatan fitur untuk menemukan area yang terkena dampak dengan lebih tepat. Selain itu, kami kemudian akan menjalankan uji-t sampel independen untuk menentukan apakah ada perbedaan yang signifikan antara jumlah pembuluh darah di otak normal dibandingkan dengan otak yang terkena moyamoya.

Langkah 1: Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya

Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya
Temukan Pemindaian MRI dan MRA dari Otak Normal dan Otak yang Terkena Moyamoya

Gambar-gambar ini adalah pindaian yang kami gunakan untuk proyek yang kami temukan secara online. Dua gambar dengan pembuluh darah yang terletak di tengah adalah scan MRA, sedangkan dua gambar lainnya adalah scan MRI.

Tautan berikut adalah tempat gambar-gambar ini ditemukan:

static.cambridge.org/resource/id/urn:cambr…

static.cambridge.org/resource/id/urn:cambr…

Langkah 2: Muat Gambar Ke MATLAB dan Tetapkan Gambar ke Variabel untuk Menampilkan Gambar

Muat Gambar Ke MATLAB dan Tetapkan Gambar ke Variabel untuk Menampilkan Gambar
Muat Gambar Ke MATLAB dan Tetapkan Gambar ke Variabel untuk Menampilkan Gambar

Untuk memulai proses, mulailah dengan membersihkan jendela perintah, tutup semua kemungkinan angka dan grafik yang mungkin sudah terbuka dan hapus variabel yang sudah ditetapkan di ruang kerja Anda.

Setelah itu, buat perulangan for dari 1 ke 2 menggunakan perintah i = [1:2]

Setelah itu, muat gambar MRA menggunakan perintah imread(sprintf('filename%.filetype', i)) untuk membaca gambar dari file yang ditentukan dengan nama file diikuti dengan nomor yang digunakan untuk loop menggunakan sprintf untuk memuat dan menetapkan batch itu ke sebuah variabel.

Kemudian untuk menampilkan gambar dalam gambar, gunakan perintah imshow(I).

Untuk menetapkan peta warna abu-abu, gunakan perintah colormap(abu-abu).

Untuk sepenuhnya menghilangkan warna dan mengubah matriks 3D untuk gambar menjadi 2D, gunakan perintah rgb2gray(I) dan tetapkan ke variabel terpisah.

Kemudian muat gambar MRI dengan menggunakan perintah yang dinyatakan sebelumnya atau imread(sprintf('filename%.filetype', i)) dan tetapkan ke variabel baru

Ulangi perintah rgb2gray dengan variabel baru yang digunakan untuk gambar MRI.

Jika perlu, Anda dapat mengubah ukuran gambar menggunakan perintah imresize(A, scale) dan menetapkan ke variabel terpisah.

Langkah 3: Tingkatkan Struktur Memanjang dalam Gambar Intensitas Dengan Penyaringan Multiskala

Tingkatkan Struktur Memanjang dalam Gambar Intensitas Dengan Penyaringan Multiskala
Tingkatkan Struktur Memanjang dalam Gambar Intensitas Dengan Penyaringan Multiskala

Menggunakan variabel baru, gunakan perintah fibermetric(A) untuk meningkatkan struktur tubular pada gambar

Dengan variabel sebelumnya, gunakan perintah histeq(B) untuk meningkatkan pemerataan histogram dengan mengubah intensitas gambar dan menetapkannya ke variabel baru.

Menampilkan histogram menggunakan perintah imhist(B)

Buat variabel baru untuk membuat ambang batas filter. Dalam hal ini menetapkan variabel sebelumnya> 0,875, menyaring intensitas piksel di bawah nilai 0,875

Setelah itu, buat gambar baru dan gunakan perintah imshow(A) untuk menampilkan gambar baru yang difilter.

Langkah 4: Jalankan Filter Median 2D

Jalankan Filter Median 2D
Jalankan Filter Median 2D

Menggunakan perintah medfilt2(A, [m n]), jalankan filter median 2D, di mana setiap piksel keluaran berisi nilai median dalam batas mxn di sekitar piksel masing-masing pada gambar masukan.

Buat gambar baru dan gunakan imshow(A) untuk menampilkan median gambar yang difilter.

Langkah 5: Tutupi Gambar

Tutupi Gambar
Tutupi Gambar

Menggunakan median gambar yang difilter, gunakan perintah [labeledImage, numberOfBlots] = bwlabel(A) untuk menghitung jumlah bercak putih pada gambar

Kemudian, gunakan fungsi region props states = regionprops(labeledImage, 'Area') untuk menghitung luas setiap noda atau pembuluh darah

Tetapkan semua area menjadi satu variabel

Kemudian menggunakan variabel lain, hitung jumlah blot yang melebihi 50 piksel

Setelah itu, urutkan blot yang berada di bawah 50 piksel dalam urutan menurun menggunakan perintah [sortedAreas, sortedIndicies] = sort(Area, 'descend')

Kemudian, menggunakan variabel lain, gunakan perintah ismember(labeledImage, sortirIndicies(1:numberToExtract)) untuk mengembalikan array dengan elemen berlabelImage yang ditemukan di sortIndicies dari nomor 1 hingga jumlah pembuluh darah untuk mengembalikan logika 1 (benar) atau logika 0 (salah).

Dengan variabel di langkah sebelumnya, temukan titik yang benar (nilai > 0) dan buat array logis untuk membuat gambar biner dan tetapkan ke variabel baru.

Buat gambar baru dan gunakan imshow(A) gambar biner baru.

Kemudian, balikkan gambar menggunakan perintah imcomplement(A) dan tetapkan ke variabel yang berbeda.

Untuk membuat gambar bertopeng, gunakan variabel baru dengan perintah resizedimage.*uint8(invertedimage)

Buat gambar baru dan gunakan imshow(A) untuk menampilkan gambar bertopeng.

Untuk mengakhiri seluruh kode, pastikan untuk menggunakan perintah 'end' untuk mengakhiri keseluruhan for loop

Langkah 6: Pilih Pemindaian MRA untuk Pengujian Statistik

Pilih Pemindaian MRA untuk Pengujian Statistik
Pilih Pemindaian MRA untuk Pengujian Statistik
Pilih Pemindaian MRA untuk Pengujian Statistik
Pilih Pemindaian MRA untuk Pengujian Statistik
Pilih Pemindaian MRA untuk Pengujian Statistik
Pilih Pemindaian MRA untuk Pengujian Statistik

Untuk mempersiapkan pengujian statistik, pilih pemindaian MRA yang akan digunakan untuk uji-t sampel independen. Karena dua sampel kami adalah otak yang terkena Moyamoya, dan otak normal, pilih jumlah pemindaian MRA yang layak untuk setiap kelompok.

Langkah 7: Hitung Luas Pembuluh Darah dalam Persiapan untuk Pengujian Statistik

Hitung Luas Pembuluh Darah dalam Persiapan untuk Pengujian Statistik
Hitung Luas Pembuluh Darah dalam Persiapan untuk Pengujian Statistik

Tes statistik akan fokus pada panjang atau jumlah pembuluh darah yang ditunjukkan pada pemindaian MRA. Jadi, kita harus menghitung luas pembuluh darah sebelum membandingkan.

Mulailah dengan menyaring MRA otak normal dan menghitung jumlah pembuluh darah. Untuk melakukan ini, jalankan for loop. Karena ada tiga gambar, maka kondisinya adalah i = [1:3].

Buka gambar dengan perintah imread dan tetapkan ke variabel.

Selanjutnya, buat pernyataan if/else dengan perintah if, else. Untuk pernyataan if, gunakan perintah size(A, 3)==3, di mana A adalah variabel yang digunakan untuk membuka gambar, untuk membuat pernyataan if ketika dimensi ketiga array adalah 3. Kemudian konversi gambar ke 2D dan singkirkan warna menggunakan perintah rgb2gray(A) dan tetapkan ke variabel baru. Gunakan perintah imresize(A, [m n]) untuk mengubah ukuran gambar. Dalam hal ini, kami mengubah ukuran gambar menjadi matriks 1024 x 1024. Untuk meningkatkan struktur tubular gambar, gunakan perintah fibermetric lagi, dan tetapkan ke variabel baru.

Berikut ini untuk pernyataan else. Jika gambar bukan matriks 3D, kami ingin melewatkan konversi. Lakukan hal yang sama seperti pernyataan if, tetapi tanpa perintah rgb2gray(A).

Buat variabel baru, atur sama dengan variabel dari langkah fibermetric lebih besar dari 0,15. Ini ambang batas gambar untuk intensitas lebih besar dari 0,15.

Kami akan mengulangi baris kode dari langkah 4 dan 5 dari instruksi dari garis median filter sampai garis imshow(I). Setelah itu, gunakan perintah sum(I(:)) untuk menjumlahkan semua piksel yang membentuk pembuluh darah, dan menetapkannya ke variabel terpisah. Beri nama variabel baru NormalBloodVessels(i) dan atur sama dengan variabel dari perintah sum(I(:)). Ini menambahkan data ke matriks.

Akhiri loop dan ulangi tetapi untuk MRA otak yang dipengaruhi oleh Moyamoya. Beri nama variabel di akhir MoyaMoyaBloodVessels(i) agar tidak bingung dengan MRA otak normal.

Langkah 8: Jalankan Uji-T Sampel Independen

Jalankan Uji-T Sampel Independen
Jalankan Uji-T Sampel Independen

Karena ada dua sampel independen, dan populasi kecil, jalankan uji t sampel independen.

Buat dan beri nama fungsi yang menjalankan uji t sampel independen untuk menentukan apakah jumlah pembuluh darah di MRA otak normal secara signifikan sama atau tidak dengan MRA otak yang terkena Moyamoya.

Tampilkan hipotesis yang ditetapkan untuk pengujian dengan menggunakan perintah disp('X'). Pada baris pertama, tampilkan, "Hipotesis untuk dua uji t sampel." Pada baris kedua, tampilkan, "H0 = Jumlah pembuluh darah otak normal sama dengan jumlah pembuluh darah otak dengan penyakit Moyamoya," untuk menyatakan hipotesis nol. Pada baris ketiga, ditampilkan, "HA = Jumlah pembuluh darah otak normal tidak sama dengan jumlah pembuluh darah otak penderita penyakit Moyamoya." untuk menyatakan hipotesis alternatif.

Dengan menggunakan interval kepercayaan 95% dan ukuran sampel 3, hitung skor t dengan menggunakan perintah tinv([0.025 0.975], 2) dan tetapkan ke variabel t. Gunakan perintah var(NormalBloodVessels) dan var(MoyaMoyaBloodVessels) dan tetapkan ke variabel untuk menghitung varians dari kedua kumpulan data.

Periksa apakah variansnya mendekati sama atau tidak. Lakukan ini dengan membuat pernyataan if/else dengan perintah if, else. Untuk kondisi pada pernyataan if, tulis A/B == [0.25:4], dimana A adalah variabel yang menyatakan varians pembuluh darah normal dan B adalah variabel yang menjelaskan varians dari pembuluh darah Moyamoya. 0,25 dan 4 berasal dari perkiraan umum untuk menentukan apakah varians sama atau tidak. Kemudian jalankan uji t dua sampel dengan [h, p] = ttest2(A, B, 0,05, 'keduanya', 'sama'), dengan A dan B adalah variabel yang sama seperti yang disebutkan sebelumnya. Untuk pernyataan else, gunakan [h, p] = ttest2(A, B, 0,05, 'keduanya', 'tidak sama') untuk menjalankan uji t dua sampel dalam kasus di mana variansnya tidak sama. Akhiri pernyataan if/else. Ini akan menghitung p.

Buat pernyataan if/else yang akan menampilkan kesimpulan berdasarkan nilai p. Kondisi untuk pernyataan if adalah p > 0,05. Karena kita biasanya gagal menolak hipotesis nol ketika nilai p lebih besar dari 0,05, gunakan perintah disp('X') untuk menampilkan "Karena nilai p lebih besar dari 0,05 kita gagal menolak hipotesis nol," dan " Oleh karena itu kami gagal untuk menolak bahwa jumlah pembuluh darah otak normal sama dengan otak dengan penyakit Moyamoya." Dalam pernyataan lain, karena kami biasanya menolak hipotesis nol ketika nilai p di bawah 0,05, gunakan perintah disp('X') untuk menampilkan "Karena nilai p kurang dari 0,05 kami menolak hipotesis nol," dan " Oleh karena itu kami gagal untuk menolak bahwa jumlah pembuluh darah otak normal tidak sama dengan otak dengan penyakit Moyamoya." Akhiri pernyataan if/else.