【问题标题】:Calculating differences between many images计算许多图像之间的差异
【发布时间】: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


【解决方案1】:

在您的代码中,您将每对图像比较两次:

  1. image_1 到 image_2(pp == 1,qq == 2)
  2. image_2 到 image_1(pp == 2,qq == 1)

这是故意的吗?如果你让第二个循环看起来像这样:

for qq = (pp+1):slidecount

您将计算量减少 2 倍。您检查 qq ~= pp 的条件也将不再需要。

【讨论】:

  • 您好 pkic,感谢您的回复。你是对的,看起来我比较的图像比我需要的要多。感谢您的关注,我会尝试您的建议!
  • 嗨@drummy_1,感谢您接受我的回答。我对您的代码有另一个疑问。我对数学的理解告诉我abs(image1 - image2)abs(image2-image1) 完全一样。您是否有任何特殊原因要执行此操作两次?唯一的原因是看到这些操作会有所不同是因为您有溢出问题(例如,您的图像属于 uint8 类型:uint8(5) - uint8(10) = 0 而 uint8(10) - uint8(5) = 5) .如果这是您的问题,我建议您更改图像的格式,因为代码并没有真正做到您想要的。
  • 你好pkic,你是对的,这是使用uint8的问题。但是,由于尽可能少地篡改这些图像非常重要,因此我们将它们保持不变。在这种情况下,采用 abs(image1-image2) 给出的值与 abs(image2-image1) 不同。也许令人惊讶的是,代码可以完美地做到这一点!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多