如何检测表面点吗?

9的观点(30天)
朱塞佩·安德里亚摩纳哥
编辑: 图像分析 2020年12月13日
你好,
执行机械测试,我拍照的一个组件在一段固定的时间(例如10分钟)。我画两个点表面的组件使用一个共同的标志,我想评估这个距离变化所有的照片。
我考虑两种方法:
  • Morphlogical(腐蚀和膨胀)提取对象使用regionprops重心;
  • 基于颜色分割:k - means方法和提取对象使用regionprops重心。
两种方法提取两个地区和评价重心和他们的距离。我面临的主要问题是由于不同的散射结果轮廓突显出每张照片。是一种更好的方法可以解决我的问题吗?这可能是最大的准确性可以实现的吗?
形态学算法的方法:
  • 图像裁剪imcrop;
  • 各向异性过滤;
  • 转换成灰度级;
  • 作为refernce imhistmatch考虑第一张照片;
  • 伽马校正;
  • 使用adapthisteq高对比度增强;
  • 使用大津阈值的方法;
  • 二值化;
  • bwareaopen / bwareafilt去除噪声对象;
  • 使用regionprops提取对象。
Pre-prcessing k - means算法:
  • 图像裁剪imcrop;
  • 作为refernce imhistmatch考虑第一张照片;
  • 各向异性过滤;
  • 伽马校正;
  • 对比度增强下面的链接中的示例rgb图像;
  • 使用regionprops提取物体的重心。
untitled.png
减少分散,我想漆表面之前红点,但是我不得到更好的结果。
8 s4a6846.jpg
我希望你能帮我提前谢谢你。
朱塞佩

答案(2)

Afsoon Hatami
Afsoon Hatami 2020年12月13日
嗨. .你找到你的答案吗?我也有同样的问题,我想找到的路径液滴在不同的图像
1评论
图像分析
图像分析 2020年12月13日
看起来不太硬。实际上很简单,如果下降是红色的,背景是灰色的。开始一个新的问题,附上你的原始图像(至少两个我们可以检测重心移动的距离)。

登录置评。


图像分析
图像分析 2020年12月13日
编辑:图像分析 2020年12月13日
看起来不太硬。实际上很简单,如果下降是红色的,背景是灰色的。把原始图像(至少两个我们可以检测重心移动的距离)。尝试的颜色阈值的应用程序选项卡上最初的颜色分割工具丝带。
%演示找到红色的水滴在灰色背景。
%通过图像分析,12月8日,2020年。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
clearvars;
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 16;
流(运行% s的开始。m…\ n”,mfilename);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入colorbar的形象。
文件夹= [];
baseFileName =“红色spots.png”;
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
rgbImage = imread (fullFileName);
(行、列,numberOfColorChannels) =大小(rgbImage)
%显示测试图像尺寸。
次要情节(2,1,1);
imshow (rgbImage []);
轴(“上”,“图像”);
标题= sprintf (参考图片:“% s”的,baseFileName);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%设置图属性:
%全屏放大图。
hFig1 = gcf;
hFig1。单位=“归一化”;
hFig1。WindowState =“最大化”;
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
hFig1。Name =的演示图像分析师”;
%面具找到红色的斑点。
[面具,maskedRGBImage] = createMask (rgbImage);
% 2大气泡。
掩码= bwareafilt(面具,2);
%填补。
= imfill(面具,面具“黑洞”);
%显示测试图像尺寸。
次要情节(2,1,2);
imshow(面具,[]);
轴(“上”,“图像”);
标题= sprintf (“面具形象:“% s”,baseFileName);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
%测量面积、直径和重心。
道具= regionprops(面具,“区域”,“EquivDiameter”,“重心”);
%的地区
allAreas = [props.Area]
allDiameters = [props.EquivDiameter]
xy = vertcat (props.Centroid)
%绘制在掩模图像质心。
持有;
k = 1:长度(道具)
x (k) =道具(k) .Centroid (1);
y (k) =道具(k) .Centroid (2);
情节(x (k), y (k),' r + ',“线宽”2,“markerSize”,50);
结束
流(完成运行% s。m…\ n”,mfilename);
函数[BW, maskedRGBImage] = createMask (RGB)
% createMask阈值从colorThresholder应用RGB图像使用自动生成的代码。
% (BW, MASKEDRGBIMAGE] = createMask (RGB)阈值图像RGB使用
%从colorThresholder应用。色彩和自动生成的代码
%范围内设置每个通道的色彩应用。
在BW %分割掩模返回,面具和复合
%在maskedRGBImage返回原始RGB图像。
%由colorThresholder自动生成应用2020年- 12月13日
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%将RGB图像转换为选择的颜色空间
我= RGB;
%定义通道1基于直方图的阈值设置
channel1Min = 63.000;
channel1Max = 255.000;
%定义通道2基于直方图的阈值设置
channel2Min = 0.000;
channel2Max = 68.000;
%定义通道3基于直方图的阈值设置
channel3Min = 0.000;
channel3Max = 71.000;
%基于直方图阈值选择创建蒙版
sliderBW =(我(::1)> = channel1Min) &(我(:,:1)< = channel1Max) &
(我(::2)> = channel2Min) &(我(:,:2)< = channel2Max) &
(我(::3)> = channel3Min) &(我(:,:,3)< = channel3Max);
BW = sliderBW;
%初始化输出掩盖图像基于输入图像。
maskedRGBImage = RGB;
%设置背景像素,BW假为零。
maskedRGBImage (repmat (~ BW, [1 1 3])) = 0;
结束

类别

找到更多的在图片帮助中心文件交换

社区寻宝

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

开始狩猎!