Diperlukan operasi pemrosesan gambar sebelum pencocokan templat

13

Nah, ini mungkin menunjukkan saya tidak mengambil kelas pemrosesan gambar.

Saya memiliki template ini untuk mencocokkan objek dalam gambar. Tetapi objek nyata dalam gambar, misalnya, tidak terlihat seperti itu tetapi gambar kedua. Operasi apa yang harus saya ambil untuk gambar seperti yang kedua agar siap untuk pencocokan template? FYI, gambar ketiga menunjukkan pencocokan yang ideal.

Dalam ide lain, saya memasangkan template ke gambar. Yaitu, saya memberikan empat koordinat sudut pada gambar untuk mencocokkan dengan yang ada di templat. Kemudian akan menghitung cara agar sesuai dengan templat ke area.

UPDATE: Masalah terpecahkan. Berkat jawaban yang saya pilih di bawah ini. Saya berhasil menerapkan template saya pada gambar. Gambar terakhir menunjukkan hasilnya.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Tae-Sung Shin
sumber
Anda tidak akan cocok dengan kotak putih itu, bukan? Anda ingin mencocokkan kotak warna-warni yang sebenarnya di gambar kedua Anda, kan?
endolith
@ endolith saya pikir baik-baik saja
Tae-Sung Shin
dapatkah Anda membagikan konsep dasar algoritma Anda? saya perlu melakukan hal yang sama untuk grafik.
Gilad

Jawaban:

9

Gambar sampel yang Anda posting memiliki perspektif yang relatif kuat (tidak dicitrakan langsung dari arah permukaan normal) yang dapat menyebabkan masalah dengan teknik pencocokan templat menggunakan pemrosesan blok. Saya berasumsi bahwa Anda harus mengambil gambar dengan perspektif yang kuat sehingga hal pertama yang ingin kami lakukan adalah memperkirakan transformasi gambar yang akan menghapus proyeksi perspektif dan akan menghasilkan gambar yang diperbaiki ("gambar lurus").

Memperbaiki proyeksi perspektif saat bentuk diketahui

Tujuan akhir dari preprocessing adalah untuk menemukan sudut-sudut dari persegi panjang abu-abu yang merupakan latar belakang bagan warna. Saya mulai dengan hanya melakukan thresholding dengan nilai konstan. Sastra / web memiliki banyak informasi tentang cara melakukan thresholding ketika gambar memiliki pencahayaan yang tidak merata, tetapi jika Anda bisa, cobalah untuk memperbaiki pengaturan pencitraan sehingga pencahayaannya relatif merata.

Dibatasi dengan nilai konstan

Saya berasumsi bahwa bagan warna mengambil porsi layar yang cukup besar, sehingga ini mungkin merupakan wilayah kontinu terbesar dari gambar. Ada banyak fungsi pelabelan hitam dan putih (MATLAB bwlabel, IPP LabelMarkers, OpenCV memiliki cvblob perpustakaan eksternal) yang akan memberikan masing-masing wilayah terhubung indeks masing-masing. Setelah pelabelan, Anda dapat menghitung area komponen yang terhubung menggunakan histogram dan kemudian memilih komponen dengan area terbesar.

Temukan gumpalan terbesar

Biasanya ide yang baik untuk mengisi komponen sehingga komponen tidak memiliki lubang, ini mengurangi jumlah piksel tepi.

Isi gumpalan

Sekarang kita dapat menggunakan operator pencarian tepi (saya menggunakan metode berbasis gradien, tetapi Anda juga dapat melacak tepi dengan mengikuti piksel putih yang terhubung ke piksel hitam) untuk mendapatkan piksel milik boarder.

Temukan tepi

Karena objek yang kami minati adalah persegi panjang, saya memasang empat garis ke tepi piksel menggunakan fitting garis kuat (RANSAC). Setelah menemukan garis baru, saya menghapus semua titik yang dekat dengan garis yang ditemukan, ini memaksa operasi pemasangan berikutnya untuk mengembalikan tepi objek lainnya. Akhirnya ketika semua tepi ditemukan, saya menghitung semua persimpangan yang mungkin antara himpunan garis. Dari himpunan poin yang dihasilkan saya menghapus semua poin di luar gambar.

Sekarang kita memiliki sudut-sudut bagan warna dan seperti yang kita ketahui dimensi dari bagan, kita dapat menghitung matriks transformasi (homografi, proyeksi antara dua pesawat. Gunakan transformasi linear langsung (DLT) untuk menyelesaikan ) antara koordinat milimeter dan koordinat piksel.HH

x=HX

Matriks transformasi ini kemudian dapat digunakan untuk mengubah gambar asli sedemikian rupa sehingga bagan warna dicitrakan langsung dari arah permukaan normal.

Paskan garis ke tepi

Seperti dapat dilihat hanya distorsi radial yang tersisa. Ketika kami menggunakan transformasi untuk transformasi gambar (interpolasi 2D), kami memilih koordinat interpolasi sedemikian rupa, sehingga kita tahu resolusi yang tepat dari gambar, yang berarti bahwa kita sekarang tahu misalnya ukuran huruf.H

Jika kami masih ingin melakukan beberapa pencocokan templat, kami dapat menggunakan metode pencocokan templat yang layak. Metode ini tidak harus rotasi / skala invarian karena gambar sudah diperbaiki.

Perspektif yang benar

buq2
sumber
1

Mulai dengan deteksi tepi. Kemudian gunakan transformasi Hough untuk mendeteksi garis lurus. Kemudian cari tahu garis mana yang paralel dan mana yang harus tegak lurus. Kemudian perkirakan transformasi proyektif sehingga garis-garis yang seharusnya tegak lurus sebenarnya tegak lurus.

Dima
sumber