网站为什么要icp备案,建站之星视频,自己服务器建设网站,上海装修公司名字图像配准(Image registration)就是将不同时间、不同传感器#xff08;成像设备#xff09;或不同条件下#xff08;天候、照度、摄像位置和角度等#xff09;获取的两幅或多幅图像进行匹配、叠加的过程#xff0c;就是找到1幅图像像素到另1幅图像像素间的空间映射关系它已… 图像配准(Image registration)就是将不同时间、不同传感器成像设备或不同条件下天候、照度、摄像位置和角度等获取的两幅或多幅图像进行匹配、叠加的过程就是找到1幅图像像素到另1幅图像像素间的空间映射关系它已经被广泛地应用于遥感数据分析、计算机视觉、图像处理等领域。
图像之间的空间关系可以表示为刚性rigid如平移和旋转仿射affine如剪切单应性homographies或复杂的大变形模型complex large deformations models。
一.基于特征的方法
基于特征的图像配准的步骤如下 1. 特征检测
检测参考图像和感知图像中独特的对象封闭边界区域、边缘、轮廓、线交叉点、角等。每个关键点由描述符表示关键点基本特征的特征向量。描述符应该对图像变换定位缩放亮度等具有鲁棒性。常用的检测算法如下
•SIFTScale-invariant feature transform不能免费用于商业用途。SIFT特征描述符对于均匀缩放方向亮度变化和对仿射失真不变的部分不会发生变化。
•SURFSpeeded Up Robust Features受SIFT启发的探测器和描述符。非常快。同样是有专利的。
•ORBOriented FAST and Rotated BRIEF是1种快速的二进制描述符基于 FASTFeatures from Accelerated Segment Test关键点检测和 BRIEFBinary robust independent elementary features描述符的组合。它具有旋转不变性和对噪声的鲁棒性。
2. 特征匹配
建立参考图像和感知图像中的特征之间的相关性。匹配方法是基于图片的内容或控制点集的符号描述。
3. 估计变换模型
计算映射函数的参数和种类将检测到的图片与参考图像对齐。映射函数如单应性变换Homographies。
4. 图像变换
使用映射函数如Homographies矩阵改变检测到的图像。
5.算法代码实例(Python)
import random
import math
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from PIL import Image
import numpy as np# 设置1个至少20个匹配的条件
MinMatchNum 20
# 读取照片
L cv2.imread(1537-2024-08-05_15-26-37.png) # queryImage
R cv2.imread(1537-2024-08-05_15-26-37.png) # trainImage
# 高斯滤波
L cv2.GaussianBlur(L, (3, 3), 0)
R cv2.GaussianBlur(R, (3, 3), 0)
# 创建sift检测器
sift cv2.SIFT_create()
# 计算所有特征点的特征值kp和特征向量des
left_kp, left_des sift.detectAndCompute(R, None)
righ_kp, righ_des sift.detectAndCompute(L, None)
bf cv2.BFMatcher()
matches bf.knnMatch(left_des, righ_des, k2)
# 进行特征点匹配筛选
BetterChoose1 []
for m, n in matches:# 认为第1近的点小于第2近的点1倍以上是好的匹配BetterChoose1if m.distance 0.5 * n.distance:BetterChoose1.append(m)
BetterChoose2 np.expand_dims(BetterChoose1, 1)
match cv2.drawMatchesKnn(L, left_kp, R, righ_kp, BetterChoose2[:30], None, flags2)
print(len(BetterChoose1),MinMatchNum)
if len(BetterChoose1) MinMatchNum:# 获取关键点的坐标src_pts np.float32([left_kp[m.queryIdx].pt for m in BetterChoose1]).reshape(-1, 1, 2)dst_pts np.float32([righ_kp[m.trainIdx].pt for m in BetterChoose1]).reshape(-1, 1, 2)print(src_pts:,src_pts,src_pts.shape)print(dst_pts:,dst_pts,dst_pts.shape)# 调用RANSAC方法得到解HH, modle cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)wrap cv2.warpPerspective(R, H, (R.shape[1] R.shape[1], R.shape[0] R.shape[0]))wrap[0:R.shape[0], 0:R.shape[1]] L# 得到新的位置rows, cols np.where(wrap[:, :, 0] ! 0)min_row, max_row min(rows), max(rows) 1min_col, max_col min(cols), max(cols) 1# 去除黑色无用部分LeftAndRight wrap[min_row:max_row, min_col:max_col, :]
# 将图片结果进行显示
scal 0.7
cv2.imshow(connect, cv2.resize(match, (0, 0), fxscal, fyscal, interpolationcv2.INTER_NEAREST))
cv2.imshow(LeftAndRight, cv2.resize(LeftAndRight, (0, 0), fxscal, fyscal, interpolationcv2.INTER_NEAREST))
cv2.waitKey(0)
cv2.destroyAllWindows()
二.深度学习方法
深度学习在图像配准方面的应用表现为特征提取和Homography学习2个方面。
1.特征提取
将深度网络应用于特征提取的步骤而不是使用SIFT或类似算法。
使用预训练的VGG网络层来生成1个特征描述符同时保留卷积信息和局部特征。描述符的性能优于类似SIFT的探测器特别是在SIFT包含许多异常值或无法匹配足够数量特征点的情况下。 论文链接https://ieeexplore.ieee.org/stamp/stamp.jsp?tparnumber8404075
代码链接https://github.com/yzhq97/cnn-registration 2.Homography学习
利用神经网络直接学习几何变换对齐2幅图像而不仅仅局限于特征提取。
2016 年的CVPR上Daniel DeTone等人提出了1种叫作HomographyNet的基于深度学习的无监督单应性变换网络。 网络产生8个数值作为输出。以监督的方式进行训练并计算输出和真实单应性之间的欧几里德损失。
论文链接https://arxiv.org/pdf/1606.03798
代码链接https://github.com/breadcake/Deep-homography-estimation-pytorch