深圳网站建设服务联系方式,电商网站建设心得,莱阳房产交易网,网站怎样做移动端http://www.cnblogs.com/Lemon-Li/p/3504717.html 图像配准算法一般可分为: 一、基于图像灰度统计特性配准算法#xff1b;二、基于图像特征配准算法#xff1b;三、基于图像理解的配准算法。 其中#xff0c;算法类型二最普遍#xff0c;基于特征的图像配准算法的核心步骤…http://www.cnblogs.com/Lemon-Li/p/3504717.html 图像配准算法一般可分为: 一、基于图像灰度统计特性配准算法二、基于图像特征配准算法三、基于图像理解的配准算法。 其中算法类型二最普遍基于特征的图像配准算法的核心步骤为1.特征提取、2.特征匹配、3.模型参数估计、4.图像变换和灰度插值重采样。 图像配准必须得考虑3个问题: 分别是配准时所用到的空间变换模型、配准的相似性测度准则以及空间变换矩阵的寻优方式。 1空间变换模型是指的这两幅要配准的图像之间的映射模型比如只有旋转、平移这些操作那就是刚体变换模型又比如有缩放操作甚至X方向和Y方向缩放的幅度都还不一样那就是仿射变换或者非线性变换模型。总之你要做配准先要确定这两幅图像之间是一种什么样的映射模型。要是对这个变换模型还不清楚你就到google上或者万方上搜索“仿射变换”、“刚体变换”这些关键词。帖子里不可能讲的太详细。2配准的相似性测度准则。在你确定了变换模型后接下去要做什么当然是确定模型里的参数了而要确定这些参数不同的变换模型参数个数是不一样的像刚体变换有x平移、y平移和旋转角度sita三个参数仿射变换有6个参数你得告诉程序什么参数是最好的或者说是正确的。那么判断什么参数是正确的一个准则就是我们说的配准的相似性测度准则也就是告诉程序在某组参数下是配准的程度是多少显然使得配准程度最好的那组参数就是我们要找的参数。 3空间变换矩阵的寻优方式。因为大多数情况下模型中的参数不是靠解出来的而是要靠“尝试-判断”这种方式去寻找空间变换矩阵的寻优说白了也就是怎么对这些参数进行寻优找出使得配准程度最好的那一组参数的过程。这里有很多方法如遗传算法、粒子群优化算法等等如果你对这些算法都不了解没办法你只有用最笨的遍历式搜索方法了也就是以某一个步距搜索所有的参数组合方式然后找出使得按照相似性测度准则配准程度最高的那一组参数。 举例说明比如有一幅图像A我将A左移了2个像素再往下移了3个像素又顺时针旋转了60度这时的图像我们称作B。如果我们要对A和B进行配准其实就是确定2、3、60这三个参数的过程因为这三个参数一旦确定了我就知道了B和A的对应关系换句话说对于B中的任何一个像素点我就知道在A中对应的是哪个点。这里因为我知道这两幅图只有平移和旋转的变换操作所以我们采用的模型是刚体变换模型实际情况下你如果不知道这两幅图像进行了什么变换操作只有大概根据图像的位置信息揣测了一般情况下非线性变换模型是最正确的但是参数也最多。配准的相似性测度准则这里我们就用简单点的只是举个例子说明下过程事实上的许多情况都要复杂的多以二值化后两幅图像重合的像素点个数为准也就是说我们认为使得两幅图像重合的像素最多的那组参数就是正确的变换参数理论上来讲如果两幅图像严格配准了那么显然他们所有的像素点都是重合的否则就有错开的部分。寻优方法比较啰嗦任何一个优化算法都不是几句话说的明白的这里直接用遍历搜索法吧。因为有三个参数需要寻优因此我们对这三个参数的解空间进行遍历比如对X方向的平移像素个数我们从-100搜索到100步距为1像素对Y方向的平移像素我们也从-100搜索到100步距为1像素对旋转角度我们从0搜索到360度步距为1度。这样等于说要完成一个200*200*360次的循环然后在每次循环里面我们都判断一下按照当次循环参数进行变换后的A图像与B图像的重合像素个数有多少找出200*200*360次循环中使得重合像素个数最多的那组循环中所使用的参数这组参数就是我们所要的结果如果一切正常显然我们会在2360这组参数所在循环中得到重合像素个数最多的结果。而所谓优化算法其实就是用一种更为智能的方式得到2360这三个参数的过程。这样就完成了配准的过程。 多项式模型在两幅图像上找到足够的同名点对然后用多项式模型强行纠正。大小、旋转、噪声等都不是问题。 自己构造算法的话可以这样。假设A为正确位置的图像B是待校正的图像。B图上的任意一点x,y,在校正后图像上的位置应该为u,v有(假设多项式为2阶) u a0 a1*x a2*y a3*x2 a4*y2 a5*x*y v b0 b1*x b2*y b3*x2 b4*y2 b5*x*y 在B图上散布取x,y值在A图的同名点上取uv值当点数足够时解a、b共12个参数。 得到方程后遍历b图所有像元点x,y带入上述公式就得到了全部配准后的位置uv。 自动获取同名点比较困难些其它容易。这个可以多阶但如果像你说的非刚性变化一般3阶就够了。 两点线段匹配选取两幅图的两个应该相同的点一共4个点得到4个点的坐标然后用A图的两点线段与B图的两点线段计算出仿射变换的矩阵再把矩阵应用于整幅图就行了。看看opencv吧好多现成的API函数。 六参数配准仿射变换具体求法:一共是6个参数坐标轴的变化夹角旋转夹角X尺度变化Y尺度变化X平移Y平移。 进行一系列运算过后可以变成一个线性代数式具体怎么变换的不用管比较复杂 u Ax By C v Dx Ey F 其中U,V是目标图的横纵坐标X,Y是原图横纵坐标.也就是说 [u v 1][ A B C;D E F;0 0 1]*[x y z] 具体A-F六个参数的计算可以通过SIFT在两张图中找到足够的尺度不变特征点然后对这些特征点进行匹配。匹配后就能得到很多特征点对。然后建立 u Ax By C v Dx Ey F 这样的方程。一共3对特征点6个方程就足够解6个参数了。但是实际上矩阵空间内三个远远不够。一般要把所有的一起拿来解超定方程组。 至于特征点匹配SIFT应该能算出128位特征描述子用两个点之间的特征描述子的欧式距离可以实现匹配。另外要速度优化的话可以不算这个直接用灰度相关系数和一些其他算法来排除误匹配比如ransac。其实128位特征描述子只有在进行初始配准的时候有用。而且128位空间的欧氏距离计算开销大一般都用的正交反余弦来逼近。所以干脆不算这个东西时间开销一下就少了70%以上。那么只知道一些特征点用什么来进行初始匹配呢方法就是用特征点之间的灰度相关系数这个是很轻量级的。 总之配准问题要实验看结果分析再做改动很难说有个算法能一定解决的。 需要考虑的可能问题包括 resize分辨率再做进一步处理的控制特征点数量。 平滑去噪。 减少亮度对比度差异用image normalization就是先求图的mean,std,然后把所有pixel变换使得最终mean是0std是1. surf算法、SIFT算子、Harris角点提取。 关于Image Alignment推荐论文 Lucas-Kanade 20 years On: compositional algorithm它是最慢的不过根据我的经验来看z在变换并不是特别大的时候还蛮好用的。它适用于translation,scaling,rotation变换寻找最优过程类似于用gradient of multi-variable function 寻找 local minimum。 但是假如变换太大这个方法应该不行。关于代码http://www.codeproject.com/KB/recipes/ImgAlign.aspx。 Remark如果图像里有太多非刚性变换忽略所有的推荐。 Shi-Tomasi角点特征Lucas-kanade光流.Harriss original definition involved taking the determinant of H(p), subtracting the trace of H(p) (with some weighting coefficient), and then comparing this difference to a predetermined threshold. It was later found by Shi and Tomasi [Shi94] that good corners resulted as long as the smaller of the two eigenvalues was greater than a minimum threshold. Shi and Tomasis method was not only sufficient but in many cases gave more satisfactory results than Harriss method