Menemukan jari-jari r bola yang tumpang tindih dalam gambar 3D

9

Masalah saya saat ini:

  • Saya memiliki input gambar biner 3D (matriks 3D yang hanya memiliki 0 dan 1) yang terdiri dari angka acak bola dengan jari-jari r.
  • Kita tidak tahu berapa banyak bola yang ada di gambar.
  • Semua bola memiliki jari-jari r yang sama, tetapi kita tidak tahu jari-jari r.
  • Bola berada di semua tempat dalam gambar dan dapat saling tumpang tindih.
  • contoh gambar diberikan di bawah ini.

Persyaratan saya:

  • apa radius r?

Saat ini, saya cukup meratakan gambar untuk menghilangkan sumbu z dan melakukan deteksi tepi dan saya mencoba Hough Transform menggunakan: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

Namun, dengan Hough Transform, saya melihat bahwa variabel radius minimum, radius maksimum, dan jumlah lingkaran harus ditentukan. Saya telah mencoba beberapa upaya di bawah ini:

radius yang dikenal

radius tidak diketahui

Dengan parameter yang benar, Hough Transform dapat mendeteksi lingkaran dengan baik. Tetapi dalam aplikasi nyata, saya tidak tahu berapa banyak bola yang ada, dan membuat program yang mencoba menebak radius minimum dan maksimum tampaknya tidak layak. Apakah ada cara lain untuk mencapai ini?

Cross-link: /math/118815/finding-radius-r-of-the-overlappable-spheres-in-3d-image

Karl
sumber
Edit pertanyaan Anda dan tambahkan deskripsi format gambar input.
Format gambar input adalah gambar 3D biner.
Karl
Masalah Anda tampaknya tidak dibatasi, kecuali jika Anda bermaksud mengatakan bahwa bola tidak dapat saling tumpang tindih.
ObscureRobot
Tidak, bola bisa saling tumpang tindih. Dalam kasus termudah, tidak ada bidang yang tumpang tindih sama sekali, tetapi ini tidak selalu benar.
Karl

Jawaban:

9

Solusi yang lebih sederhana dan jauh lebih efisien secara komputasi jika dibandingkan dengan Hough Transform adalah dengan menggunakan transformasi jarak:

  • Temukan permukaan bola Anda (yaitu piksel yang memiliki nilai 1 dan memiliki setidaknya satu piksel tetangga 0);
  • Hitung transformasi jarak sehubungan dengan permukaan bola, tetapi membatasi komputasi hanya untuk piksel yang internal ke bola. Outputnya akan berupa peta jarak;
  • Jari-jari akan persis nilai maksimum di peta jarak Anda.

Keuntungan lain dari solusi ini jika dibandingkan dengan transformasi Hough adalah bahwa ia memberikan nilai yang jauh lebih tepat untuk jari-jari.

Alceu Costa
sumber
Tetapi jika dua bola tumpang tindih, bukankah maksimumnya adalah jarak yang lebih jauh dari sisi yang jauh dari bola yang satu ke sisi yang jauh dari bola yang lain?
endolith
1
@endolith Tidak, karena jarak mentransformasikan nilai piksel yang diberikan (voxel), dalam hal ini, sesuai dengan jarak ke permukaan bola terdekat.
Alceu Costa
3

Transformasi Hough tidak, dalam bentuk umumnya, memerlukan tebakan pada jari-jari lingkaran yang Anda cari atau berapa jumlahnya. Mungkin Anda telah disesatkan oleh sumber Anda. Transformasi dapat menjadi mahal secara komputasi dalam bentuk paling umum; informasi apa pun yang Anda miliki dapat membuat eksekusi algoritma lebih cepat dan lebih akurat.

Saya berharap Hough Transform, memberikan gambar input Anda, untuk menemukan jari-jari bola dengan akurasi yang masuk akal; ada banyak titik dalam gambar yang mewakili titik pada keliling lingkaran dengan jari-jari yang sama.

Mengingat radius itu, Anda tampaknya memiliki sisa masalah yang retak sehingga saya tidak akan menulis lagi.

Saya melihat bahwa penjelasan Wikipedia tentang Hough Transform juga menunjukkan bahwa ia dapat digunakan untuk menemukan objek 3D dalam gambar 3D, asalkan objek-objek itu dapat diparameterisasi - yang tentunya bisa berupa bola.


sumber