当前位置:   article > 正文

opencv系列-图像配准_c++ openc光流法配准

c++ openc光流法配准


前言:配准方面的知识,在工作中多有用到,对于原理了解一些,但是知之不深,最近时间比较充裕,专门写一篇文章,加深对配准方面知识的学习。

一、简介

通俗定义:给定两幅图像P1,P2,图像配准算法的目标是找到一种变换T: Ω 1 \Omega1 Ω1 Ω 2 \Omega2 Ω2,使得变换某一图后,两幅图像的相似程度达到最大。

二、应用场景

Panorama全景拼接;recognition识别;SLAM(同步定位与地图绘制);去噪;hdr算法

三、算法分类

Feature based; Optical Flow based;CNN based

四、特征点

特征检测。手动或者可能自动检测显著和独特的对象(闭合边界区域,边缘,轮廓,交线,角点等)。为了进一步处理,这些特征可以通过点来表示(重心,线尾,特征点),这些点称为控制点(CP)。
特征匹配。建立场景图像和参考图像特征之间的相关性。使用各种各样的特征描述符,相似性度量,连同特征的空间相关性。
转换模型估计。估计将感测图像和参考图像对齐的所谓映射函数的类型和参数。映射函数的参数通过特征相关性计算。
图像重采样和转换。使用映射函数转换感测图像。使用合适的插值技术计算非整数坐标的图像值。

4.1 Haris

在这里插入图片描述
window fuction:在这里插入图片描述
在这里插入图片描述

SIFT

SURF

五、特征匹配

Opencv特征寻找及匹配的步骤有哪些?

  1. 根据特征点定义寻找特征点
  2. 对特征点进行描述
  3. 将寻找到的关键点和现有特征点,利用描述符进行量化后,进行匹配。

六、全局配准

坐标旋转变换公式的推导

围绕原点的旋转

在这里插入图片描述
s = r ∗ c o s ( b + a ) = r ∗ c o s ( a ) ∗ c o s ( b ) − r ∗ s i n ( a ) ∗ s i n ( b ) s = r*cos(b+a) = r*cos(a)*cos(b) - r*sin(a)*sin(b) s=rcos(b+a)=rcos(a)cos(b)rsin(a)sin(b)
t = r ∗ s i n ( b + a ) = r ∗ s i n ( b ) ∗ c o s ( a ) + r ∗ s i n ( a ) ∗ c o s ( b ) t = r*sin(b+a) = r*sin(b)*cos(a) +r*sin(a)*cos(b) t=rsin(b+a)=rsin(b)cos(a)+rsin(a)cos(b)
x = r ∗ c o s ( a ) x = r*cos(a) x=rcos(a)
y = r ∗ s i n ( a ) y = r*sin(a) y=rsin(a)
将x,y带入s,y当中:
s = x ∗ c o s ( b ) − y ∗ s i n ( b ) s = x*cos(b) - y*sin(b) s=xcos(b)ysin(b)
t = x ∗ s i n ( b ) + y ∗ c o s ( b ) t = x*sin(b) + y*cos(b) t=xsin(b)+ycos(b)
写成矩阵的形式:
[ s t ] = [ c o s ( b ) − s i n ( b ) s i n ( b ) c o s ( b ) ] [ x y ]

[st]
=
[cos(b)sin(b)sin(b)cos(b)]
[xy]
[st]=[cos(b)sin(b)sin(b)cos(b)][xy]

坐标系(逆时针)的旋转

在这里插入图片描述
以P点坐标为例,在原始坐标系中坐标是(x,y),在新的坐标系中的坐标为(s,t)
s = o s = o a + a s = y ∗ s i n ( θ ) + x ∗ c o s ( θ ) s = os = oa + as = y*sin(\theta) + x*cos(\theta) s=os=oa+as=ysin(θ)+xcos(θ)
t = o t = a y − b y = y ∗ c o s ( θ ) − x ∗ s i n ( θ ) t = ot = ay - by = y*cos(\theta) - x*sin(\theta) t=ot=ayby=ycos(θ)xsin(θ)
写成矩阵的形式:
[ s t ] = [ c o s ( θ ) s i n ( θ ) − s i n ( θ ) c o s ( θ ) ] [ x y ]

[st]
=
[cos(θ)sin(θ)sin(θ)cos(θ)]
[xy]
[st]=[cos(θ)sin(θ)sin(θ)cos(θ)][xy]

绕某一点进行旋转

待补充

仿射变换

仿射变换(Affine Transformation or Affine Map),在几何上,是一个向量空间,经过线性变换和平移转换为另外一个向量空间的操作。仿射变换的特点,保持图像的平移性(直线仍然是直的)和平行性(平行线仍然平行,且直线点上的位置顺序不变)。
常见的三种变换操作:

  • 旋转(rotation)
    坐标系顺时针,内容逆时针
    [ c o s ( θ ) − s i n ( θ ) s i n ( θ ) c o s ( θ ) ] [ x y ] = [ x 1 y 1 ]
    [cos(θ)sin(θ)sin(θ)cos(θ)]
    [xy]
    =
    [x1y1]
    [cos(θ)sin(θ)sin(θ)cos(θ)][xy]=[x1y1]
  • 平移(translation)
    [ 1 0 T x 0 1 T y 0 0 1 ] [ X Y 1 ] = [ X + T x Y + T y 1 ]
    [10Tx01Ty001]
    [XY1]
    =
    [X+TxY+Ty1]
    100010TxTy1XY1=X+TxY+Ty1
  • 缩放(scale)
    [ T x 0 0 0 T y 0 0 0 1 ] [ X Y 1 ] = [ X ∗ T x Y ∗ T y 1 ]
    [Tx000Ty0001]
    [XY1]
    =
    [XTxYTy1]
    Tx000Ty0001XY1=XTxYTy1
  • 错切(shear)
    x轴移动
    [ 1 t a n θ 0 0 1 0 0 0 1 ] [ X Y 1 ] = [ X + Y ∗ t a n θ Y 1 ]
    [1tanθ0010001]
    [XY1]
    =
    [X+YtanθY1]
    100tanθ10001XY1=X+YtanθY1

    y轴移动
    [ 1 0 0 t a n α 1 0 0 0 1 ] [ X Y 1 ] = [ X Y + X ∗ t a n α 1 ]
    [100tanα10001]
    [XY1]
    =
    [XY+Xtanα1]
    1tanα0010001XY1=XY+Xtanα1

    x、y轴移动
    [ 1 t a n θ 0 t a n α 1 0 0 0 1 ] [ X Y 1 ] = [ X + Y ∗ t a n θ Y + X ∗ t a n α 1 ]
    [1tanθ0tanα10001]
    [XY1]
    =
    [X+YtanθY+Xtanα1]
    1tanα0tanθ10001XY1=X+YtanθY+Xtanα1

    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

A = [ a 00 a 01 a 10 a 11 ] B = [ b 00 b 10 ] M = [ A B ] A =

[a00a01a10a11]
B=
[b00b10]
M=
[AB]
A=[a00a10a01a11]B=[b00b10]M=[AB]
T = A ∗ [ x y ] + B 或 者 T = M ∗ [ x y 1 ] T = A*
[xy]
+B 或者 T = M*
[xy1]
T=A[xy]+BT=Mxy1

对于图片的每个位置进行转换:
T = [ a 00 ∗ x + a 01 ∗ y + b 00 a 10 ∗ x + a 11 ∗ y + b 10 ] T =
[a00x+a01y+b00a10x+a11y+b10]
T=[a00x+a01y+b00a10x+a11y+b10]

透视变换与仿射变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

opencv函数使用

什么是光流(optical flow)?

所谓光流即瞬时速度,时间很小时,等同于目标点的位移。
光流的物理意义:光流是由目标物体的运动以及相机的运动,或者二者共同的运动所产生。研究光流场的目的是为了获得运动场。

光流法基本原理

七、 局部配准

-[8]surf特征提取算法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/153329
推荐阅读
相关标签
  

闽ICP备14008679号