我是一位生物学家,对图像处理的经验很少,但是对MATLAB有足够的了解,并且拥有图像处理工具箱。理想情况下,我正在寻找基于MATLAB的解决方案,但是概述如何进行操作的方法也将有所帮助。

更新(2011年11月28日)
似乎存在某些问题(例如使用合成图像时的信号重叠和颜色定义)(这就是我最初提出的问题)。我要附加来自两个通道的单独图像:绿色和红色(合成图像中的绿松石区域可以忽略)和合成图像。红色通道不好的原因有两个:1.由于较高的背景,对比度较差; 2.由于红色在背景水平上似乎渗入绿色。

特征被定义为合成图像上具有
绿色-红色-绿松石-红色-绿色或等效地在绿色和红色上共线的两个相邻线性段的区域且具有传染性。

我希望从两个单独的通道查看图像可以使特征识别更加容易。

我对算法有以下建议:
/>

首先确定共线的绿色线段(并确定绿色线段的长度)
确定是否存在相邻的传染性和共线线段彼此面对(即,绿色->红色- > <-红色<-绿色)。如果是,请定义红色分段的长度,从绿色分段的结束点(因为它们将与绿色分段重叠)到红色分段上最接近要素的另一个红色分段的点。 (即红色分段的一端设置为重叠的绿色分段的一端)。

非常感谢!

背景:

我的问题与从图像中提取特征有关:



原始图像(tif)位于:


图像示例1(投递箱)


此图像是3个通道(在tif格式):红色,绿色和青绿色。绿松石色的纤维简单地标记了盖玻片上的所有DNA。感兴趣的特征是图像中间的一条DNA链上的绿色-红色-绿松石-红色-绿色特征。

红色通常是最吵的。这个例子很好,因为对比度很好。但是,有时图像不是很好,并且整个图像中都有色调,因此硬编码绿色和红色的特定RGB值可能不适用于所有图像。另外,请注意,光纤不一定是水平的,它们可以旋转(但绝不能垂直)。

请参见此图像作为示例:


原始图像(tif)位于:


图像示例2(保管箱)



此外,有时单个图像具有许多此类特征,而有时在同一DNA链上具有多个特征。最后,有时可能只有部分特征(即孤立的绿色或孤立的红色或孤立的绿红色段,但未配对)。

问题:

如果有人可以帮助我获得绿色和红色部分各个部分的长度,我将不胜感激,即由于感兴趣的特征是绿色-红色--turquoise--红绿色,每个要素将具有5个值的数组(第一个绿色段的长度,第一个红色段的长度,绿松石段的长度,第二个Red段的长度以及第二个绿色部分)。

评论

您好,此问题即将迁移到信号处理。我们的重点是图像处理和算法,我已经编辑了您的问题。尽管在MATLAB中可能有一些知识渊博的人,但是您可能会获得其他语言(或伪代码)的解决方案,这将引导您获得答案。如果您仍然不愿意在MATLAB中实现该解决方案(假设您尚未获得MATLAB的答案),则可以随时返回Stack Overflow寻求翻译帮助。

第一步应该是将每个信号存储在其独立的通道中。是的,CFP是绿松石色的,但是您不必从绿色通道中解开它的信号。

#1 楼

Mathematica中的示例:

(* Get your image*)
img = Import["http://dl.dropbox.com/u/18072545/c_29.tif"];
(*Detect the extended minima and remove background*)
nB = ImageSubtract[img, ColorNegate@FillingTransform@ColorNegate[img]]  




(*Separate RGB channels*)
cS = ImageAdjust /@ ColorSeparate[img]




(*Binarize*)
bcS = Binarize[#, .4] & /@ cS  




(*Remove large elements*)
tH = TopHatTransform[#, DiskMatrix[2]] & /@ bcS  




(*Detect lines using a Hough Transform*)
lines = ImageLines[#, .01, .8] & /@ tH
(*Plot them*)
Show[img, Graphics[{
   Thickness[.01], Red, Line /@ (lines[[1]]),
   Thickness[.006], Green, Line /@ (lines[[2]]),
   Thickness[.004], Blue, Line /@ (lines[[3]])}]]
(*Red and green are superimposed*)  




编辑

在这里您可能会看到红色和绿色簇分开。可以想象,您必须确定何时红色部分!



评论


$ \ begingroup $
非常感谢您的回答。我不清楚蓝线应该代表什么,因为此图像中只有一个功能。是否可能只获得红色/绿色叠加线上的红色和绿色线段的长度?
$ \ endgroup $
–李·桑德(Lee Sande)
2011-11-27 14:46

$ \ begingroup $
@Lee当然可以!进行霍夫变换后,使用膨胀线作为遮罩并测量附近的红点。
$ \ endgroup $
– belisarius博士
2011年11月27日15:20



$ \ begingroup $
@Lee唯一要关心的就是对“ red”有一个很好的定义:)
$ \ endgroup $
– belisarius博士
11-11-27在16:07

$ \ begingroup $
@Lee如果您有权使用Mathematica,我可以发布更多代码以分隔各部分
$ \ endgroup $
– belisarius博士
11年11月27日在16:53

$ \ begingroup $
非常感谢您的回复。我从您的答复中意识到,红色通道存在问题,与相邻绿色段重叠的信号必须被截断。我已经更新了问题-您能否看一下并告诉我是否合理?
$ \ endgroup $
–李·桑德(Lee Sande)
2011-11-28 14:37