目录
1 图像拼接
1.1 图像拼接简介
图像拼接技术就是将数张有重叠部分的图像(可能是不同时间、不同视角或者不同传感器获得的)拼成一幅无缝的全景图或高分辨率图像的技术。
1.2 图像拼接步骤
特征提取 Feature Extraction:在所有输入图像中检测特征点
图像配准 Image Registration:建立了图像之间的几何对应关系,使它们可以在一个共同的参照系中进行变换、比较和分析。
大致可以分为以下几个类
- 直接使用图像的像素值的算法,例如,correlation methods
- 在频域处理的算法,例如,基于快速傅里叶变换(FFT-based)方法;
- 低水平特征的算法low level features,通常用到边缘和角点,例如,基于特征的方法,
- 高水平特征的算法high-level features,通常用到图像物体重叠部分,特征关系,例如,图论方法(Graph-theoretic methods)
图像变形 Warping:
图像变形是指将其中一幅图像的图像重投影,并将图像放置在更大的画布上。
图像融合 Blending
图像融合是通过改变边界附近的图像灰度级,去除这些缝隙,创建混合图像,从而在图像之间实现平滑过渡。混合模式(Blend modes)用于将两层融合到一起。
1.3 相关原理
1.3.1进行sift特征匹配和RANSAC剔除错误匹配
sift匹配结果
RANSAC算法筛选SIFT特征匹配
上一篇博客有介绍https://blog.csdn.net/qq_41958347/article/details/104632766
1.3.2图像配准(Apap)
图像配准是将两张场景相关的图像进行映射,寻找其中的关系,多用在医学图像配准、图像拼接、不同摄像机的几何标定等方面,其研究也较为成熟。
图像配准寻找一种空间变换把一幅图像映射到另一幅图像,使变化后的图像能与上一张图像拼接,但是两张图片之间的景深不同,所以如果直接将两张图片映射到一张,就会产生鬼影,这种现象是无法避免的。而apap算法则是将图像分为若干个区域,在每个小区域内进行图像的匹配和映射,这样能够减少因为景深而带来的鬼影现象
Apap算法原理https://blog.csdn.net/warrenwg/article/details/49759779
Apap虽然能够较好地完成配准,但非常依赖于特征点对。若图像高频信息较少,特征点对过少,配准将完全失效,并且对大尺度的图像进行配准,其效果也不是很好,一切都决定于特征点对的数量。
1.3.3图像分割
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。
运用最大流最小割定理,可以找出两张图片拼接成的图片中找出最小割沿着最小割将图片分外两部分,两个部分分别使用对应的图片映射,这样得到的拼接图片会有更好的效果
1.3.4根据multi-band bleing策略实现融合
Multi-Band算法就是将图像分解为不同频带的分量之加和,图像的宏观特征在它的低频分量图里,而局域特征在高频分量图里。
计算输入图像的高斯金字塔
计算输入图像的拉普拉斯金字塔
将处于同一级的拉普拉斯金字塔进行融合。可以是简单的线性融合。
将高层的拉普拉斯金字塔依次扩展直至和源图像相同分辨率
将得到的图像依次叠加,则得到最终的输出图像
1.4 代码实现
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
import numpy as np
"""
This is the panorama example from section 3.3.
"""
np.seterr(divide='ignore'