查找图像中的特定形状
我遇到以下问题,我正在处理显示 DNA 片段(显示为白色条带)的凝胶电泳图像 [A][B]。我想提取它们并分析它们(正确的位置是已知大小和浓度的标准,可以推断到其他三个样本)。每个样品都加载到泳道中。一项任务是找到泳道(在本例中为 4 个),另一项任务是提取图片中 DNA 带存在的位置。
我在寻找乐队时遇到一些问题。我已经尝试了几件事,例如像素比较、边缘检测、角点检测、模板匹配、二值图像,但所有这些都给出了不足的结果,特别是如果图片很糟糕(可能是一个糟糕的运行,有点拖尾[C])或如果乐队彼此接近。
由于我不是图像专家,有人可以删除一些在这种情况下通常使用的关键字吗?其实我什至不确定问题是关于图像分割还是模式识别?!
任何提示将不胜感激(还有初学者的书籍)。
提前致谢!
[A] http://en.wikipedia.org/wiki/Gel_ electrophoresis
[B]
< img src="https://i.sstatic.net/dnA81.png" alt="DNA 凝胶电泳图像">
[C]
I have the following problem, I'm working with gel electrophoresis images [A][B] which show DNA fragments (appear as white bands). I want to extract them and analyze them (on the right site is a standard of known size and concentration, which can be extrapolate to the other three samples). Each sample is loaded into a lane. One task is to find the lanes (in this case 4) and the other to extract at which position in the picture a DNA band is present.
I have some problems with finding the bands. I tried already several things, e.g. pixel comparison, edge detection, corner detection, template matching, binary image, but all of them give insufficient results especially if the pictures are bad (might be a bad ran, kind of smearing[C]) or if the bands are to close tot each other.
Since I'm not an image expert, could someone drop some keywords what is usually used in such cases? Actually I'm even not sure whether the problem is about image segmentation or pattern recognition?!
Any hints would be highly appreciated (also books for beginners).
Thanks in advance!
[A] http://en.wikipedia.org/wiki/Gel_electrophoresis
[B]
[C]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下,轮廓提取可能会起作用:在车道上截取图像的垂直切片(假设您大致了解位置),并对切片的每一行上的像素值进行平均。这将为您提供一维信号,其中条带显示为不同高度的不同峰。
您可以通过查找局部最大值(此处不太稳健)来检测峰值位置,或者更好地通过查找足够长的递增和递减信号值序列来检测峰值位置。
我更愿意称之为分割问题。
最后提示:泳道也可以通过分析通过对列进行平均而获得的轮廓来定位。
In this case, profile extraction will probably do the trick: take a vertical slice of the image across a lane (assuming you have a rough idea of the position), and average the pixel values on every row of the slice. This will give you a 1D signal where the bands appear as distinct peaks of varying heights.
You can detect the peak locations by looking for local maxima (not so robust here), or better by finding sufficiently long increasing and decreasing signal value sequences.
I would more call this a segmentation problem.
Final hint: the lanes might also be located by analysing the profile obtained by averaging on the columns.