此代码仅估算图像中对象的边界以供进一步处理
f = imread(ImageFile);
i = rgb2gray(f);
threshold = graythresh(i);
bw = im2bw(i, threshold);
imshow(bw)
se = strel('disk',3);
bw = imclose(bw,se);
bw = bwareaopen(bw, 30);
[B,L] = bwboundaries(bw,'noholes');
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end
但是,当我使用this one进行尝试时,我得到incorrect results
(我尝试了更多图片,但无法发布更多链接)
结果甚至没有接近完美。我尝试使用维纳滤镜,它平滑了图像的左侧部分,但右侧部分仍然有很多噪音。中位数过滤器会使情况变得更糟。
减少这种噪音的最有效方法是什么?此外,我正在寻找一个通用的解决方案,以便当我使用具有相似背景的图像时它仍然有效。