Saya memiliki serangkaian gambar yang mewakili kelengkungan rata-rata permukaan belakang manusia.
Yang ingin saya lakukan adalah "memindai" gambar untuk titik-titik yang memiliki "lawan" yang serupa, tercermin di beberapa bagian lain dari gambar (kemungkinan besar simetris dengan garis tengah, tetapi tidak harus karena mungkin ada deformitas). Beberapa teknik menjahit gambar menggunakan ini untuk "mendeteksi secara otomatis" titik-titik yang sama di antara gambar, tetapi saya ingin mendeteksi mereka untuk kedua sisi dari gambar yang sama.
Tujuan utamanya adalah menemukan garis longitudinal kontinu, paling melengkung, yang mungkin membelah punggung secara adaptif dalam "belahan" simetris.
Contoh gambar ditempatkan di bawah ini. Perhatikan bahwa tidak semua wilayah simetris (khususnya, tepat di atas tengah gambar, "strip" merah vertikal menyimpang ke kanan). Wilayah itu harus menerima skor buruk, atau apa pun, tetapi kemudian simetri lokal akan ditentukan dari titik-titik simetris yang ditempatkan lebih jauh. Bagaimanapun, saya harus menyesuaikan algorythm apa pun dengan domain aplikasi saya, tetapi yang saya kejar adalah strategi korelasional / konvolusi / pencocokan pola, pasti ada sesuatu di sekitar saya, saya kira.
(EDIT: ada lebih banyak gambar di bawah ini, dan beberapa penjelasan lainnya)
EDIT: seperti yang diminta, saya akan menyertakan gambar yang lebih khas, baik berperilaku baik dan bermasalah. Tetapi alih-alih gambar yang di-colormapped, itu adalah yang abu-abu, sehingga warna berhubungan langsung dengan besarnya data, yang tidak terjadi dengan gambar berwarna (disediakan hanya untuk komunikasi). Meskipun gambar abu-abu tampaknya kurang kontras dibandingkan dengan yang berwarna, gradien data ada dan dapat dibesarkan dengan beberapa kontras adaptif jika diinginkan.
1) Gambar subjek yang sangat simetris:
2) Gambar subjek yang sama pada saat yang berbeda. Meskipun ada lebih banyak "fitur" (lebih banyak gradien), itu tidak "terasa" begitu simetris seperti sebelumnya:
3) Subjek muda yang kurus, dengan cembung (tonjolan tulang, dilambangkan oleh daerah yang lebih ringan) di garis tengah, bukan garis tengah cekung yang lebih umum:
4) Seorang anak muda dengan deviasi spinal yang dikonfirmasi oleh X-Ray (perhatikan asimetri):
5) Subjek khas "miring" (meskipun sebagian besar simetris di sekitar garis tengah melengkung, dan karena itu tidak benar "cacat"):
Bantuan apa pun disambut baik!
sumber
Jawaban:
Seperti yang telah saya katakan di komentar, pendaftaran gambar medis adalah topik dengan banyak penelitian yang tersedia, dan saya bukan ahli. Dari apa yang saya baca, ide dasar yang umum digunakan adalah untuk mendefinisikan pemetaan antara dua gambar (dalam kasus Anda gambar dan gambar cerminnya), kemudian menentukan istilah energi untuk kelancaran dan untuk kesamaan gambar jika pemetaan diterapkan, dan akhirnya optimalkan pemetaan ini menggunakan teknik optimisasi standar (atau terkadang khusus aplikasi).
Saya telah meretas bersama algoritma cepat di Mathematica untuk menunjukkan ini. Ini bukan algoritma yang harus Anda gunakan dalam aplikasi medis, hanya demonstrasi dari ide-ide dasar.
Pertama, saya memuat gambar Anda, mirror dan membagi gambar-gambar ini menjadi blok-blok kecil:
Biasanya, kami akan melakukan perkiraan pendaftaran yang kaku (menggunakan mis. Titik kunci atau momen gambar), tetapi gambar Anda hampir terpusat, jadi saya akan melewati ini.
Jika kita melihat satu blok dan itu adalah mirror-image counterpart:
Kita dapat melihat bahwa mereka serupa, tetapi bergeser. Jumlah dan arah perubahan adalah apa yang kami coba cari tahu.
Untuk menghitung kesamaan pertandingan, saya bisa menggunakan jarak euclide kuadrat:
Sayangnya, menggunakan data ini adalah pengoptimalan secara langsung lebih sulit dari yang saya kira, jadi saya menggunakan perkiraan urutan kedua sebagai gantinya:
Fungsi ini tidak sama dengan fungsi korelasi aktual, tetapi cukup dekat untuk langkah pertama. Mari kita hitung ini untuk setiap pasangan blok:
Ini memberi kami istilah energi pertama kami untuk optimasi:
variablesX/Y
berisi offset untuk setiap blok, danmatchEnergyFit
mendekati perbedaan euclide kuadrat antara gambar asli dan gambar cermin dengan offset yang diterapkan.Mengoptimalkan energi ini saja akan memberikan hasil yang buruk (jika konvergen sama sekali). Kami juga ingin offset menjadi halus, di mana kesamaan blok tidak menunjukkan apa-apa tentang offset (misalnya di sepanjang garis lurus atau di latar belakang putih).
Jadi kami menyiapkan istilah energi kedua untuk kelancaran:
Untungnya, optimasi terbatas ada di dalam Mathematica:
Mari kita lihat hasilnya:
The
0.1
Faktor sebelumsmoothnessEnergy
adalah bobot relatif energi kelancaran mendapat dalam kaitannya dengan istilah gambar energi pertandingan. Ini adalah hasil untuk bobot yang berbeda:Kemungkinan peningkatan:
sumber
Pertanyaan menarik. Pertama, mungkin Anda mencari pendekatan berdasarkan detektor dan pencocokan keypoint bunga. Ini akan termasuk SIFT (Scale-Invariant Feature Transform), SURF, ORB, dll ... atau bahkan pendekatan yang lebih sederhana yang semata-mata didasarkan pada operator Harris (csce.uark.edu/~jgauch/library/Features/Harris.1988.pdf ). Tidak jelas dari pos Anda tentang apa yang telah Anda coba, jadi saya minta maaf jika saya naif di sini.
Mengatakan itu, izinkan saya mengambil pendekatan yang lebih sederhana dengan Matematika Morfologi (MM) hanya untuk bersenang-senang :) Gambar untuk visualisasi semua langkah ada di akhir.
Saya mengambil sampel gambar Anda dan mengubahnya menjadi L a b * colorspace menggunakan ImageMagick dan hanya menggunakan band L *:
0.png sesuai dengan band L *. Sekarang, saya yakin Anda memiliki data gambar yang sebenarnya, tetapi saya sedang berurusan dengan artefak kompresi jpg dan apa yang tidak. Untuk menangani sebagian masalah ini, saya melakukan pembukaan morfologis diikuti dengan penutupan morfologis dengan cakram datar jari-jari 5. Ini adalah cara dasar untuk mengurangi noise dengan MM, dan mengingat jari-jari disk tidak banyak gambar berubah. Selanjutnya ide saya didasarkan pada gambar tunggal ini, yang memiliki peluang besar gagal untuk kasus lain. Wilayah minat Anda secara visual dibedakan dengan menjadi lebih gelap ("lebih panas" pada gambar warna Anda), jadi saya kira binarizer berbasis statistik dapat bekerja dengan baik. Saya menggunakan pendekatan Otsu, yang merupakan pendekatan otomatis.
Pada titik ini, dimungkinkan untuk memvisualisasikan wilayah pusat perhatian dengan jelas. Masalahnya adalah, dalam pendekatan saya, saya ingin komponennya tertutup tetapi tidak. Saya mulai dengan membuang setiap komponen yang terhubung yang lebih kecil dari yang terbesar (tidak termasuk latar belakang sebagai salah satu dari mereka). Ini memiliki peluang lebih besar untuk bekerja dalam kasus lain jika hasil binarisasi itu bagus. Pada contoh gambar Anda, ada satu komponen yang terhubung ke latar belakang, sehingga tidak dibuang tetapi tidak menyebabkan masalah.
Jika Anda masih mengikuti saya, kami belum menemukan wilayah pusat yang sebenarnya diinginkan. Ini saya ambil. Tidak peduli seberapa lengkung orang itu (sebenarnya saya bisa melihat kasus-kasus bermasalah tertentu), wilayahnya menyerupai garis vertikal. Untuk itu, saya menyederhanakan gambar saat ini dengan melakukan pembukaan morfologis dengan garis vertikal panjang 100. Panjang ini murni arbitrer, jika Anda tidak memiliki masalah penskalaan maka ini bukan nilai sulit untuk ditentukan. Sekarang kita kembali membuang komponen, tetapi saya sedikit lebih berhati-hati pada langkah ini. Saya menggunakan pembukaan dengan area dengan komplemen gambar untuk membuang apa yang saya anggap daerah kecil, ini bisa dilakukan dengan cara yang lebih terkontrol dengan melakukan sesuatu dalam bentuk analisis granulometrik (dari MM juga).
Kami kira-kira memiliki tiga bagian sekarang: bagian kiri gambar, bagian tengah, dan bagian kanan gambar. Bagian tengah diharapkan menjadi komponen yang lebih kecil dari ketiganya, sehingga diperoleh secara sepele.
Ini adalah hasil akhir, gambar kanan bawah hanyalah gambar superposis ke kiri dengan yang asli. Angka-angka individu tidak semua selaras, maaf untuk terburu-buru.
sumber