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

Stitching overlaying images from different cameras in Matlab

两个摄像头拍摄了木板的两张图像。这些图像有木板的重叠,我需要以一种看起来自然的方式将其缝合在一起,并且最好是无缝的,以便于检查。图像被裁剪成相同的大小并被遮盖以去除背景和大部分非重叠区域,但木板在传送带上可能会略微倾斜。

目前我在一般覆盖区域上使用 normxcorr2 函数,遵循 Matlab totorial of the normxcorr2 函数的想法,尝试识别其他并按照教程计算出叠加偏移量。然而,这经常失败,因为 normxcorr2 函数 returns 零偏移 - 导致拼接错误:

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 不能总是找到正确的图像叠加层,或者根本没有任何叠加层(?),即使我试图通过函数 [=35= 增加灰度对比度来使其更容易]histeq。我的猜测是边材的 "gray-ish" 面积超过了明显的节,这是正确缝合的重要部分。

有没有人知道一种方法可以增加这种拼接过程的可能性,也许通过更多的预处理,或者使用任何其他 matlab skills/functions 来使这项工作更好?

P.S 除了可自由访问的脚本,我不能使用任何东西,因为这可能会成为我项目的 license/copyright 个问题。

感谢您抽出宝贵时间提供帮助!

你应该看看下面的link。您应该查找的术语是 image registration。还有比normxcorr2

更高级的方法