Saya baru belajar tentang SURF dan saya akan implementasinya, tetapi saya masih tidak mengerti mengapa kami menggunakan deskriptor.
Saya mengerti apa yang merupakan titik kunci dan tujuan mereka, tetapi ketika kita mengekstrak titik kunci daripada mengapa kita perlu menggunakan deskriptor? Apa pentingnya dan peran mereka dalam pengakuan?
Jawaban:
Satu hal penting yang perlu dipahami adalah bahwa setelah mengekstrak titik kunci, Anda hanya mendapatkan informasi tentang posisi mereka , dan kadang - kadang area jangkauan mereka (biasanya didekati dengan lingkaran atau elips) pada gambar. Walaupun informasi tentang posisi kunci sering kali berguna, ia tidak mengatakan banyak tentang titik kunci itu sendiri.
Bergantung pada algoritma yang digunakan untuk mengekstrak keypoint (SIFT, Harris sudut, MSER), Anda akan mengetahui beberapa karakteristik umum dari keypoint yang diekstraksi (misalnya mereka berpusat di sekitar gumpalan, tepi, sudut yang menonjol ...) tetapi Anda tidak akan tahu betapa berbedanya atau titik kunci yang serupa adalah dengan yang lain.
Berikut adalah dua contoh sederhana di mana hanya area posisi dan keypoint tidak akan membantu kami:
Jika Anda memiliki gambar A (dari beruang dengan latar belakang putih), dan gambar lain B, salinan persis A tetapi diterjemahkan untuk beberapa piksel: kunci tombol yang diekstraksi akan sama (pada bagian yang sama dari beruang itu). Kedua gambar itu harus dikenali sama, atau serupa.
Tetapi, jika satu-satunya informasi yang kami miliki adalah posisi mereka, dan itu berubah karena terjemahan, Anda tidak dapat membandingkan gambar.
Jika Anda memiliki gambar A (misalkan, bebek kali ini), dan gambar lain B, persis bebek yang sama dengan A kecuali dua kali ukurannya: kunci tombol yang diekstraksi akan sama (bagian bebek yang sama). Itu juga gambar yang sama (mirip).
Tapi semua ukurannya (area) akan berbeda: semua titik kunci dari gambar B akan dua kali ukuran dari yang dari gambar A.
Jadi, inilah deskriptor : mereka adalah cara untuk membandingkan titik kunci. Mereka meringkas, dalam format vektor (dengan panjang konstan) beberapa karakteristik tentang titik kunci. Misalnya, bisa jadi intensitas mereka ke arah orientasi mereka yang paling menonjol. Ini memberikan deskripsi numerik ke area gambar yang mengacu pada titik kunci.
Beberapa hal penting untuk deskriptor adalah:
mereka harus independen dari posisi keypoint
Jika titik kunci yang sama diekstraksi pada posisi yang berbeda (misalnya karena terjemahan) deskriptor harus sama.
mereka harus kuat terhadap transformasi gambar
Beberapa contoh adalah perubahan kontras (misalnya gambar dari tempat yang sama selama hari yang cerah dan berawan) dan perubahan perspektif (gambar bangunan dari kanan-tengah dan kiri-tengah, kami masih ingin mengenalinya sebagai bangunan yang sama) .
Tentu saja, tidak ada deskriptor yang benar-benar kuat terhadap semua transformasi (atau terhadap setiap transformasi jika kuat, misalnya perubahan besar dalam perspektif).
Deskriptor yang berbeda dirancang agar kuat terhadap transformasi yang berbeda yang terkadang bertentangan dengan kecepatan yang dibutuhkan untuk menghitungnya.
mereka harus berskala independen
Deskriptor harus mempertimbangkan. Jika bagian "menonjol" dari satu titik kunci adalah garis vertikal 10px (di dalam area melingkar dengan jari-jari 8px), dan bagian menonjol dari garis vertikal lain dari 5px (di dalam area melingkar dengan jari-jari 4px) - titik kunci ini harus diberikan deskriptor yang serupa.
Sekarang, setelah Anda menghitung deskriptor untuk semua keypoinst, Anda memiliki cara untuk membandingkan titik kunci tersebut . Untuk contoh sederhana pencocokan gambar (ketika Anda tahu gambar-gambar itu dari objek yang sama, dan ingin mengidentifikasi bagian-bagian dalam gambar yang berbeda yang menggambarkan bagian adegan yang sama, atau ingin mengidentifikasi perubahan perspektif antara dua gambar) , Anda akan membandingkan setiap deskriptor keypoint dari satu gambar dengan setiap deskriptor keypoint dari gambar lainnya. Karena deskriptor adalah vektor angka, Anda dapat membandingkannya dengan sesuatu yang sederhana seperti jarak Euclidian . Ada beberapa jarak yang lebih kompleks yang dapat digunakan sebagai ukuran kesamaan, tentu saja. Tetapi, pada akhirnya, Anda akan mengatakan itutitik kunci yang deskriptornya memiliki jarak terkecil di antara keduanya adalah cocok, misalnya "tempat" yang sama atau "bagian dari objek" dalam gambar yang berbeda.
Untuk penggunaan titik kunci / deskriptor yang lebih kompleks , Anda harus melihat pertanyaan ini - khususnya "pendekatan lokal tingkat rendah" dalam jawaban saya dan pendekatan "Kata-kata" dalam jawaban @Maurits . Juga, tautan yang disediakan dalam jawaban itu bermanfaat.
sumber
Mari kita pikirkan deskriptor ideal untuk memahami ide tersebut. Deskriptor yang ideal adalah fungsi dari ruang pixel ke ruang lain, sehingga objek yang sama memiliki hasil yang sama , sedangkan objek yang berbeda memiliki hasil yang berbeda.
Misalnya, jika Anda memotret dua gambar dengan objek yang sama tetapi dengan tingkat eksposur yang berbeda, Anda akan mendapatkan versi gambar yang berlipat ganda. Seorang deskriptor yang akan mengambil piksel dan menormalkannya dengan rata-rata dan tingkat deviasi standar mereka akan memiliki hasil yang sama, mengatakan bahwa kedua objek ini adalah sama. Itu bagus, karena memungkinkan kami mencocokkan dengan benar
Dengan demikian, deskriptor Anda diperlukan untuk mencocokkan objek yang sama dengan benar.
sumber