手机屏幕贴合项目(ni视觉如何找矩形的角坐标)

首先,我们存储了cg和dito感兴趣八个角图像的模板,用来匹配位置。

cover指的是cg的四个角模板,lcm是dito四个角匹配模板。模板大概样子如下(cg的一个角):

其次,我们采集的8副图像(m_DlgCCDViewArr[2][4])中一定包含匹配模板的特征。

好,我们分析代码如何找角坐标:

第一,m_DlgCCDViewArr[i][j].MatchImage();在图像中找模板

1,调用ni匹配角度限制:MatchPatternOptions options;
    RotationAngleRange rr[2];
    PointFloat poinf;
    float    angle;    
    float angleRangeMin[2] = { pMainDlg->m_MatchOption.anglelower,0 };
    float angleRangeMax[2] = { pMainDlg->m_MatchOption.angleupper,0 };

for (int i = 0 ; i < 2 ; i++)
    {
        rr[i].lower = angleRangeMin[i];
        rr[i].upper = angleRangeMax[i];
    }

2,ni匹配初始设置:

 options.mode =IMAQ_MATCH_SHIFT_INVARIANT;//尺度不变
 options.minContrast =5;// pMainDlg->m_MatchOption.minContrast;最小对比度
    options.angleRanges=rr;角度范围限制
    options.numRanges = 2;
    options.subpixelAccuracy=FALSE;亚像素
    options.numMatchesRequested = 1;
    options.matchFactor =pMainDlg->m_MatchOption.matchFactor;
    options.minMatchScore =pMainDlg->m_MatchOption.minMatchScore; //800;

3,调用ni图像库匹配:(ni喜欢用imaq开头)

 int numMatches = 0;

    PatternMatch* matchInfo=NULL;
    matchInfo = imaqMatchPattern2(m_imgBase, m_imgTemplate, &options,NULL,IMAQ_NO_RECT, &numMatches);//OK

第二,匹配到后,找直线,应该调用ni图像处理库的抓线卡尺: 

1,   this->SearchGauge();

ni图像处理库,还是很复杂,我们捡重点说(我觉得初学用visionpro比较好): FindStraightEdge2();

IVA_FindStraightEdge2(/*roi*/m_rcCurrAreaX,m_AdvEdgeOptionX,l1st,l1en,l1ang);

IVA_FindStraightEdge2(/*roi*/m_rcCurrAreaY,m_AdvEdgeOptionY,l2st,l2en,l2ang);  

2,     imaqGetIntersection(l1st,l1en,l2en,    l2st,&m_Intersection);找到两条线的十字交叉点,其实模板的样子如下:细节上不同

第三,十字交叉点找到了,要通过标定,把像素坐标变换毫米坐标。

这IVA_FindStraightEdge2函数显然是ni的找直线卡尺了,到此,ni的匹配,ni的找直线,和ni的十字交叉点就解释清楚了。

想一想,如果我们自己不用ni,我们最先能实现的肯定是十字交叉点,再就是找直线,初学,匹配肯定是搞不定的。

实际上,在产品万千次生产重复中,我们其实用不到匹配,因为每次的产品细节上不可能差错,显然,以为找直线卡尺有弹性范围,只用直线卡尺,就能搞定问题。因为机器和产品稳定后,轻易不可能动,这个道理是显而易见的。

图像处理算法千千万,当掉落到现实中,我们可能只用那么一点点,所以所有现实的制约,是极有好处的,在自动化中,我们常常会利用这种制约条件,机器视觉也不例外。(所有的制约如果推翻,我们需要重新制造,我们不生产iphone4了,我们要生产iphone4s,iphone5,但实际仍然走的是这条路,大多数是相似,甚至相同,不需要改变,利用制约,顺其自然,一旦我们走上正轨,很多时候,都是在走重复的路,反复的遵从理想而要去创造历史,大多会失败,因为理想是无条件的,新路都是老路上长出来的,好像有人这么说过!)

所以,学习视觉,先懂那么一点点,日积月累。因为人的欲望会把自己压垮,排的满满的,实际是,大多数情况就像,看守机台,大多数情况不会有问题,没事,去小憩一会,一个人看几十台,没一点问题,人生就是这样,如果你在偷的半日闲中,如果领悟了无上的妙理,诗句,或者一点技术,或者一点勇气,其实这辈子就够用了。

其实人生就开挂了,从零到一,从前笨的自己好像变聪明了。

如果有人天天盯着你做事,或者你不放过自己,偷不了那半日闲(小憩),释然的心态去学习,pay attion to 当下(其实就是机器视觉roi),0到1很难跨过去

但无论何时,人生总会从0到1.

其实从机器视觉到人工智能,实际就是iphone4到iphone14,理解这个东西,我花了近十年时间,因为人工智能出现的很多新名词,你都可以在机器视觉(计算机视觉)中找到原型。

原型,prototype。在生产制造中,你经常会看到。我曾经在富士康看到过这个单词,但当时我不认识!

从理想到原型机,这就是我们的人生!

下一节,我们聊一聊图像封装类,待续

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值