从imregdemons调整位移场不产生准确的转换

7视图(30天)
问候,
我想注册两个图像(m =移动图像转换,s =静态参考图像)通过估计位移场(d)需要映射像素“m”“年代”。“m”和“s”最初downsampled图片,我无法计算' d '没有得到一个OutOfMemory错误(在GPUarray)。我的目标是用imregdemons计算' d ' downsampled版本的“m”和“s”,然后使用imresize重新调节' d '匹配原始图像的大小(接受轻微的对准精度的损失)。最后,我将使用imwarp应用放大位移场的全尺寸图像改变了形象。
然而,转换后的图像计算从扩大' d '出现截然不同的转换后的图像原来的规模。我希望有一些损失登记精度由于计算在downsampled数组,但是我怀疑有一个问题我新或如何如何应用转换。看下面的代码, 在这里 文件中使用的例子。
谢谢你花时间读这篇文章的时候,无论如果你能够提供帮助。
清晰的
关闭所有
% %加载图片,指定imregdemon参数
m = gpuArray (imread (“test_moving.tif”));
s = gpuArray (imread (“test_static.tif”));
m = imadjust (m);
s = imadjust(年代);
迭代= 100;
平滑= 3;
金字塔= 8;
% %计算位移场在正常图像
(d ~) = imregdemons (m、s、迭代“AccumulatedFieldSmoothing”平滑,“PyramidLevels”金字塔);
(移动,~)= imwarp(收集(m),聚(d));
imshow(猫(3,移动,s, s))
标题(“原比例尺图像位移场计算和应用”)
% %调整静态、移动和位移场数组
m_large = imresize(收集(m), 2);
s_large = imresize(收集(s), 2);
d_large = imresize(收集(d), 2);
moved_large = imwarp (m_large d_large);
图;
imshow (cat (3 moved_large s_large s_large))
标题(升级后的转换形象相对于静态静态的,移动,和位移场数组的)
图;
imshow (imresize(猫(3 moved_large s_large s_large), 1/2))
标题(“高档图像调整大小以原始大小。在理论上,他们应该是相同的第一个图+ / - 2像素x和y ')

接受的答案

赛义德·马克扎伊迪
赛义德·马克扎伊迪 2020年2月18日
原来,除了调整位移场,元素的大小也必须“调整大小”,在他们需要乘以比例因子(在本例中,位移场数组中的每个元素乘以2)。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!