matlab - 物体检测
matlab - Object detection
给出下图
而且我必须检测图像右下角的组件。
结果应如下所示:
阈值处理后的侵蚀在代码中如下所示:
clc; close all;
I = imread('Leiterplatte.png');
se = strel('rectangle', [2 4]);
Ie1 = imerode(I,se);
imshow(I);
%figure; histogram(I)
Im = Ie1>40 & Ie1<128;
figure; imshow(Im)
se = strel('rectangle', [8 8]);
Ie = imerode(Im,se);
figure; imshow(Ie)
I(Ie)=255;
figure; imshow(I)
我得到以下结果:
但是检测到的矩形太小,或者如果不是那么斑点仍然在图像中,如下所示:
你快到了。稍微玩一下常量和一个 imopen
删除点的调用就可以完成工作:
I = imread('RuaDN.png');
se = strel('rectangle', [4 8]);
Ie1 = imerode(I,se);
Im = Ie1>70 & Ie1<130;
se = strel('rectangle', [8 16]);
Ie = imopen(Im, se);
O = I;
O(Ie) = 255;
给出下图
而且我必须检测图像右下角的组件。 结果应如下所示:
阈值处理后的侵蚀在代码中如下所示:
clc; close all;
I = imread('Leiterplatte.png');
se = strel('rectangle', [2 4]);
Ie1 = imerode(I,se);
imshow(I);
%figure; histogram(I)
Im = Ie1>40 & Ie1<128;
figure; imshow(Im)
se = strel('rectangle', [8 8]);
Ie = imerode(Im,se);
figure; imshow(Ie)
I(Ie)=255;
figure; imshow(I)
我得到以下结果:
但是检测到的矩形太小,或者如果不是那么斑点仍然在图像中,如下所示:
你快到了。稍微玩一下常量和一个 imopen
删除点的调用就可以完成工作:
I = imread('RuaDN.png');
se = strel('rectangle', [4 8]);
Ie1 = imerode(I,se);
Im = Ie1>70 & Ie1<130;
se = strel('rectangle', [8 16]);
Ie = imopen(Im, se);
O = I;
O(Ie) = 255;