2009-06-08 68 views
1

我已经用C#编写了自己的软件来执行显微成像。看到这screenshot检查图像特征对齐

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

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

我将不胜感激任何帮助!

+1

请定义“完全对齐”的含义。完全一致的定义是什么? – 2009-06-08 23:03:23

+0

请参阅下面的进一步描述! – Kris 2009-06-09 15:25:34

+0

“完全一致”是什么意思?你的意思是你需要水平和垂直移动它们,使它们在空间上对齐,或者你的意思是“对齐”的其他内容。他们已经看起来一致,不是吗? – endolith 2009-07-24 00:14:33

回答

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(); 

当我想检查两幅图像中的重要特征时,它们将以黄色显示,从而完全符合我的需要。

感谢您的所有意见!

0

因此,探测器是不同的,所以对齐会有点不对,因为图像1中的像素(256,512)可能是图像2中像素(257,513)所代表的特征。是这个问题吗?放大怎么样?如果检测器不同,放大倍数是否也不会稍有不同?

如果你的意思是像上面那样,并从截图判断,找到4或5个最高强度区域的中心不应该太困难 - 规范化数据并浏览整个图像寻找具有最高平均强度的9个相邻像素块。注意每个图像的四个或五个这些特征的中心像素。然后计算两幅图像之间每组像素之间的距离。

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

无论如何,这就是我的开始。

+0

请参阅下面的进一步描述! – Kris 2009-06-09 15:24:32

0

如果图像是从不同的传感器生成的,那么通常这个问题将会很困难。特别是对于你来说,因为你的一个图像似乎有很多噪音。

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

+0

请参阅下面的进一步描述! – Kris 2009-06-09 15:23:52

0

您可以对齐的唯一方法是如果图像中存在某些已知是相同(或已知转换)的功能。一种常用的方法是在图像中添加东西 - 例如图像捕获会添加对齐伪像 - 这些东西易于检测并找出归一化图像所需的转换。

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

没有这个工件,图像中的大小和方向是已知的(并且存在于两个图像中)。

4

如果图像方向相同且大小相同,但纵向或横向略有偏移,您是否可以使用互相关来找到最佳对齐方式?

例如,如果您知道黄色通道中的要素需要排列起来,则只需将黄色通道馈送到互相关算法中,然后在结果中找到峰值。峰值将出现在两幅图像排列最好的偏移处。

即使在嘈杂的图像下也能正常工作,并且我怀疑它甚至可以用于显示截然不同的图像。

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

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

的方法可以扩展由第一转换图像,以记录到确定旋转和两个图像之间的缩放差异-极坐标。由于傅立叶变换的特性,旋转和缩放参数可以以对平移不变的方式确定。