图像拼接

本文介绍了图像拼接的基本原理和步骤,特别是利用RANSAC算法估计单应性矩阵实现全景图像的拼接。通过匹配SIFT特征点,计算单应性矩阵并扭曲图像到公共平面,但实验结果显示图像拼接存在拉长和变形问题,可能由建筑物相似或角度选取引起。
摘要由CSDN通过智能技术生成



图像拼接

一、基本介绍

全景视频是一种利用360 度全景图象建立虚拟环境的新方法。全景图象是通过将普通照相机拍照到的边界部分重叠的图象进行拼接而创建的。可以利用图象重叠部分对应像素的相似性, 通过采用一种行之有效的拼接算法, 使得到的图象无缝平滑。

图像拼接是计算机视觉中的重要分支,它是将两幅以上的具有部分重叠的图像进行无缝拼接从而得到较高分辨率或宽视角的图像。目前成形算法原理大致如下:
1、频率域:(不甚清楚)
利用"相位相关法"完成两幅图像的平移估计(只能精确到像素级)。
2、空间域:
(1)基于特征的方法:找出特征点,进行匹配。
a.使用HARRIS角点,然后使用灰度相关加松弛匹配找到对应点,如果两幅图像重叠区域较大,且透视变形较小,可以考虑使用这种方法。

b.通过特征点的梯度方向等信息,确定一组最佳的特征匹配,利用这一组数据给出两幅图像间变换矩阵的估计初值,再利用递归算法找到最终的精确变换关系。在拍摄图片的相机的旋转与缩放不是很大的情况下可以实现较好效果。
(2)和基于光差的方法(方法精确但收敛慢)。应用最广泛的一类拼接算法是柱面与球面图像的拼接,经过球面与柱面变换后,问题就归结为确定每幅图像的平移量。

二、基本原理

要实现两张图片的简单拼接,其实只需找出两张图片中相似的点 (至少四个,因为 homography 矩阵的计算需要至少四个点), 计算一张图片可以变换到另一张图片的变换矩阵 (homography 单应性矩阵),用这个矩阵把那张图片变换后放到另一张图片相应的位置 ,就是相当于把两张图片中定好的四个相似的点重合在一起。如此,就可以实现简单的全景拼接。

三、基本步骤

实现全景拼接,本文使用RANSAC方法,其基本思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。该方法能解决错配问题。创建全景图像步骤大致分为以下几点:
1.在连续图像对间使用sift特征寻找匹配对应点对
2.进行可视化匹配,匹配两幅图像之间的特征
3.将匹配转换成齐次坐标点的函数,估计单应性矩阵
4.通过估计出图像间的单应性矩阵,将所有的图像扭曲到一个公共的图像平面上
其中sift特征点匹配在前面博客已经说过,我们主要实现稳健的单应性矩阵估计和图像拼接。
稳健的单应性矩阵估计
我们使用RANSAC算法来求解单应性矩阵。使用由ransac.py选择的4个对应点对(4个点对是计算单应性矩阵所需的最少数目,因为 homography 矩阵的计算需要至少四个点),然后拟合成一个单应性矩阵。对每个对应点对使用该单应性矩阵,然后返回相应的平方距离之和。因此RANSAC算法能够判定哪些点对是正确的,哪些是错误的。
图像拼接
估计出图像间的单应性矩阵,我们需要将所有的图像扭曲到一个公共的图像平面上。我们可以将中心图像左边或者右边的区域填充为0,以便为扭曲的图像腾出空间。

具体代码如下:

from array import array
from turtle import dot
from numpy.ma import vstack

from pylab import *
from numpy import *
from PIL import Image

# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift

"""
This is the panorama example from section 3.3.
"""

# 设置数据文件夹的路径
featname = [r'C:/Users\Lenovo/Pictures/实验四/' + str(i + 1) + '.sift' for i in range(3)]
imname = [r'C:/Users\Lenovo/Pictures/实验四/' + str(i + 1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值