计算机视觉图像映射与全景拼接

Posted JMU-HZH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机视觉图像映射与全景拼接相关的知识,希望对你有一定的参考价值。

文章目录

【计算机视觉】图像映射与全景拼接

1. 图像映射

图像映射流程
1.提取特征点,生成描述符
2.特征匹配
3.根据图像变换特点,选取合适的变换类型
4.根据单应性变换等方法计算变换结构
5.采用正向或逆向映射,利用插值方式实现图像映射变换

图像变换类型
1.刚体变换:只改变物体位置,不改变物体形状(如平移、旋转)
2.仿射变换:改变物体位置和形状,但是保持“平直性”
3.投影变换:彻底改变物体位置和形状

1.1 单应性变换

单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。实现单应变换的关键是求出单应性矩阵,而针对不同的变换类型需要相应数量的对应点对来求出相应的单应性矩阵(求解矩阵中的未知数)。

不同变换需要相应的对应点对(一个点对分别得到x和y两个方程)
平移变换:2个自由度(需要一个点对)
相似变换:4个自由度(需要两个点对)
仿射变换:6个自由度(需要三个点对)
投影变换:8个自由度(需要四个点对)

我们通过分别点对,求解出单应性矩阵后就可以将其带入图像的所有像素点中获得经单应性变换后的图像。单应性矩阵求解过程如下:

(1) 其中x,y为原图像的像素坐标,x’,y’为变换后图像的像素坐标
[ x ′ y ′ w ′ ] = [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] [ x y w ]  或  x ′ = H x \\left[\\beginarrayl x^\\prime \\\\ y^\\prime \\\\ w^\\prime \\endarray\\right]=\\left[\\beginarraylll h_1 & h_2 & h_3 \\\\ h_4 & h_5 & h_6 \\\\ h_7 & h_8 & h_9 \\endarray\\right]\\left[\\beginarrayl x \\\\ y \\\\ w \\endarray\\right] \\text 或 \\mathbfx^\\prime=\\boldsymbolH \\mathbfx xyw=h1h4h7h2h5h8h3h6h9xyw  x=Hx
(2) 令w=1,目的:进行点的归一化
[ w x ′ w y ′ w ] = [ h 00 h 01 h 02 h 10 h 11 h 12 h 20 h 21 h 22 ] [ x y 1 ] \\left[\\beginarrayc w x^\\prime \\\\ w y^\\prime \\\\ w \\endarray\\right]=\\left[\\beginarraylll h_00 & h_01 & h_02 \\\\ h_10 & h_11 & h_12 \\\\ h_20 & h_21 & h_22 \\endarray\\right]\\left[\\beginarrayl x \\\\ y \\\\ 1 \\endarray\\right] wxwyw=h00h10h20h01h11h21h02h12h22xy1
(3) 将其转化为Ah = 0的形式
x i ′ = h 00 x i + h 01 y i + h 02 h 20 x i + h 21 y i + h 22 y i ′ = h 10 x i + h 11 y i + h 12 h 20 x i + h 21 y i + h 22 ( 1 ) \\beginaligned x_i^\\prime &=\\frach_00 x_i+h_01 y_i+h_02h_20 x_i+h_21 y_i+h_22 \\\\ y_i^\\prime &=\\frach_10 x_i+h_11 y_i+h 12h_20 x_i+h_21 y_i+h_22 \\endaligned\\quad\\bold(1) xiyi=h20xi+h21yi+h22h00xi+h01yi+h02=h20xi+h21yi+h22h10xi+h11yi+h12(1)

x

以上是关于计算机视觉图像映射与全景拼接的主要内容,如果未能解决你的问题,请参考以下文章

CV实战 | 使用OpenCV进行图像全景拼接

使用OpenCV进行图像全景拼接

Python实现图像的全景拼接

Python实现图像的全景拼接

Python实现图像的全景拼接,毕设选题

基于Python和openCV实现图像的全景拼接