Saya memiliki gambar RGB dengan berbagai tanda. Tujuan utama saya adalah menghitung tanda-tanda yang bersinggungan dengan batas gambar.
Pendekatan dan masalah
Saya mulai dengan memuat gambar [Gbr. 1], lalu mengonversinya menjadi skala abu-abu dan menerapkan filter median untuk menghilangkan beberapa noise [Gbr. 2]. Lalu saya binariasikan dengan ambang batas 0,2, yang menghasilkan Gambar 3. Pada saat ini saya mendapatkan gambar binarisasi saya, tetapi masalahnya adalah bahwa beberapa bagian yang memiliki tanda yang sama muncul di berbagai daerah, bukan hanya satu. Sekarang tujuan saya adalah untuk menggabungkan daerah-daerah yang memiliki objek yang sama, jadi saya bisa gunakan bwlabel
untuk menghitung berapa banyak tanda yang ada dalam gambar, dan gunakan imclearborder
untuk menghilangkan yang ada di perbatasan, dan gunakan bwlabel
lagi untuk mendapatkan perbedaan antara keduanya
Pendekatan saya adalah menggunakan bwmorph
, Dilate
untuk melebarkan objek dan kemudian mencoba untuk mengisinya dengan imfill
, holes
. Tetapi masalahnya adalah jika saya melebarkannya dalam jumlah kecil [Gbr. 4], imfill
sepertinya tidak mengisinya, jika saya melebarkannya dengan jumlah besar [Gambar 5] semua objek mulai bergabung :(
Kode
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
Tokoh
Fig 1 :
Fig 1 http://dl.dropbox.com/u/5272012/1.png
Fig 2 :
fig 2 http://dl.dropbox.com/u/5272012/2.png
Fig 3 :
fig 3 http://dl.dropbox.com/u/5272012/3.png
Fig 4 :
gbr 4 http://dl.dropbox.com/u/5272012/4.png
Fig 5 :
sumber
Jawaban:
Menurut pendapat saya, erosi pelebaran adalah alat yang sangat mendasar. Anda memiliki basis informasi yang sangat kuat dan gambar input yang cukup layak untuk membuat keputusan seperti itu.
Inilah pandangan saya:
Mengingat keberhasilan yang masuk akal yang telah Anda tunjukkan berubah dari Gambar 1 ke 3, Anda dapat mengidentifikasi dan mengelompokkan tanda-tanda individual.
Dengan asumsi bahwa Anda telah mengetahui tanda-tanda sebelumnya, Anda dapat menerapkan algoritma cepat yang layak untuk melakukan pencocokan pola. Dalam kasus jika pola yang tepat tidak diketahui - Anda bisa mengidentifikasi bentuk luar dari pola tersebut.
Berdasarkan klasifikasi, Anda selalu dapat menentukan centroid dari setiap pola yang cocok dan lebar serta tinggi masing-masing. Jika centroid X, posisi Y terlalu dekat dengan perbatasan - mis. atau berada di luar tepi, sama halnya Anda dapat menerapkan untuk sumbu Y juga.c e n t r o i d ( x ) > i m a g e w i d t h - s h a p e w i d t hc e n t r o i d( x ) < 0 c e n t r o i d( x ) > i m a ge w i dt h - s h a p e w i dt h
Mengingat bahwa Anda hanya khawatir tentang apa yang jatuh di tepi - Anda harus mulai dengan masing-masing tepi saja dan mulai pencocokan pola di sana. Mulai cocok dengan parsial pola / bentuk dan jika parsial pola / bentuk melakukan pertandingan yang objek IS dipotong di tepi.
Berikut adalah beberapa referensi yang dapat membantu Anda merumuskan masalah dengan baik.
Makalah ini sangat baik untuk memahami banyak dasar-dasar tentang Tanda / token yang Anda hadapi.
Anil K. Jain dan Aditya Vailaya Pengambilan Berdasarkan Bentuk: Studi Kasus dengan Database Gambar Merek Dagang Pengenalan pola 1998, vol. 31, no9, hlm. 1369-1390
Ada banyak elemen penelitian yang berhubungan dengan pencocokan bentuk / pola parsial atau tertutup.
Eli Saber, Yaowu Xu, A. Murat Tekalp Pengenalan bentuk sebagian oleh pencocokan sub-matriks untuk pelabelan gambar dengan panduan pencocokan sebagian, Pattern Recognition 38 (2005) 1560 - 1573
Akan memperluas jawaban ini untuk kueri yang lebih spesifik jika Anda mengambil pendekatan ini.
sumber
Berikut adalah sedikit inspirasi yang menunjukkan kebalikan dari apa yang Anda cari.
Mulai dengan fig3.
sumber