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 :