Mengapa kami menggunakan deskriptor keypoint?

16

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?

ARG
sumber
Hei, apakah Anda ingin tahu secara khusus tentang SURF, atau apakah pertanyaan Anda lebih umum, "mengapa kita membutuhkan deskriptor untuk titik kunci?" (Baru terinspirasi oleh belajar tentang SURF)
penelope
@penelope Pertanyaan saya lebih umum tentang deskriptor
ARG
3
Saya harap Anda tidak keberatan bahwa saya membuat pertanyaan Anda lebih umum sebelum menjawab.
penelope

Jawaban:

21

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.

Penelope
sumber
jawaban terbaik dan penjelasan yang bagus, menggunakan istilah fitur sama dengan deskriptor? keduanya sama atau berbeda? dan apa arti istilah orientasi dalam berselancar?
ARG
1
Istilah "fitur" sama dengan "keypoint" - itu adalah titik yang menonjol dalam gambar. Descriptor kemudian merupakan "deskriptor keypoint" atau "deskriptor fitur". Sayangnya, saya tidak tahu banyak tentang SURF, itu sebabnya saya bertanya apakah Anda ingin tahu tentang penjelas secara umum atau khusus tentang SURF. Saya tahu bahwa untuk SIFT, orientasinya sangat penting.
penelope
Orientasi istilah tidak khusus digunakan untuk SURF, juga digunakan dalam SIFT, saya hanya ingin tahu tentang hal itu, apa itu
ARG
Anda menghitung "orientasi utama" dari titik kunci, berdasarkan pada gradien lokal. Kemudian, arah itu menjadi "naik" untuk titik puncak saat menghitung gradien untuk mencapai invarian rotasi. Untuk SIFT, Anda memiliki penjelasan yang bagus tentang wikipedia
penelope
:) pertanyaan saya adalah apa itu orientasi? tidak menyaring atau berselancar
ARG
2

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

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Dengan demikian, deskriptor Anda diperlukan untuk mencocokkan objek yang sama dengan benar.

Andrey Rubshtein
sumber