在Matlab中拼接来自不同相机的图像

时间:2017-08-17 14:28:57

标签: matlab image-processing image-stitching

两个相机拍摄两张木板图像。图像具有木板的重叠,我需要以一种看起来自然的方式缝合在一起,并且为了检查目的,优选地与人眼无缝。将图像裁剪成相同的尺寸并遮盖以去除背景和大部分非重叠区域,但是木板可以在传送带上略微倾斜。

目前我在一般覆盖区域使用 normxcorr2 函数,遵循normxcorr2函数的Matlab totorial的想法,尝试识别另一个中的一个图像并且工作按照教程,输出叠加偏移量。然而,这经常失败,因为normxcorr2函数返回零偏移 - 导致拼接错误:

c = normxcorr2(plank_part1,plank_part2);

在互相关中找到峰值:

[ypeak, xpeak] = ind(c==max(c(:)));

考虑normxcorr2添加的填充:

yoffSet = ypeak-size(onion,1);
xoffSet = xpeak-size(onion,2);

[xoffSet,yoffSet]

ans =

0     0

似乎normxcorr2无法始终找到图像的正确叠加,或任何叠加(?),即使我试图通过函数 histeq增加灰度对比度来使其更容易。我的猜测是" grey ish"边材的区域压倒了明显的结,这是正确拼接的重要部分。

Simple gray scale example

High contrast example

有没有人知道如何增加这种拼接过程的可能性,可能通过一些更多的预处理,或使用任何其他matlab技能​​/功能来使这项工作更好?

P.S我不能使用任何可以自由访问的脚本,因为这可能会成为我项目的许可/版权问题。

感谢您抽出时间帮忙!

1 个答案:

答案 0 :(得分:2)

您应该查看以下链接。您应该寻找的术语是image registration。有比normxcorr2

更先进的方法