【问题标题】:Checking image feature alignment检查图像特征对齐
【发布时间】:2010-11-01 07:58:51
【问题描述】:

我用 C# 编写了自己的软件来执行显微镜成像。请参阅此screenshot

在那里可以看到的图像来自相同的样本,但通过物理上不同的探测器记录。这些图像完全对齐对我的实验至关重要。我认为最简单的方法是以某种方式混合/减去这两个位图,但这并没有给我带来好的结果。因此,我正在寻找一种更好的方法来做到这一点。

指出图像作为强度数组存在于内存中并被转换为位图以在屏幕上绘制到我自己编写的图像控件可能很有用。

我将非常感谢任何帮助!

【问题讨论】:

  • 请定义“完全对齐”的含义。您对完全对齐的定义是什么?
  • 更多描述见下文!
  • “完全对齐”是什么意思?你的意思是你需要水平和垂直移动它们,以便它们在空间上对齐,或者你的意思是“对齐”的其他意思。它们看起来已经对齐了,不是吗?

标签: image-processing image-manipulation pixel blend


【解决方案1】:

我前段时间解决了这个问题......因为我只需要验证来自两个检测器的两个图像是否完全对齐,并且如果它们不是我不必尝试对齐它们,我像这样解决了它:

1) 使用Aforge Framework 并对两个图像应用灰度滤镜。这将平均每个像素的 RGB 值。 2) 在一张图像上应用 ChannelFilter 以仅保留红色通道。 3) 在另一张图像上,应用 ChannelFilter 以仅保留绿色通道。 4) 添加两张图片。

这是我使用的过滤器,如果需要,我留给读者应用它们(这很简单,Aforge 网站上有示例)。

AForge.Imaging.Filters.IFilter filterR = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.IFilter filterG = new AForge.Imaging.Filters.ChannelFiltering(new AForge.IntRange( 0, 0 ), new AForge.IntRange( 0, 255 ), new AForge.IntRange( 0, 0 ));
AForge.Imaging.Filters.GrayscaleRMY FilterGray= new AForge.Imaging.Filters.GrayscaleRMY();
AForge.Imaging.Filters.Add filterADD = new AForge.Imaging.Filters.Add();

当我要检查的两个图像中都存在重要特征时,它们将显示为黄色,从而完全符合我的需要。

感谢大家的意见!

【讨论】:

  • 感谢您发布您的解决方案,您帮了我很大的忙。
【解决方案2】:

如果图像的方向和大小相同,但在垂直或水平方向上略有偏移,您能否使用互相关来找到最佳对齐方式?

如果您知道黄色通道中的特征需要排列,例如,只需将黄色通道输入互相关算法,然后在结果中找到峰值。峰值将出现在两个图像最佳排列的偏移处。

它甚至适用于嘈杂的图像,我怀疑它甚至适用于显着不同的图像,例如您的屏幕截图。

MATLAB 示例:Registering an Image Using Normalized Cross-Correlation

维基百科称其为“phase correlation”并且还描述了making it scale- and rotation-invariant

该方法可以扩展到通过首先将图像转换为对数极坐标来确定两个图像之间的旋转和缩放差异。由于傅里叶变换的特性,旋转和缩放参数可以以一种平移不变的方式确定。

【讨论】:

    【解决方案3】:

    您可以对齐的唯一方法是图像中是否存在已知相同(或具有已知变换)的某些特征。一种常见的方法是在图像中放置一些东西——例如让图像捕获添加一个对齐伪影——一些易于检测并计算出标准化图像所需的变换的东西。

    一个常见的例子是在角落放置 + 标记。有时您可能还会看到用于此目的的条形码。

    如果没有这个人工制品,图像中一定有一些东西的大小和方向是已知的(并且在两个图像中都存在)。

    【讨论】:

    • 大家好,已经感谢您的回复。我想我应该澄清一下:图像是在相同的物理设置上记录的,用作检测器的光子计数器也是固定的。唯一的变量是我用来照亮样品的激光束。应该照亮完全相同体积的样品,为此需要使用光学器件进行对准。检查这一点的方法是分别使用两个激光器记录图像,然后以某种方式将它们组合起来。一种激光应该比另一种提供更高的分辨率......我正在考虑对两个图像进行归一化。
    • 如果我在不同的颜色空间(例如绿色和红色)中对每一个进行标准化,然后添加图像......我可以预期在重叠区域看到黄色。如果黄色的小圆盘位于另一个通道的大圆盘的中心,则两个激光器都是对齐的。请参阅此屏幕截图:picasaweb.google.com/lh/photo/… 我在商业包中看到了类似的实现,但我不知道足够的 GDI 来正确处理规范化。因此,如果有人可以提供帮助,我认为我的问题已经解决了!
    • 只是想补充一点,我真的需要在红色或绿色通道空间上标准化图像。仅从任一图像中提取红色或绿色并添加它们并不能得到很好的结果。我可能还需要对我的图像进行某种形式的阈值处理,因为它们可能很嘈杂。
    【解决方案4】:

    如果图像是从不同的传感器生成的,那么问题通常会很困难。特别是对您而言,因为您的一张图像似乎有很多噪音。

    假设传感器中没有翘曲或旋转,那么我建议您首先标准化每个图像的强度。然后找到使图像之间的误差最小化的偏移。误差可以是欧几里得(即每个像素的平方差的总和)。至少对我来说,这就是对齐的定义。

    【讨论】:

    • 更多描述见下文!
    【解决方案5】:

    所以检测器不同,所以对齐会有点错误,因为图像 1 中的像素 (256,512) 可能是图像 2 中的像素 (257,513) 表示的特征。这是问题所在吗?放大倍数呢?如果探测器不同,放大倍率不也有一点不同吗?

    如果您的意思类似于上述内容,并且从您的屏幕截图来看,找到 4 或 5 个最高强度区域的中心应该不会太难 - 标准化数据并遍历整个图像寻找块具有最高平均强度的 9 个相邻像素。请注意每个图像的四个或五个这些特征的中心像素。然后计算两幅图像每组像素之间的距离。

    如果所有集合的距离均为 0,则两个图像应对齐。如果距离是恒定的,您所要做的就是移动一个图像该距离。如果距离变化,您将需要调整一张图像的大小直到它保持不变,然后滑动它以匹配特征。然后你可以平均两个图像的强度值,因为它们应该是对齐的。

    反正我就是这样开始的。

    【讨论】:

    • 更多描述见下文!
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 2011-11-26
    • 2017-10-25
    相关资源
    最近更新 更多