实验四——图像拼接

本文详细介绍了图像拼接的过程,包括使用SIFT算法进行特征匹配和RANSAC算法去除噪声点。通过实例测试,分析了不同情况下拼接效果的影响因素,如图像特征匹配质量、景物垂直差异等,并提出了优化建议。
摘要由CSDN通过智能技术生成

图像拼接

如何拼接

  1. 在图像集合中实现图像的特征匹配
  2. 尽可能的排除图像噪声点干扰
  3. 通过图像的匹配特征判断图像变换的结构
  4. 对于匹配后的图像要对齐特征点
  5. 对于拼接缝要有较好的处理

扩:对于特征匹配较好但图像背景亮度有差距的图像的匹配问题

使用SIFT算法进行特征匹配

代码如下,保证sift.exe被成功配置为系统变量

from numpy import *
# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift
from PIL import Image
from pylab import *
# set paths to data folder
featname = ['img/'+str(i+1)+'.sift' for i in range(3)] 
imname = ['img/'+str(i+1)+'.jpg' for i in range(3)]
# extract features and match
l = {
   }
d = {
   }
for i in range(3): 
    sift.process_image(imname[i],featname[i])
    l[i],d[i] = sift.read_features_from_file(featname[i])

matches = {
   }
for i in range(2):
    matches[i] = sift.match(d[i+1],d[i])

效果如下

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

Ransac算法

原理

sift匹配的缺点

匹配出的点,不全是能够准确反映图像信息的特征点,还包含许多噪声点。
需要尽可能的分离特征点和噪声点

定义

随机抽样一致算法(Random Sample Consensus,RANSAC)。它采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。 RANSAC是一个非确定性算法,在某种意义上说,它会产生一个在一定概率下合理的结果,而更多次的迭代会使这一概率增加。

  1. 内群数据可以通过几组模型的参数来叙述其分布,而离群数据则是不适合模型化的数据。
  2. 数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设。
  3. RANSAC假定,给定一组(通常很小)的内群,存在一个程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数。
    在这里插入图片描述

在这个例子中,需要找到一条拟合最多点的线,离该线越远的点,即被视为噪声点

算法实现

使用RANSAC算法求解单应性矩阵

class RansacModel(object):
    """ 单应性矩阵由http://www.scipy.org/Cookbook/RANSAC的 ransac.py计算"""
    def __init__(self,debug=False):
        self.debug = debug
           
    def fit(self, data):
        """ Fit homography to four selected correspondences. """
        # transpose to fit H_from_points()
        data = data.T
        # 映射起始点
        fp = data[:3,:4]
        # 映射的目标点
        tp = data[3:,:4]
        
        # 计算单应性矩阵
        return H_from_points(fp,tp)
    
    def get_error
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值