C# 基于OpenCv的视觉工作流-章44-直线卡尺

C# 基于OpenCv的视觉工作流-章44-直线卡尺

本章目标:
一、卡尺原理;
二、卡尺制作;
三、卡尺定位;
四、卡尺找点;
五、拟合直线;

直线查找,用霍夫直线、边缘提取等方法也可实现,但选取的直线,需过滤处理,且当目标发生位置、角度变化时,过滤的复杂程度变得更难以捉摸。

工业应用中,要对工件进行直线查找测量,往往有更高的要求,如明确性、简单性、高效性、可控性、稳定性等,而稳定性、可控性更是关注重点。稳定性不够就会把合格的判定为不合格,相反类同;可控性要求对算法实现可控、对识别过程可控;给持续优化、提升带来更多的理论依据,由此引出了一种实用的方式,直线卡尺。

一、卡尺原理

在图像中,一条直线表现出来的形式,往往是颜色发生剧烈变化的地方(详细阅读章13-边缘提取),将这些地方瓜分细化来看,其实就是一个个的像素点。反过来,如果先找到这些颜色变化剧烈的交界点,再将这些点拟合成直线,也就找到了所需的直线。

1、划分区域

一条直线,用两个点就可以定义,所以不用捕捉交界处的所有像素点,仅需捕捉到交界处一定数量的代表点即可。本例中将卡尺划分为多个可指定数量的ROI区域,每个ROI区域计算出一个代表点。

2、区域代表点

通过ROI区域,截取出此局部图像,再将图像进行按行或列投影,得到仅一个像素一行或仅一个像素一列的图像,即按行或按列统计像素值(参考章34-投影向量)。

如下图,统计出的像素值结果是一个数组,而数组中像素值发生剧烈变化的地方即为交界点,交界点一般有两处,上升沿和下降沿,至于要取哪个点作为代表点,则由指定的搜索方向决定。本例中如果设置由黑到白取直线,则为上长沿点,由白到黑取直线,则为下降沿点。

二、卡尺制作

卡尺制作需较强的C#基础知识,本文仅介绍关键点,要完全掌握需亲身试验。

1、绘制矩形ROI

创建矩形可如下使用,参数含义网络查询即可;

RectangleF rect = new RectangleF(x, y, width, height);

2、绘制可拖拽的控制小框

同1绘制小的矩形框及圆,接着判断鼠标在控制框时,拖拽实现ROI宽高及角度控制。

3、绘制箭头(扫描方向)

绘制箭头用C#直线绘制,画3根直线即可。需要注意的是箭头方向,随着ROI旋转时自动旋转方向,要点是判断ROI旋转度数在0-360度之间,什么度数,箭头需要何时反向及转多少度。

4、绘制卡尺框

卡尺ROI即图中的青色框,根据设置个数,自动根据红色ROI尺寸,划分为指定个数;

三、卡尺定位

卡尺定位需与模板匹配相互配合,由模板匹配定位出工件的整体位置(解决工件摆放位置、角度的变化问题),在整体位置的坐标基础上,通过仿射变换(参考章20-仿射变换)定位出卡尺位置。

四、卡尺找点

遍历所有模板匹配的匹配对象,根据卡尺定位,截取ROI局部区域图像,按步骤一中描述的原理计算取得各代表点。

五、拟合直线

OpenCv拟合直线可如下使用:

var line = Cv2.FitLine(pointList, DistanceTypes.L2, 0, reps, aeps);

其中:参数1,点数组;

参数2,为距离计算方式;

参数3,为距离计算的附加参数;

参数4,为半径精度(直线到原点的距离精度阈值,默认 0.01)‌,数值越小,精度越高;

参数5,为角度精度(直线方向向量的角度变化阈值,默认 0.01),数值越小,精度越高;

参考链接

https://blog.csdn.net/weixin_40280870/article/details/131351519

https://blog.csdn.net/qq_37299618/article/details/119606955

https://blog.csdn.net/qq_42857680/article/details/126500909

"VisionTool 探迹"免费视觉工具

下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i

"VisionTool Halcon"付费视觉工具

下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?

对应系列文章"C# 基于Halcon的视觉工作流",欢迎前往阅读。

上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!

相关推荐
Easy_API15 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo15 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
紧跟先前的步伐15 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
释厄62316 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
老金带你玩AI16 小时前
集万家所长,一键复制的Agent.md!
人工智能
ZhuoAIStage16 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
小奶包他干奶奶17 小时前
AI学习——1、机器学习概念
人工智能·机器学习
展讯快报17 小时前
悬浮提词器免费App评估报告:说得AI的免费策略与可用性分析
人工智能
Yuzhiyuxia17 小时前
【AI Agent面试系列】AI Agent记忆机制知识点1
人工智能·面试·职场和发展
2601_9654488717 小时前
AI视频制作:做系列历史人物视频音色不搭,AI 音色克隆的方法实测
人工智能·音视频