打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
halcon二维测量
halcon二维测量的基本步骤
1.图片预处理,这里指的是图片的滤波等手段,使要测量的特征凸显化,有效去除噪点干扰等。
2.阈值化,通过阈值化抽取出图像的特征,通常使用灰度阈值化,但halcon中没有特意的将图片转换成灰度图,而是直接调用阈值化处理函数。同时灰度直方图能帮助开发人员快速找到阈值范围。
3.阈值化之后是求解图片的联通区域,一般阈值化之后存在很多连通区域,还要使用select_shape函数根据条件筛选出满足条件的连通区域。也可以自行筛选。
4.之后就是形体的拟合(也称为轮廓处理),这一步更具实际情况和需求,可有可无。
5.获取形体的特征数据,这些数据就是测量数据,包括位置,内拟合矩形、外拟合矩形尺寸,内拟合、外拟合园尺寸等。


在进入正式的二维测量之前,需要有一个ROI,所有的图片处理都在这里完成,ROI的生成有两种基本方案,用户自己选择和使用模板匹配来选择一个区域。这个区域的选择好坏,对处理的难度影响很大。

二维测量的halcon代码:
read_image(Image, 'C:/Users/Public/Documents/MVTec/HALCON-12.0/examples/images/bonds/ball_bond_ccd_03.png')
median_image(Image,ImageMedian, 'circle', 5, 'mirrored')
threshold(ImageMedian,ROI,120,255)
connection(ROI,connRegion)
select_shape(connRegion,selRegion,'area','and',1000,90000)

这段代码简单,目的是利用halcon工具找到预处理滤波器类型和参数,阈值处理参数和形体筛选参数。
以下是对应的c++代码:
void TestProc2d ::proc(HImage & image)
{
                m_display->SetColor( 'red');
                m_display->SetDraw( 'margin');

                 HImage medImage = image .MedianImage('circle',3, 'mirrored');

                 HRegion roiREgion;
                roiREgion.GenRectangle1(m_roi.row1,m_roi.col1,m_roi.row2,m_roi.col2);
                 HImage redMianImage = medImage.ReduceDomain(roiREgion);

                 HRegion thedRangion = redMianImage.Threshold(120,255);
                 HRegion connRegion = thedRangion.Connection();
                 int n = connRegion.CountObj();
                 for(int i = 1; i<=n;>
                {
                                 Hlong r1,r2,c1,c2;
                                connRegion[i].SmallestRectangle1(&r1,&c1,&r2,&c2);
                                 qDebug()  'conn object : ' < r1="">< c1="">< r2="">< c2=""> '(' < r2-r1=""> ',' < c2-c1=""> ')';
                }

                 HRegion selRegion = connRegion.SelectShape('area', 'and',500,900000);
                n = selRegion.CountObj();
                 qDebug() 'connect count : ' < connregion.countobj()=""> '       sel count : ' <>
                 for(int i = 1; i<=n;>
                {
                                 Hlong r1,r2,c1,c2;
                                selRegion[i].SmallestRectangle1(&r1,&c1,&r2,&c2);
                                m_display->DispRectangle1(r1,c1,r2,c2);
                                 qDebug()  'select obj : ' < r1="">< c1="">< r2="">< c2=""> '(' < r2-r1=""> ',' < c2-c1=""> ')';
                }
}


二维图像处理的难点:
1.ROI区域的确立,我们的期望是ROI中仅包含我们要测量的对象,仅一个对象,但这很难做到,所以我们力求这个ROI区域越 精确越好。建立这个ROI区域,调试时一般手动绘制确定,实际项目中一般使用模板匹配确定一个大的区域,再通过这个大的区域的相对区域确定最终的ROI。所以寻找测量目标的特征,确定模板区域也无比重要。

2.图片的拍摄质量,这里的拍摄质量不是指的清晰度,而是区分测量对象和非测量对象的难以程度。我们最希望的是在灰度上,被测量对象和非测量对象有明显的差异,易于形体划分,当然颜色也是一个很好的区分对象。为了达到这个目的,我们首先要使用不同的光源、选择不同的角度照射使其凸显,其次可以选择不同的镜头和光圈予以辅助(当然,镜头的核心目的是选择视场)。

3.形体的筛选,通常情况下我们处理后会得到好多对象,从中筛选出测量对象相当关键,这里可能是测量过程中人工智能技术最易介入的地方。通常可以根据面积,外接矩形长宽等特征筛选,选择用哪种方法完全取决于被测对象的特征,希望使用他的唯一性特征来筛选。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Halcon 3 ---- 像素和亚像素
任务态fMRI测量的重测可靠性:新的实证证据和元分析
《HALCON机器视觉与算法原理编程实践》第11章 模板匹配
Halcon学习(五)获取特征点
用Matlab来识别视频中物体的运动轨迹!
浅谈机器视觉之BLOB图像处理技术
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服