Tôi có một hình ảnh RGB với các dấu hiệu khác nhau. Mục tiêu chính của tôi là đếm các dấu hiệu tiếp xúc với đường viền hình ảnh.
Cách tiếp cận và vấn đề
Tôi bắt đầu bằng cách tải hình ảnh [Hình. 1], sau đó chuyển đổi nó thành thang độ xám và áp dụng bộ lọc trung vị để loại bỏ nhiễu [Hình. 2]. Sau đó, tôi đã binarized nó với ngưỡng 0,2, kết quả là Hình 3. Lúc này tôi đã có hình ảnh nhị phân của mình, nhưng vấn đề là một số phần thuộc cùng một dấu hiệu xuất hiện ở nhiều vùng khác nhau, thay vì chỉ một. Bây giờ mục tiêu của tôi là hợp nhất các vùng thuộc cùng một đối tượng, do đó tôi có thể sử dụng bwlabelđể đếm xem có bao nhiêu dấu hiệu trong ảnh và sử dụng imclearborderđể loại bỏ các vùng trong đường viền và sử dụng bwlabellại để có sự khác biệt giữa cả hai.
Biện pháp của tôi là sử dụng bwmorph, Dilatelàm giãn các đối tượng và sau đó cố gắng lấp đầy chúng với imfill, holes. Nhưng vấn đề là nếu tôi làm giãn chúng với một lượng nhỏ [Hình. 4], imfilldường như không lấp đầy chúng, nếu tôi làm giãn chúng ra một lượng lớn [Hình 5] tất cả các đối tượng bắt đầu hợp nhất :(
Mã
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)
Số liệu
Hình 1 :
Hình 1 http://dl.dropbox.com/u/5272012/1.png
Hình 2 :
hình 2 http://dl.dropbox.com/u/5272012/2.png
Hình 3 :
hình 3 http://dl.dropbox.com/u/5272012/3.png
Hình 4 :
hình 4 http://dl.dropbox.com/u/5272012/4.png
Hình 5 :
