从单分子图像测量DNA纤维的长度


14

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

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

特征被定义为在合成图像上的区域,其具有绿-红-蓝绿色-红色-绿色或等效地在果岭上2个相邻的直线段,并且是共线和传染性的红色。

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

我对该算法有以下建议:

  1. 首先确定共线的绿色线段(并确定绿色线段的长度)

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

非常感谢!

背景

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

在此处输入图片说明

原始图像(tif)位于:

图片示例1(投递箱)

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

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

请参见此图像作为示例:

在此处输入图片说明 原始图像(tif)位于:

图片示例2(下拉框)

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

题:

如果有人可以帮助我获取绿色和红色部分的各个部分的长度,我将不胜感激,例如,由于关注的特征是绿色-红色-绿松石-红色-绿色,每个特征将具有5个值的数组(第一个绿色片段的长度,第一个红色片段的长度,绿松石片段的长度,第二个红色片段的长度和第二个绿色片段的长度)。


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

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

Answers:


11

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*)  

在此处输入图片说明

编辑

在这里,您可能会看到红色和绿色群集分开。可以想象,您必须确定什么时候是红色的!

在此处输入图片说明


非常感谢您的回答。我不清楚蓝线应该代表什么,因为此图像中只有一个功能。是否可能只获得红色/绿色叠加线上的红色和绿色线段的长度?
李·桑德,

1
@李当然有可能!进行霍夫变换后,使用膨胀线作为遮罩并测量附近的红点。
belisarius博士2011年

@Lee唯一需要关心的是对“红色”有一个很好的定义:)
belisarius博士

@Lee如果您有权使用Mathematica,我可以发布更多代码以分隔各个部分
belisarius博士

非常感谢您的回复。我从您的答复中意识到,红色通道存在问题,与相邻绿色段重叠的信号必须被截断。我已更新了问题-您能否看一下并告诉我是否可行?
李·桑德,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.