手机屏幕贴合项目(回顾和总结,那个最重要的算法,开头)

接着上一节,相机取了8副像,两个矩形的8个角都在图像里头,你可以想象以下相机和cg,dito的关系,最初我们的硬件如下:

8,gb_analyzeByFour(int type)//計算及分析

    float dAngle=0.0;    //紀錄分析得到的角度偏差, 不能初始化為0
    float dx=0,dy=0;    //recode x, y offset

我们8副图像在m_DlgCCDViewArr[2][4]这里头,这是一个基于ni图像处理类,我们下一节详细介绍以下,以后evsion,visionpro都可以用这一个类,包括我们现在自己的megauging图像处理api,也可以把他们在类中替换掉,替换掉ni国外图像处理软件,这是我最初写视觉软件的想法。

    for (int i=0;i<2;i++)
    {  
            for (int j=0;j<4;j++)
            {
                if (!this->m_DlgCCDViewArr[i][j].m_GaugeOK )
                {
                    this->m_DlgCCDViewArr[i][j].ShowWindow(SW_HIDE);
                    this->m_DlgCCDViewArr[i][j].RefreshWindowGauge();
                    this->m_DlgCCDViewArr[i][j].MatchImage();
                }
                //m_Result.MatchScore處理Match得分低的情況
                if (this->m_DlgCCDViewArr[i][j].m_Result.MatchScore<300.0)//this->m_MatchOption.minMatchScore)
                {
                    this->m_Counter.ERR_Match++;
                    ShowMsgToUser("重新學習match");
                    this->SaveLog("重新學習match");
                    result = 2;//重新Match
                    break;
                }

                if(j==0 )
                {
                    m_WorldPoint[i][j].b = this->m_DlgCCDViewArr[i][j].m_Intersection.x/*+ (i-1)*gb_offset[m_CurrClamp].dx*/;
                    m_WorldPoint[i][j].a = -this->m_DlgCCDViewArr[i][j].m_Intersection.y  + (this->m_pCCDCurrPath.pPoint->x/MotionRatio) /*+ (i-1)*gb_offset[m_CurrClamp].dy*/;//原來為-
                    
                }.........................

你可以看到,通过这个ni图像类处理后,两个矩形的八个角坐标就得到了,在m_DlgCCDViewArr[i][j].m_Intersection(x,y)里头。当然最初的8副图像就是传到这个类里头的。

现在,这个类的作用很明显,有图像输入,有结果输出。

这个类里,我最喜欢的单词gauge(十年后,突然发现,杨振宁第二次诺贝尔获奖那篇论文题目,最醒目的一个字,就是这个gauge)也在,他是怎么处理的呢?首先想到的是,相机,轴,载具不在一个平面里头,我们应该把他正投影到一个平面坐标系里,然后关系就很明显,就像我们前头想的两个矩形一一对应的边平行,中心重合,就ok了,实际也是这样来的,所有代码看懂后,就是如此,问题是,不好看啊!当初我有一两年都在看这个程序,学习vc++,并且现场跟机,处理现场问题,绝招就是挤时间,偷学。

m_WorldPoint[2][4],看到没,这个就是最后统一坐标系中的8个角的坐标。

m_Intersection是什么意思,十字交叉点,意思很明确,就是矩形中每相邻两边,就会有一个十字交叉点,我们初中学过几何,都知道。但要在图像中找到这直线,很难啊!所以当初就用ni的图像卡尺工具来gauge,原来我最早想这个问题时,我知道了houghline,道理很简单,可以试试,代替ni找线的卡尺工具,两条线相交,初中数学也能实现,关键用c++要实现,现在我megauging也可以实现相应功能,但我权衡后,没有用houghline,为什么?

下一节,待续,详细算法介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值