【发布时间】:2017-10-23 11:02:50
【问题描述】:
我的问题与图像注册有关。我在 .tif 文件中有许多图像,大小都相同。我将它们作为矩阵的 3D 数组读入 MATLAB,并尝试仅通过旋转来优化这些图像中的特征叠加。我尝试使用imabsdiff,但只使用如下所示的方法。 简而言之,我输入了一个向量,其中包含与堆栈中的图像一样多的角度。我将堆栈中的每个图像旋转每个相应的角度。然后,我计算绝对差异 ([image1-image2] + [image2-image1]),这是 imabsdiff 所做的,但速度更快。为此,我使用两个循环变量并将每个单独的图像与整个堆栈进行比较,同时省略了相同图像之间的比较。成本是所有图像之间差异的总和。
for oo = 1:slidecount
centered_stack(:,:,oo) = imrotate(centered_stack(:,:,oo),
angle_in(oo), 'bilinear', 'crop');
end
for pp = 1:slidecount
image1 = centered_stack(:,:,pp);
for qq = 1:slidecount
if qq ~= pp % only do this if comparing different images
image2 = centered_stack(:,:,qq);
cost_temp(qq) = sum(sum(abs(image1 - image2))) +
sum(sum(abs(image2 - image1)));
else
cost_temp(qq) = 0;
end
cost_temp = sum(cost_temp);
end
cost(pp) = cost_temp;
end
cost = sum(cost);
然后,这将作为优化过程的成本值。有人可以告诉我是否有更快的,也许是矢量化的方式来做到这一点,或者在概念上完全不同的方式?对于许多图像,这种方法非常耗时。基于 FFT 的注册可能吗?谢谢!
【问题讨论】:
-
只是一个问题:当您旋转和裁剪时,您最终不会得到黑色边框或其他较小尺寸的图像吗?如果是这样 - 这似乎人为地增加了绝对误差。您要解决的问题是什么?找到正确的旋转角度?另外,您使用的是哪个 MATLAB 版本?你有图像处理工具箱吗?
-
感谢您的回复。是的,我正在尝试找到正确的旋转角度,以获得图像中特征之间的最大叠加。我确实有图像处理工具箱,但像 imabsdiff 这样的东西只需要更多时间。 MATLAB 版本是 2016b。
标签: image matlab registration