我用 C# 编写了自己的软件来执行显微镜成像。请参阅此屏幕截图。
在那里可以看到的图像是相同的样本,但通过物理上不同的探测器记录。这些图像完全对齐对我的实验至关重要。我认为最简单的方法是以某种方式混合/减去这两个位图,但这并没有给我带来好的结果。因此,我正在寻找一种更好的方法来做到这一点。
指出图像作为强度数组存在于内存中并转换为位图以在屏幕上绘画到我自己编写的图像控件可能很有用。
我将不胜感激任何帮助!
我用 C# 编写了自己的软件来执行显微镜成像。请参阅此屏幕截图。
在那里可以看到的图像是相同的样本,但通过物理上不同的探测器记录。这些图像完全对齐对我的实验至关重要。我认为最简单的方法是以某种方式混合/减去这两个位图,但这并没有给我带来好的结果。因此,我正在寻找一种更好的方法来做到这一点。
指出图像作为强度数组存在于内存中并转换为位图以在屏幕上绘画到我自己编写的图像控件可能很有用。
我将不胜感激任何帮助!
如果图像的方向和大小相同,但在垂直或水平方向上略有偏移,您可以使用互相关来找到最佳对齐方式吗?
如果您知道黄色通道中的特征需要排列,例如,只需将黄色通道输入互相关算法,然后在结果中找到峰值。峰值将出现在两个图像排列得最好的偏移处。
它甚至适用于嘈杂的图像,我怀疑它甚至适用于显着不同的图像,比如你的截图。
MATLAB 示例:使用归一化互相关注册图像
维基百科称其为“相位相关”,并且还描述了使其具有缩放和旋转不变性:
该方法可以扩展到通过首先将图像转换为对数极坐标来确定两个图像之间的旋转和缩放差异。由于傅立叶变换的特性,旋转和缩放参数可以以不随平移变化的方式确定。
我前段时间解决了这个问题......因为我只需要验证来自两个检测器的两个图像是否完全对齐,并且如果它们不是我不必尝试对齐它们,我这样解决了它:
1) 使用Aforge 框架并对两个图像应用灰度滤镜。这将平均每个像素的 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();
当我要检查的两个图像中都存在重要特征时,它们将显示为黄色,从而完全符合我的需要。
感谢所有的投入!
所以检测器是不同的,所以对齐会有点错误,因为图像 1 中的像素 (256,512) 可能是图像 2 中的像素 (257,513) 表示的特征。这是问题吗?放大倍数呢?如果探测器不同,放大倍率不也有细微差别吗?
如果您的意思类似于上述内容,并且从您的屏幕截图来看,找到 4 或 5 个最高强度区域的中心应该不会太难 - 标准化数据并遍历整个图像寻找 9 个相邻的块具有最高平均强度的像素。请注意每个图像的四个或五个这些特征的中心像素。然后计算两个图像之间每组像素之间的距离。
如果所有集合的距离为 0,则两个图像应对齐。如果距离是恒定的,您所要做的就是移动一个图像该距离。如果距离变化,您将需要调整一张图像的大小直到它保持不变,然后滑动它以匹配特征。然后您可以平均两个图像的强度值,因为它们应该对齐。
无论如何,我就是这样开始的。
您可以对齐的唯一方法是图像中是否存在已知相同(或具有已知转换)的某些特征。一种常见的方法是在图像中放置一些东西——例如让图像捕获添加一个对齐伪影——一些易于检测并计算出标准化图像所需的转换的东西。
一个常见的例子是在角落放置 + 标记。有时您可能还会看到用于此目的的条形码。
如果没有这个人工制品,图像中必须有一些东西的大小和方向是已知的(并且在两个图像中都存在)。
如果图像是从不同的传感器生成的,那么问题通常会很困难。特别是对您而言,因为您的一张图像似乎有很多噪音。
假设传感器中没有翘曲或旋转,那么我建议您首先标准化每个图像的强度。然后找到使图像之间的误差最小化的偏移。误差可以是欧几里得(即每个像素的平方差的总和)。至少对我来说,这就是对齐的定义。