openCV【实践系列】1——OpenCV中的图像对齐

OpenCV中的运动模型

在典型的图像对齐问题中,我们有两个场景图像,它们通过运动模型相关联。不同的图像对齐算法旨在使用不同的技巧和假设来估计这些运动模型的参数。一旦知道这些参数,将一个图像变形以使其与另一个图像对齐是直截了当的。

让我们快速了解这些运动模型

图1:不同的运动模型转换方形图像

这些模型在OpenCV中是常常具有前缀MOTION_:

平移(MOTION_TRANSLATION):第一个图像可以被移位(x,y)来获得第二个图像,我们只需要估算两个参数x和y。

欧氏(MOTION_EUCLIDEAN):第三张图像是第一个图像是第二个图像的旋转和移位版本。所以有三个参数x,y和角度。您将注意到,在图1中,当一个正方形经历欧氏变换时,尺寸不会改变,平行线保持平行,并且在转换后直角保持不变。

仿射(MOTION_AFFINE):仿射变换是旋转、平移(移位)、缩放和剪切的组合,该变换有六个参数。当正方形经历仿射变换时,平行线保持平行,但是以直角相交的线不再保持正交。

单应性(MOTION_HOMOGRAPHY):上述所有变换都是2D变换。它们不考虑3D效果。另一方面,单应性变换可以解释一些3D效果(但不是全部)。该变换有8个参数。使用单应性转换时的正方形可以更改为任何四边形。

在OpenCV中,仿射变换参数存储在2×3大小的矩阵中。平移和欧氏变换是仿射变换的特例。在平移中,旋转,缩放和剪切参数为零,而在欧几里德变换中,缩放和剪切参数为零。因此,平移和欧氏变换也存储在2×3矩阵中。一旦估计了这个矩阵,就可以使用函数warpAffine使图像对齐。

另一方面,单应性变换参数存储在3×3矩阵中。一旦估计了单应性矩阵,就可以使用warpPerspective使图像对齐。

使用增强相关系数(ECC)最大化的图像对齐

OpenCV 3中引入的ECC图像对齐算法基于2008年题为“ Parametric Image Alignment using Enhanced Correlation Coefficient Maximization”的论文,由Georgios D. Evangelidis和Emmanouil Z. Psarakis撰写。他们建议使用称为增强相关系数(ECC)的新相似性度量来估计运动模型的参数。他们的方法有两个好处:

与像素强度差异的传统相似性度量不同,ECC对比度和亮度的光度失真不变。

虽然目标函数是参数的非线性函数,但它们为解决优化问题而开发的迭代方案是线性的。换句话说,他们解决了一个问题在表面上计算成本昂贵的问题,并找到了一种迭代求解的简单方法。

findTransformECC OpenCV中的示例

在OpenCV 3中,使用函数findTransformECC估计ECC图像对齐的运动模型。以下是使用findTransformECC的步骤

读取图像。

将它们转换为灰度。

选择你要估算的运动模型。

分配空间(warp_matrix)以存储运动模型。

定义终止条件,告诉算法何时停止。

使用findTransformECC估算warp矩阵。

将warp矩阵应用于其中一个图像,使其与另一个图像对齐。

让我们深入研究代码,了解如何使用它。

图2:从左到右依次是img1,img2,对齐结果

Python:

# 读取要对齐的图像

im1 =  cv2.imread("images/image1.jpg");

im2 =  cv2.imread("images/image2.jpg");

# 将图像转为灰度图像

im1_gray = cv2.cvtColor(im1,cv2.COLOR_BGR2GRAY)

im2_gray = cv2.cvtColor(im2,cv2.COLOR_BGR2GRAY)

# 得到img1的大小i

sz = im1.shape

# 定义运动模型

warp_mode = cv2.MOTION_TRANSLATION

# 根据运动模型创建一个2*3或3*3矩阵

if warp_mode == cv2.MOTION_HOMOGRAPHY :

    warp_matrix = np.eye(3, 3, dtype=np.float32)

else :

    warp_matrix = np.eye(2, 3, dtype=np.float32)

# 设置迭代次数.

number_of_iterations = 5000;

# 指定迭代递增的阈值-两个迭代之间的相关系数

termination_eps = 1e-10;

# 定义终止条件

criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, number_of_iterations,  termination_eps)

# 运行ECC算法,将结果存在warp_matrix中

(cc, warp_matrix) = cv2.findTransformECC (im1_gray,im2_gray,warp_matrix, warp_mode, criteria)

if warp_mode == cv2.MOTION_HOMOGRAPHY :

# 模型为单应性时用warpPerspective函数

im2_aligned = cv2.warpPerspective (im2, warp_matrix, (sz[1],sz[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP)

else :

# 模型为平移,欧氏和仿射时用warpAffine函数

im2_aligned = cv2.warpAffine(im2, warp_matrix, (sz[1],sz[0]), flags=cv2.INTER_LINEAR + cv2.WARP_INVERSE_MAP);

# 展示结果

cv2.imshow("Image 1", im1)

cv2.imshow("Image 2", im2)

cv2.imshow("Aligned Image 2", im2_aligned)

cv2.waitKey(0)

openCV【实践系列】1——OpenCV中的图像对齐

https://bbs.easyaiforum.cn/thread-671-1-1.html

(出处: 易学智能)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353