0

此代码只是估计图像中对象的边界以进行进一步处理

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

它适用于此图像结果正确

但是,当我用这个尝试时,我得到了不正确的结果

(我尝试了更多图片,但无法发布更多链接)

结果甚至还不够完美。我尝试使用维纳滤波器,它平滑了图像的左侧部分,但右侧部分仍然有很多噪点。中值过滤器使情况变得更糟。

减少这种噪音的最有效方法是什么?此外,我正在寻找一个通用的解决方案,这样当我将它与具有相似背景的图像一起使用时,它仍然可以工作。

4

0 回答 0