2012-10-10 70 views
5

Tôi chỉ muốn có một hình ảnh với nho và ba vòng tròn (đỏ, lục, lam). [Tôi cần phải loại bỏ tất cả các vết bẩn]. Tôi làm cách nào để cải thiện mã của mình?Xóa nhiễu khỏi ảnh nhị phân

đây là mã của tôi:

RGB = imread('img_3235.jpg'); 
GRAY = rgb2gray(RGB); 

threshold = graythresh(GRAY); 
originalImage = im2bw(GRAY, threshold); 

originalImage = bwareaopen(originalImage,250); 

imshow(originalImage); 

CC = bwconncomp(originalImage); %Ibw is my binary image 
stats = regionprops(CC,'pixellist'); 

đây là hình ảnh của tôi (img_3235.jpg). enter image description here

và đây là kết quả của mã của tôi: enter image description here

Trả lời

11

Bạn có thể thực hiện một đóng morpholical sử dụng IMCLOSE.

se = strel('disk', 10); %# structuring element 
closeBW = imclose(originalImage,se); 
figure, imshow(closeBW); 

Các closing của A bởi B thu được bằng sự giãn nở của A bằng B, tiếp theo là sự xói mòn của cấu trúc kết quả của B.

Result

+0

nó hoạt động! cảm ơn bạn! Tôi đang cập nhật chủ đề của mình với một vấn đề khác:/cảm ơn bạn! –

+1

@AlonShmiel Tôi rất vui vì nó đã hoạt động: D – Yamaneko

+0

Tôi đã thành công, đừng bận tâm .. cảm ơn bạn rất nhiều !!! –

7

Một giải pháp khác là bộ lọc trung bình với một kích thước cửa sổ thích hợp, ngay sau ngưỡng được áp dụng:

... 
originalImage = im2bw(GRAY, threshold); 
originalImage = medfilt2(originalImage,[37 37],'symmetric'); 
originalImage = bwareaopen(originalImage,250); 
figure, imshow(originalImage); 

enter image description here

+0

cảm ơn bạn! Tôi sẽ kiểm tra tùy chọn nào là cần thiết đối với tôi. Cảm ơn nhiều!! :]] –

Các vấn đề liên quan