Segmentasi organ pernapasan otomatis

Segmentasi paru-paru manual membutuhkan waktu sekitar 10 menit dan memerlukan keterampilan tertentu untuk mendapatkan hasil berkualitas tinggi yang sama dengan segmentasi otomatis. Segmentasi otomatis membutuhkan waktu sekitar 15 detik.


Saya berasumsi bahwa tanpa jaringan saraf akan mungkin untuk mendapatkan akurasi tidak lebih dari 70%. Saya juga berasumsi, bahwa operasi morfologis hanya persiapan gambar untuk algoritma yang lebih kompleks. Tetapi sebagai hasil dari pemrosesan itu, meskipun hanya sedikit, 40 sampel data tomografi yang ada, algoritma ini melakukan segmentasi paru-paru tanpa kesalahan. Selain itu, setelah pengujian dalam lima kasus pertama, algoritme tidak berubah secara signifikan dan benar bekerja pada 35 studi lain tanpa mengubah pengaturan.


Juga, jaringan saraf memiliki kelemahan - untuk pelatihan mereka, kami membutuhkan ratusan sampel pelatihan paru-paru, yang perlu ditandai secara manual.



Konten



Struktur sistem pernapasan


Sistem pernapasan meliputi saluran udara dan paru-paru. Saluran udara dibagi menjadi saluran udara atas dan bawah. Titik pemisahan antara saluran pernapasan bawah dan atas adalah titik persimpangan esofagus dan saluran udara. Semua organ yang berada di atas laring adalah saluran atas dan laring serta organ di bawahnya adalah saluran bawah.


Daftar organ pernapasan:


Rongga hidung adalah rongga berisi udara antara hidung dan faring.
Faring adalah saluran tempat makanan dan udara mengalir.
Trakea adalah tabung yang terhubung ke laring dan bronkus.
Pangkal tenggorokan bertanggung jawab atas pembentukan suara. Itu adalah pada tingkat vertebra serviks C4-C6.
Bronkus adalah saluran pernapasan, bagian utama yang terletak di dalam paru-paru.
Paru - paru adalah organ pernapasan utama.



Skala Haunsfield


Godfrey Hounsfield adalah seorang insinyur listrik Inggris yang, bersama dengan ahli teori Amerika Allan Cormack, mengembangkan computed tomography, di mana ia berbagi Hadiah Nobel pada 1979.



Skala Hounsfield - adalah skala kuantitatif untuk menggambarkan radiodensitas, yang diukur dalam satuan Hounsfield, dilambangkan sebagai HU.


Radiodensitas dihitung berdasarkan koefisien atenuasi radiasi. Koefisien atenuasi mencirikan seberapa mudah volume material dapat ditembus oleh radiasi.


Radiodensitas dihitung dengan rumus:


$$ menampilkan $$ {μ_ {X} -μ_ {water} \ lebih dari μ_ {water} -μ_ {air}} \ kali 1000 $$ menampilkan $$


dimana μX,μwater,μairadalah koefisien atenuasi linier untuk bahan yang diukur, air dan udara.


Radiodensitas dapat menjadi negatif karena nol radiodensitas sesuai dengan air. Ini berarti bahwa semua bahan yang memiliki koefisien atenuasi yang lebih rendah daripada koefisien atenuasi air (misalnya, jaringan paru-paru, udara) akan memiliki radiodensitas negatif.


Radiodensitas perkiraan untuk berbagai jaringan tercantum di bawah ini:


  • Udara: -1000 HU.
  • Organ pernapasan: dari -950 hingga -300 HU.
  • Darah (tanpa membedakan pembuluh): dari 0 hingga 100 HU.
  • Tulang: 100 hingga 1000 HU.


Tautan ke Wikipedia: Skala Hounsfield , Godfrey Hounsfield , koefisien atenuasi .


Morfologi matematika


Operasi morfologis adalah alat utama yang digunakan dalam algoritma.
Di bidang visi komputer, operasi morfologis disebut sekelompok algoritma untuk transformasi bentuk objek. Paling sering, operasi morfologis diterapkan pada gambar-gambar yang ter-binarisasi di mana unit-unit berhubungan dengan objek voxel, dan nol untuk dikosongkan.
Operasi morfologi utama meliputi:


Pelebaran morfologis adalah penambahan voxel baru ke semua voxel tepi benda. Dengan kata lain, algoritma memindai semua voxel yang sesuai dengan tepi objek dan memperbesarnya menggunakan kernel dengan bentuk tertentu (sphere, cube, cross dll). Kernel memiliki jari-jari sendiri (untuk bola), atau lebar sisi (untuk kubus). Operasi ini sering digunakan untuk menggabungkan beberapa objek terdekat menjadi satu objek.


Erosi morfologis adalah cut-off dari semua voxel yang terletak di perbatasan (batas) objek. Operasi ini terbalik ke pelebaran. Operasi ini berguna untuk menghilangkan noise yang berbentuk banyak benda kecil yang saling berhubungan. Namun, metode penghilangan kebisingan ini seharusnya hanya digunakan jika objek yang diinginkan memiliki ketebalan yang jauh lebih besar dari jari-jari erosi. Jika tidak, informasi yang berguna akan hilang.


Penutupan morfologis adalah pelebaran diikuti oleh erosi. Ini digunakan untuk menutup lubang di dalam objek dan untuk menggabungkan objek di dekatnya.


Pembukaan morfologis adalah erosi yang diikuti oleh pelebaran. Ini digunakan untuk menghilangkan objek noise kecil dan untuk memisahkan objek menjadi beberapa objek.



Algoritma Lee dan kompresi RLE


Untuk memilih objek dalam volume voxel yang ter-binarisasi, algoritma Lie digunakan. Awalnya algoritma ini diciptakan untuk menemukan jalan keluar terpendek dari labirin. Kami menggunakannya untuk memilih objek dan memindahkannya dari satu array tiga dimensi voxels ke yang lain. Gagasan dasar dari algoritma terdiri dalam gerakan paralel di semua arah yang mungkin dari titik awal. Untuk kasus tiga dimensi, dimungkinkan untuk bergerak dalam 26 atau 6 arah dari satu voxel.


Untuk mengoptimalkan kinerja, algoritma enkode run-length diterapkan. Gagasan utama dari algoritma adalah bahwa urutan satu dan nol digantikan oleh digit yang sama dengan jumlah elemen dalam urutan. Misalnya, string "00110111" dapat diganti dengan: "2; 2; 1; 3 ". Ini mengurangi jumlah akses memori.



Tautan Wikipedia: Algoritma Lee , Algoritma RLE .


Transformasi ambang batas dari volume dasar


Menggunakan tomograf diperoleh data tentang radiodensitas pada setiap titik ruang yang dipindai. Voxel udara memiliki radiodensitas berkisar antara -1100 hingga -900 HU, dan voxel organ pernapasan memiliki radiodensitas dari -900 hingga -300 HU. Oleh karena itu, kita dapat menghapus semua voxel yang tidak perlu dengan radiodensitas lebih besar dari -300 HU. Hasilnya, kami memperoleh volume voxel ter-biner yang hanya berisi organ pernapasan dan udara.



Penghapusan udara eksternal


Untuk mengelompokkan udara internal tubuh, kami menghapus semua objek yang berdekatan dengan sudut volume 3D. Jadi, kami menghilangkan udara eksternal.



Namun, tidak dalam semua kasus udara di dalam tabel tomograf akan dihapus, karena mungkin tidak memiliki koneksi dengan sudut volume 3D.



Oleh karena itu, kami tidak hanya akan memindai sudut, tetapi juga semua voxel yang terletak di salah satu bidang tepi f. Tapi, seperti yang bisa kita lihat pada gambar di bawah, paru-paru juga diangkat. Ternyata trakea juga memiliki koneksi dengan bidang atas volume 3D.



Kami harus mengeluarkan bidang atas dari area pemindaian. Ada juga penelitian di mana paru-paru tidak sepenuhnya ditangkap dan bidang yang lebih rendah terhubung ke paru-paru.
Jadi jika Anda mau, Anda bisa mengecualikan pesawat yang lebih rendah juga.



Tetapi metode ini hanya memengaruhi studi dada. Dalam hal penangkapan volume penuh tubuh, koneksi udara internal dan eksternal melalui rongga hidung akan muncul. Oleh karena itu, perlu untuk menerapkan erosi morfologis untuk memisahkan udara internal dan eksternal.



Setelah menerapkan erosi, kita dapat kembali ke metode segmentasi udara eksternal yang diperoleh sebelumnya yang didasarkan pada konektivitas udara eksternal dengan bidang samping volume 3D.



Setelah segmentasi udara eksternal, kita dapat langsung mengurangi udara eksternal dari seluruh volume udara dan paru-paru dan untuk mendapatkan udara internal tubuh dan paru-paru. Tapi ada satu masalah. Setelah erosi, beberapa informasi tentang udara eksternal hilang. Untuk mengembalikannya, kami menerapkan dilatasi udara eksternal.



Selanjutnya, kita kurangi udara eksternal dari seluruh udara dan organ pernapasan dan dapatkan udara internal dan organ pernapasan.




Segmentasi objek volume maksimum


Selanjutnya, kami mengelompokkan organ pernapasan sebagai objek maksimum dalam volume. Organ pernapasan tidak memiliki hubungan dengan udara di dalam saluran pencernaan.



Perlu dicatat bahwa pemilihan ambang radiodensitas yang tepat pada langkah awal adalah penting. Kalau tidak, dalam beberapa kasus, mungkin tidak ada koneksi antara kedua paru-paru sebagai akibat dari resolusi rendah. Sebagai contoh, jika kita mengasumsikan bahwa voxel pada organ pernapasan memiliki radiodensitas dari -500 HU dan kurang, maka dalam kasus di bawah ini, segmentasi organ pernapasan sebagai objek terbesar dalam volume akan menyebabkan kesalahan, karena tidak ada hubungan antara dua paru-paru. Oleh karena itu, ambang batas harus ditingkatkan menjadi -300 HU.



Menutup pembuluh di paru-paru


Untuk menangkap pembuluh di dalam paru-paru kita akan menggunakan penutupan morfologis, yaitu pelebaran diikuti oleh erosi dengan jari-jari yang sama. Radiodensitas pembuluh darah (tanpa kontras) adalah sekitar 0,100 HU.



Dalam gambar kita dapat melihat bahwa saluran darah besar tidak tertutup. Tetapi ini tidak perlu. Tujuan dari operasi ini adalah untuk menghancurkan banyak lubang kecil di dalam paru-paru untuk menyederhanakan proses segmentasi paru-paru pada langkah selanjutnya.


Algoritma segmentasi organ pernapasan


Hasilnya, kami memperoleh algoritma segmentasi organ pernapasan berikut:


  1. Transformasi ambang batas dari volume dasar dengan ambang "<-300 HU".
  2. Erosi morfologis dengan jari-jari 3 mm untuk pemisahan udara eksternal dan internal.
  3. Segmentasi udara eksternal berdasarkan konektivitas udara eksternal dengan bidang sisi batas volume 3D.
  4. Pelebaran morfologis udara eksternal untuk mengembalikan informasi yang hilang setelah erosi.
  5. Pengurangan udara eksternal dari seluruh udara dan organ pernapasan untuk mendapatkan udara internal dan organ pernapasan.
  6. Segmentasi objek volume maksimum.
  7. Penutupan morfologis pembuluh di paru-paru.


Implementasi algoritma di MATLAB


Fungsi "getRespiratoryOrgans"


% Returns the whole respiratory organs volume (lung and airway volume) % without separating of the left and right lung. % V = base volume with radiodensity data in Hounsfield units. % cr = radius of vessels morphological closing. % ci = iteration count of vessels morphological closing (fe 3-times % make dilation and after that 3-times make erosion. function RO = getRespiratoryOrgans(V,cr,ci) % Threshold transform of the base volume with the threshold level "<-300 HU". AL=~imbinarize(V,-300); % Morphological erosion with the 3 mm radius for the separation of external % and internal air. SE=strel('sphere',3); EAL=imerode(AL,SE); % Segmentation of external air based on external air connectivity with the % boundary side planes of the 3D volume. EA=getExternalAir(EAL); % Morphological dilation of the external air to restore the information lost % after the erosion. DEA=EA; for i=1:4 DEA=imdilate(DEA,SE); DEA=DEA&AL; end % Subtraction of the external air from the whole air and respiratory organs to % obtain the internal air and respiratory organs. IAL=AL-DEA; % Segmentation of the maximum volume object. RO=getMaxObject(IAL); Morphological closing of the vessels inside the lungs. RO=closeVoxelVolume(RO,3,2); 

Fungsi "getExternalAir"


 % Returns the volume which is connected with the edge surfaces of % the voxel scene (except the top surface, because lungs can have % a connection with the top surface). % EAL = eroded lung-and-air binarized volume. function EA = getExternalAir(EAL) % The “bwlabeln” function segments objects: voxels of a one object % equates to 1, and of another one - to 2, etc. V=bwlabeln(EAL); % We request such characteristics of the objects as bounding box and % list of all object voxels. R=regionprops3(V,'BoundingBox','VoxelList'); n=height(R); % Create a 3D matrix for storing external air voxels. s=size(EAL); EA=zeros(s,'logical'); % Scan all the objects to find objects belonging to the external air. for i=1:n % Define the minimum and maximum x and y coordinates of the object. x0=R(i,1).BoundingBox(1); y0=R(i,1).BoundingBox(2); x1=x0+R(i,1).BoundingBox(4); y1=y0+R(i,1).BoundingBox(5); % If the edge voxels of the object are in contact with the side planes of % the 3D volume, then copy all the voxels of this object into the matrix EA. if (x0 < 1 || x1 > s(1)-1 || y0 < 1 || y1 > s(2)-1) % Convert the object voxel coordinates data to the matrix type: % [[x1 y1 z1] [x2 y2 z3] ... [xn yn zn]]. mat=cell2mat(R(i,2).VoxelList); ms=size(mat); % Fill the matrix containing the voxels of the external air. for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); EA(x,y,z)=1; end end end 

Fungsi "getMaxObject"


 % Returns the largest object in the voxel volume V. % O = the voxels of the largest object. % m = the volume of the largest object. function [O,m] = getMaxObject(V) % Segment the objects. V=bwlabeln(V); % Reqiest the information about the objects volume and objects voxel coordinates. R=regionprops3(V,'Volume','VoxelList'); % Determine the index of the maximum volume object. v=R(:,1).Volume; [m,i]=max(v); % Create the 3D matrix for storing the largest object voxels. s=size(V); O=zeros(s,'logical'); % Copy the largest object voxels to the new matrix. mat=cell2mat(R(i,2).VoxelList); ms=size(mat); for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); O(x,y,z)=1; end 

Kode sumber dapat diunduh dengan referensi .


Kesimpulan


Artikel berikut akan menjadi:


  1. segmentasi trakea dan bronkus;
  2. segmentasi paru-paru;
  3. segmentasi lobus paru.

Algoritma berikut akan dipertimbangkan:


  1. transformasi jarak;
  2. transformasi tetangga terdekat, juga dikenal sebagai transformasi fitur;
  3. perhitungan nilai eigen dari matriks Hessian untuk segmentasi objek 3D datar;
  4. segmentasi DAS.

Source: https://habr.com/ru/post/id461329/


All Articles