此代码只是估计图像中对象的边界以进行进一步处理
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
(我尝试了更多图片,但无法发布更多链接)
结果甚至还不够完美。我尝试使用维纳滤波器,它平滑了图像的左侧部分,但右侧部分仍然有很多噪点。中值过滤器使情况变得更糟。
减少这种噪音的最有效方法是什么?此外,我正在寻找一个通用的解决方案,这样当我将它与具有相似背景的图像一起使用时,它仍然可以工作。