计算机视觉 什么是图像配准?

一、图像配准概述

        图像配准是叠加两个或多个来自不同来源、在不同时间和角度拍摄的图像的过程。图像配准过程是一种自动或手动操作,它试图发现两张照片之间的匹配点并在空间上对齐它们以最小化所需的误差,即两幅图像之间的统一邻近度测量。医学、遥感和计算机视觉都使用图像配准。

        一旦在图片之间建立了对应关系,通常可以简单地调节或处理对两张或多张照片之间的联系的研究。建立这种相关性的过程称为图像配准。         

        可以说,图像配准是计算空间变换的过程,它将一组图像与一个共同的观察参考框架对齐,通常是一组图像中的一个。配准是任何图像分析或理解任务中必须组合不同数据源的关键步骤。

二、图像配准的使用

        图像配准可以通过两种方式使用:

        Image to Image Registration:将两张或多张图片对齐以整合或融合表示相同对象的匹配像素。

        Image to Map Registration:在这一步中,输入图像被扭曲以匹配基础图像的地图信息,同时保持其原始空间分辨率。

        在医学和卫星摄影中,它经常用于对齐来自不同相机来源的图片。图像配准是数码相机用来将附近的图片对齐并链接成单个全景图像的技术。

三、图像配准的步骤

        每种图像配准方法都必须经过四个主要步骤才能进行图像对齐。

        特征检测:参考图像和感知图像中检测显着和独特的对象(封闭边界区域、边缘、轮廓、线交叉点、角等)。

        特征匹配:它建立了参考图像和感知图像中的特征之间的相关性。匹配方法是基于图片的内容或控制点集的符号描述。

        估计变换模型:计算所谓的映射函数的参数和种类,将检测到的图片与参考图像对齐。

        图像重采样和变换:使用映射函数改变检测到的图像。

         图像配准方法主要分为两类:基于区域的方法和基于特征的方法。当照片中缺乏重要特征并且通过灰度/颜色而不是局部形式和结构给出区分信息时,优选基于区域的方法。 

        当图片强度提供更多的局部结构信息时,使用基于特征的匹配算法。在这些过程中使用由特征提取技术产生的图像特征。但这两种分类可以进一步分为各种方法。让我们来看看这些分类。

1、基于像素的方法

        对于配准,在此过程中采用了互相关统计方法。它经常用于模板匹配或模式识别,其中涉及查找图像中模板或模式的位置和方向。互相关是相似性或匹配度量的度量。

        例如,二维归一化互相关函数评估模板(参考图像)和图像的每个平移的相似性,其中模板与图像相比很小。 

        如果模板适合图像,则互相关将达到峰值。由于该度量可能受局部图像强度的影响,因此应调整互相关。

        相关方法的主要缺点是相似性度量最大值的平坦度(由于图片的自相似性)和高处理复杂性。最大值可以通过预处理或通过应用边缘或矢量相关来成功锐化。

2、点映射法

        在基于点的匹配算法中,灰度值不用于描述匹配的实体。它采用从特征提取算法/过程产生的图片特征。 

        特征提取的根本目标是从输入的原始数据中提取大量信息,过滤掉冗余信息,即过滤掉不再需要的信息。 

        选择仅在两张照片中检测到并且更能容忍局部失真的特征。这些特征影响合适变换的计算。因此,必须发现大量特征才能执行计算。 

        在检测到每个图像中的特征之后,它们必须被匹配。这是匹配两张具有未知错位的照片的最常用方法。 

        点匹配的控制点在此策略中至关重要。拐角、相交线、等高线上的局部最大曲率点、具有局部最大曲率的窗口中心以及封闭边界区域的重心都是控制点的示例。 

        点映射方法分为三个阶段,分别如下:

        可以计算的图像特征。

        数据图像的特征点。

        空间映射。

        基于特征的技术的缺点是窗口内容的特殊性。由于其非显着性,包含缺乏关键信息的平滑区域的窗口很可能被错误地与参考图片中的其他平滑区域匹配。 配准特征应优选地在图片的离散区域中被识别。

3、基于轮廓的图像配准

        在该策略中,使用强大的统计特征来匹配图片特征点。彩色图片分割用于从图像中提取感兴趣的区域。

        为了产生图像的轮廓,计算给定颜色集合的平均值。然后在分割过程中将图像中的每个 RGB 像素分类为具有特定范围内的颜色或不具有特定范围内的颜色。此外,欧几里得距离是确定相似度所必需的。 

        点的轨迹是一个半径等于阈值的球体,位于球体内部或表面的每个点都满足规定的颜色要求。通过用黑白对图像中的这两组点进行编码,生成了一个二值分割图像。 

        高斯滤波器用于消除分割过程后的噪声。阈值模糊图像,然后获得图像的轮廓。

        基于轮廓的图像配准方法的准确性是不错,但局限性是它很慢。

4、使用互信息的多模态图像配准

        多光谱/多感官图片的配准是一项艰巨的任务。一般来说,这样的图片具有不同的灰度属性,基于区域相关性的基本方法不容易使用。 

        发现即使直方图发生变化,图像的熵也保持不变。即使在随机打乱图像的像素之后,图像的熵也保持不变。自然照片的模糊性也较小。 

        在逼真的图像中,像素的值很可能与它的某些相邻像素的值非常接近。结果,这种依赖降低了整体熵。

        当图片的分辨率较差或重叠区域较窄时,互信息会导致配准错误。

5、频域图像配准

        相关定理在此过程中很重要,因为傅里叶函数在频谱的每个频率处包含图像的实部和虚部的两个值。 

        通过计算函数的倒数,我们得到了一个脉冲函数,除了位移之外,它在任何地方都基本上为零,这是最佳配准两张图片所必需的。上述方法用于配准只有位移的图片。

        应该强调的是,必须在频域中使用某种类型的插值。

6、使用遗传算法进行图像配准

        遗传算法(GA) 建立在进化的自然概念之上,这表明在不断变化的环境条件下,多样性有助于种群的生存。GA 是具有内在并行性的迭代方法。 

        他们以染色体的形式记录了一组候选解,通常是二进制符号“0”和“1”。可以随机选择初始种群。 

        适合的候选者,定义为适应度值大于给定阈值的那些,将被选择在下一代进行复制。使用称为“交叉”的遗传繁殖程序合并选定的候选人。交叉算子交换染色体片段以在下一代中创造出更适合的优秀候选者。 

        在下一代,整个人口都被重新评估。重复该操作直到满足终止要求。终止标准可能包括发现可接受的近似解、达到一定数量的代数或解收敛。 

        对于基于数字矢量地图的卫星图像,使用遗传算法的自动配准已被证明是特别有效和值得信赖的。

四、图像配准的应用

        在医学领域,多模式 MRI-MEG 联合配准。在大脑成像的轴向视图中,顶部的黄点表示解剖标记或基准点(解剖信息)。底部:粉红色的点表示 MEG 传感器的位置,而绿点表示头皮脑电图传感器的位置。功能信息包含在这些 MEG 和 EEG 数据中,底部图像描绘了共同配准的大脑图像。

         在摄影领域,卫星使用点映射方法进行图像配准。

五、使用 OpenCV 进行图像配准

        查看下面两张图片,使用opencv进行图像配准。

        

import numpy as np
import imutils
import cv2
#from google.colab.patches import cv2_imshow

# 读取图像,并灰度化
img_align = cv2.imread("image-1.jpeg")
img_temp = cv2.imread("image.jpeg")
img1 = cv2.cvtColor(img_align, cv2.COLOR_BGR2GRAY)
img2 = cv2.cvtColor(img_temp, cv2.COLOR_BGR2GRAY)
height, width = img2.shape

# 获取关键点和描述符,用于匹配模板文件
orb_detector = cv2.ORB_create(5000)
kp1, d1 = orb_detector.detectAndCompute(img1, None)
kp2, d2 = orb_detector.detectAndCompute(img2, None)
matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck = True)
matches = matcher.match(d1, d2)

#matches.sorted(key = lambda x: x.distance)
matches = matches[:int(len(matches)*0.9)]
no_of_matches = len(matches)
p1 = np.zeros((no_of_matches, 2))
p2 = np.zeros((no_of_matches, 2))
for i in range(len(matches)):
  p1[i, :] = kp1[matches[i].queryIdx].pt
  p2[i, :] = kp2[matches[i].trainIdx].pt

# 为结果图像的验证创建单应性
homography, mask = cv2.findHomography(p1, p2, cv2.RANSAC)

# 配准图像
transformed_img = cv2.warpPerspective(img_align, homography, (width, height))
matchedVis =cv2.drawMatches(img1, kp1, img2, kp2, matches, None)
matchedVis = imutils.resize(matchedVis, width=1000)
cv2.imwrite('C:\\Users\\xiaomao\\Desktop\\123.jpg', matchedVis)
cv2.waitKey(0)

        配准结果参考图像。从输入图像中选择了总共 5000 个像素,这些像素要从生成输出图像的模板图像中进行匹配。 

        图像配准是集成、融合和评估来自众多传感器(来源)的数据的必要步骤。它在医学科学、计算机视觉和遥感领域有着广泛的应用。 

        具有复杂非线性失真的图像配准、多模态配准和遮挡图像的配准等有助于提高当前环境中最难任务的技术的鲁棒性。 

        在本文中,我们了解了图像配准的概念、图像配准的不同方法以及使用 OpenCV 在 Python 中的实现。

六、相关参考

Opencv学习笔记 ORB特征提取及匹配_bashendixie5的博客-CSDN博客ORB特征是由Ethan Rublee等人发表在计算机视觉三大顶会之一的ICCV2011上。其所解决的问题是SIFT特征的高昂计算代价以及BRIEF特征本身具有的缺乏旋转不变性、尺度不变性以及对噪声敏感的弱点。所以作者基于FAST和BRIEF特征提出的二值特征(0,1串)在时间上比SIFT快100倍,比SURF快10倍,并且匹配效果也很好。ORB基本上是FAST关键点检测器BRIEF描述符的融合,并进行了许多修改以增强性能。先使用FAST来找出关键点,后使用Harris角度测量来找出属于特征点的前N个特征。https://skydance.blog.csdn.net/article/details/109143807

Opencv学习笔记 什么是模板匹配?_bashendixie5的博客-CSDN博客_opencv匹配算法模板匹配是数字图像处理中的一种技术,用于在大图像中查找与小模板图像匹配的部分。它可以在制造中用作质量控制的一部分、移动机器人的导航方式或检测图像边缘的方式。模板匹配块在输入图像中找到模板的最佳匹配。该块通过在感兴趣区域或整个图像上移动模板来计算匹配度量值,然后找到最佳匹配位置。https://skydance.blog.csdn.net/article/details/108333325

来源:坐望云起

物联沃分享整理
物联沃-IOTWORD物联网 » 计算机视觉 什么是图像配准?

发表评论