Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 检查图像特征对齐_Image Processing_Image Manipulation_Pixel_Blend - Fatal编程技术网

Image processing 检查图像特征对齐

Image processing 检查图像特征对齐,image-processing,image-manipulation,pixel,blend,Image Processing,Image Manipulation,Pixel,Blend,我已经用C编写了自己的软件来执行显微镜成像。看这个 在那里可以看到的图像是相同的样本,但通过物理上不同的探测器记录的。对我的实验来说,这些图像精确对齐是至关重要的。我认为最简单的方法是以某种方式混合/减去这两个位图,但这并没有给我好的结果。因此,我正在寻找一个更好的方法来做到这一点 需要指出的是,图像在内存中以强度数组的形式存在,并被转换为位图,以便在屏幕上绘制到我自己编写的图像控件 我将非常感谢任何帮助 因此检测器不同,因此对齐会有点错误,因为图像1中的像素256512可能是图像2中的像素25

我已经用C编写了自己的软件来执行显微镜成像。看这个

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

需要指出的是,图像在内存中以强度数组的形式存在,并被转换为位图,以便在屏幕上绘制到我自己编写的图像控件


我将非常感谢任何帮助

因此检测器不同,因此对齐会有点错误,因为图像1中的像素256512可能是图像2中的像素257513表示的特征。这就是问题所在吗?放大率呢?如果探测器是不同的,那么放大率是否也会略有不同

如果你的意思与上面类似,并且从你的屏幕截图判断,找到4个或5个最高强度区域的中心应该不会太困难-将数据标准化,并遍历整个图像,查找9个相邻像素块的最高平均强度。请注意每个图像的四个或五个特征的中心像素。然后计算两幅图像之间每组像素之间的距离

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


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

因此检测器不同,因此对齐会有点错误,因为图像1中的像素256512可能是由图像2中的像素257513表示的特征。这就是问题所在吗?放大率呢?如果探测器是不同的,那么放大率是否也会略有不同

如果你的意思与上面类似,并且从你的屏幕截图判断,找到4个或5个最高强度区域的中心应该不会太困难-将数据标准化,并遍历整个图像,查找9个相邻像素块的最高平均强度。请注意每个图像的四个或五个特征的中心像素。然后计算两幅图像之间每组像素之间的距离

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


不管怎样,这就是我将如何开始的。

如果图像是从不同的传感器生成的,那么一般来说,问题将很难解决。特别是对你来说,因为你的一张图片似乎有很多噪音


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

如果图像是由不同的传感器生成的,那么问题通常会很难解决。特别是对你来说,因为你的一张图片似乎有很多噪音


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

唯一可以对齐的方法是图像中是否存在已知相同或已知变换的特征。一种常见的方法是在图像中放置一些东西——例如,让图像捕获添加一个对齐伪影——一些容易检测并找出规范化图像所需的转换的东西

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


如果没有此伪影,图像中必须存在已知大小和方向且存在于两个图像中的内容。

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

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


如果没有这种伪影,图像中一定有某种东西的大小和方向是已知的,并且存在于两幅图像中。

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

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

它甚至适用于嘈杂的图像,我怀疑它甚至适用于显著不同的图像,比如你的屏幕截图

MATLAB示例:

Wikipedia称之为此,并描述了:

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


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

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

它甚至适用于嘈杂的图像,我怀疑它甚至适用于显著不同的图像,比如你的屏幕截图

MATLAB示例:

Wikipedia称之为此,并描述了:

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


我前一段时间解决了这个问题。。。因为我只需要验证两个探测器的两个图像是否完全对齐,而且如果没有对齐,我不必尝试对齐它们,所以我按如下方式解决:

1使用并对两幅图像应用灰度过滤器。这将平均每个像素的RGB值。 2在一幅图像上应用通道过滤器以仅保留红色通道。 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使用并对两幅图像应用灰度过滤器。这将平均每个像素的RGB值。 2在一幅图像上应用通道过滤器以仅保留红色通道。 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();
当我想检查的两幅图像中都有重要的特征时,它们将以黄色显示,这样做正是我所需要的


感谢所有的投入

请定义“精确对齐”的含义。您对精确对齐的定义是什么?请参阅下面的详细说明!你说的完全对齐是什么意思?你的意思是需要水平和垂直移动它们,以便它们在空间上对齐,还是说对齐是指其他的东西。它们看起来已经对齐了,不是吗?请定义你所说的完全对齐是什么意思。您对精确对齐的定义是什么?请参阅下面的详细说明!你说的完全对齐是什么意思?你的意思是需要水平和垂直移动它们,以便它们在空间上对齐,还是说对齐是指其他的东西。它们看起来已经对齐了,不是吗?嗨,伙计们,谢谢你们的回复。我想我应该澄清一点:图像记录在相同的物理设置上,用作探测器的光子计数器也是固定的。唯一的变量是我用来照亮样品的两束激光束。应完全照亮相同体积的样品,为此,需要使用光学装置对齐。检查这一点的方法是分别使用两个激光器记录图像,并以某种方式结合t
褶边一台激光器的分辨率应该比另一台高得多。。。我想对两幅图像进行标准化。如果我在不同的颜色空间中对每幅图像进行标准化,例如绿色和红色,然后添加图像。。。我可以期望在重叠区域看到黄色。如果黄色小片位于另一个通道的大片的中心,则两个激光器都对齐。看到这个屏幕截图:我在一个商业软件包中看到了一个类似的实现,但我不知道足够的GDI来正确处理规范化。所以如果有人能帮上忙,我想我的问题解决了!只是想补充一点,我真的需要在红色或绿色通道空间上对图像进行规范化。仅仅从任一图像中提取红色或绿色并添加它们并不能得到很好的结果。我可能还需要对我的图像进行某种形式的阈值处理,因为它们可能会很嘈杂。嗨,伙计们,谢谢你们的回复。我想我应该澄清一点:图像记录在相同的物理设置上,用作探测器的光子计数器也是固定的。唯一的变量是我用来照亮样品的两束激光束。应完全照亮相同体积的样品,为此,需要使用光学装置对齐。检查这一点的方法是分别使用两个激光器记录图像,并以某种方式将它们组合起来。一台激光器的分辨率应该比另一台高得多。。。我想对两幅图像进行标准化。如果我在不同的颜色空间中对每幅图像进行标准化,例如绿色和红色,然后添加图像。。。我可以期望在重叠区域看到黄色。如果黄色小片位于另一个通道的大片的中心,则两个激光器都对齐。看到这个屏幕截图:我在一个商业软件包中看到了一个类似的实现,但我不知道足够的GDI来正确处理规范化。所以如果有人能帮上忙,我想我的问题解决了!只是想补充一点,我真的需要在红色或绿色通道空间上对图像进行规范化。仅仅从任一图像中提取红色或绿色并添加它们并不能得到很好的结果。我可能还需要为我的图像设置某种形式的阈值,因为它们可能会有噪音。请参阅下面的进一步说明!请参阅下面的进一步说明!请参阅下面的进一步说明!请参阅下面的进一步说明!谢谢你发布你的解决方案,你帮了我大忙。谢谢你发布你的解决方案,你帮了我大忙。