删除多余的部分形象和保持中心线

10视图(30天)
我目前工作在织物疵点检测项目。我做了预处理和边缘检测的部分。但罗伯茨做的边缘检测使用操作符后,我发现有到很大的噪音在我的图像如下显示
1)前prepreocessing
2)经过预处理和边缘检测:-
我试图用中值滤波操作,从而消除噪声但也把像素从感兴趣的(中心线(图像)Idntfying双刺痛)。
3)中值滤波
我怎样才能解决这个问题
这是我的代码:-
关闭所有;
清晰的所有;
我= imread (“fab_def.jpg”);
I = rgb2gray(我);
I = medfilt2(我);
% I2 = histeq(我);
图;
imshow(我);
[M, N] =大小(我);
% %理想低通滤波
F = fft2(我);
u = 0: (m - 1);
v = 0: (n - 1);
idx =找到(u > M / 2);
u (idx) = u - m (idx);
补贴=找到(v > N / 2);
v(补贴)= v - n(补贴);
[V, U] = meshgrid (V, U);
D =√美国^ 2 + v ^ 2);
% %过滤的图像
P = max (max (F));
H =双(D < = P);%与截止频率比较
G = h . * F;%傅里叶转换图像卷积
g =实际(ifft2(双(g)));%傅里叶反变换
图;
imshow imshow (I),图(g, []);%显示输入和输出图像
% %边缘检测
I3 =边缘(g,“索贝尔”);
图;
imshow (I3);
I3 = medfilt2 (I3);
图;
imshow (I3);
% %侵蚀和稀释
选取= strel (“行”、300、90);
当= imclose (I3,选取);
图;
imshow(预告);

接受的答案

焉耆刘
焉耆刘 2021年9月26日
编辑:焉耆刘 2021年9月26日
先生,可以使用如下的目标位置
clc;
清晰的所有;
关闭所有;
我= imread (“ceshi.jpg”);
I = rgb2gray(我);
I = medfilt2(我);
% I2 = histeq(我);
图;
imshow(我);
[M, N] =大小(我);
% %理想低通滤波
F = fft2(我);
u = 0: (m - 1);
v = 0: (n - 1);
idx =找到(u > M / 2);
u (idx) = u - m (idx);
补贴=找到(v > N / 2);
v(补贴)= v - n(补贴);
[V, U] = meshgrid (V, U);
D =√美国^ 2 + v ^ 2);
% %过滤的图像
P = max (max (F));
H =双(D < = P);%与截止频率比较
G = h . * F;%傅里叶转换图像卷积
g =实际(ifft2(双(g)));%傅里叶反变换
图;
imshow imshow (I),图(g, []);%显示输入和输出图像
% %边缘检测
I3 =边缘(g,“索贝尔”);
图;
imshow (I3);
当= imclose (I3 strel (“行”15,90));
I5 = imopen(预告,strel (“行”5 0));
I5 = bwareaopen (I5 200);
图;
imshow (I5);
% %侵蚀和稀释
选取= strel (“行”、300、90);
16 = imclose (I5,选取);
图;
imshow (16);
I7 = i * uint8 (16);
图;
imshow (I7);

答案(1)

图像分析
图像分析 2021年9月22日
我做的是首先识别大条纹和使用它作为一个面具。然后使用bwareafilt剩下的()。未测试的代码:
horizontalProfile =(面具,1)之和;
情节(horizontalProfile“b -”);
网格;
%发现条纹
阈值= 100;%任何你想要的。
inStripe = bwareafilt (horizontalProfile >阈值,1);
stripeMask = false(大小(面具));
left =找到(inStripe 1“第一”);
rightCol =找到(inStripe 1“最后一次”);
stripeMask (:, left: rightCol) = true;
%创建面具条纹抹去
mask2 =面具;%初始化
mask2 (stripMask) = false;%擦掉
%过滤器根据大小。
smallestAllowableArea = 10;%任何你想要的。
mask2 = bwareafilt (mask2 [smallestAllowableArea,正]);
现在%添加条纹面具
mask2 = mask2 |(面具& stripeMask);

类别

找到更多的在图像处理工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的