Saya telah belajar tentang sejumlah algoritma deteksi tepi, termasuk algoritma seperti metode Sobel, Laplacian, dan Canny. Menurut saya pendeteksi tepi paling populer adalah detektor tepi Canny, tetapi adakah kasus di mana ini bukan algoritma optimal untuk digunakan? Bagaimana saya bisa memutuskan algoritma mana yang akan digunakan? Terima kasih!
algorithms
image-processing
edge-detection
PearsonArtPhoto
sumber
sumber
Jawaban:
Ada banyak kemungkinan deteksi tepi, tetapi 3 contoh yang Anda sebutkan jatuh ke dalam 3 kategori berbeda.
Sobel
Ini mendekati turunan orde pertama. Memberikan ekstrema pada posisi gradien, 0 di mana tidak ada gradien. Dalam 1D, itu adalah =[−101]
Ada alternatif lain untuk Sobel, yang memiliki +/- karakteristik yang sama. Pada halaman Roberts Cross di wikipedia Anda dapat menemukan perbandingan beberapa di antaranya.
Laplace
Ini mendekati turunan urutan kedua. Memberikan 0 pada posisi gradien dan juga 0 di mana tidak ada gradien. Ini memberikan ekstrema di mana gradien (lebih lama) dimulai atau berhenti.
Efek 2 ini pada berbagai jenis tepi dapat dilihat secara visual terbaik:
Cerdik
Ini bukan operator sederhana, tetapi merupakan pendekatan multi-langkah, yang menggunakan Sobel sebagai salah satu langkahnya. Di mana Sobel dan Laplace memberikan Anda hasil grayscale / floating point, yang perlu Anda ambang sendiri, algoritme Canny memiliki penandaan pintar sebagai salah satu langkahnya, jadi Anda hanya mendapatkan hasil biner ya / tidak. Juga, di tepi yang halus, Anda mungkin akan menemukan hanya 1 baris di suatu tempat di tengah gradien.
sumber
Sementara Sobel dan Laplacian hanyalah filter, Canny melangkah lebih jauh dari itu dalam dua cara.
Pertama, ia melakukan penindasan non-maksimum yang menghilangkan noise yang dihasilkan oleh semua jenis objek dan gradien warna dalam suatu gambar. Kedua, itu sebenarnya termasuk langkah yang memungkinkan Anda untuk membedakan antara arah tepi yang berbeda dan untuk mengisi titik yang hilang dari suatu garis.
Dengan kata lain, detektor tepi Canny berada di kelas yang sama sekali berbeda dari Sobel dan Laplacian. Ini jauh lebih pintar karena itu mencakup sejumlah besar pemrosesan pos sedangkan Sobel dan Laplacian hanyalah output filter high pass diikuti oleh linear binary thresholding.
sumber
Dua keputusan paling penting ketika mencoba mendeteksi tepi adalah, bagi saya biasanya:
Bisakah saya mengelompokkan objek, dan kemudian menggunakan operator morfologi untuk menemukan tepi gambar biner (tersegmentasi)? Dengan data bising, ini cenderung lebih kuat.
Filter smoothing pengawet tepi apa yang harus saya gunakan untuk mengurangi noise gambar? Filter tepi didasarkan pada perbedaan, yang akan menderita dengan data berisik. Pilihan paling sederhana adalah median filter, tetapi difusi anisotropik atau nonlokal berarti filter akan menawarkan kinerja yang lebih baik dengan biaya memiliki lebih banyak parameter untuk disesuaikan.
Untuk deteksi tepi itu sendiri, saya tidak bisa berpikir untuk alasan yang baik untuk tidak menggunakan Canny.
sumber
Pendekatan SUSAN
Pendekatan lain untuk deteksi tepi dan sudut adalah pendekatan SUSAN .
Dalam pendekatan ini, daripada pendekatan derivatif, pendekatan pendekatan integral digunakan. Ini memiliki keuntungan tidak hanya dapat mendeteksi tepi, tetapi juga untuk dapat mendeteksi "fitur dua dimensi" (yaitu sudut).
Keuntungan lain dari pendekatan pendekatan integral adalah bahwa kebisingan cenderung kurang berpengaruh pada hasil.
sumber
Canny menghasilkan gambar biner dan bergantung pada ambang batas yang diberikan secara eksternal (yang bergantung pada gambar / aplikasi).
Filter berbasis konvolusi menghasilkan gambar "intensitas ujung". Ini berguna jika berat atau kekuatan tepi penting (misalnya dalam Hough Transform berbobot).
sumber