android - 使用 OpenCV 分析蛋白质凝胶的数据

标签 android image-processing opencv computer-vision

所以我想做的是编写一个应用程序,至少在未来可以移植到移动平台(例如 android),可以扫描蛋白质凝胶图像并返回数据,例如 strip 数列中的(即权重),相对浓度( strip 的厚度)以及每列中每个的权重。

对于那些不熟悉的人,将变性蛋白质的混合物(基本上,分子直接制成)加载到每个柱子中,并使用电流将蛋白质拉过凝胶(因为蛋白质是极性分子) .此图像每一侧的结束列 http://i52.tinypic.com/205cyrl.gif是你放置已知重量蛋白质混合物的地方(所以如果你有 4 个不同的重量,顶部的带是最大的重量,并且蛋白质的重量/大小随着它向下传播而减小)。使用 OpenCV 可以分析这样的事情吗?给定的图像是一种看起来非常干净的凝胶,它们通常会变得非常困惑(参见谷歌图像)。我想如果我允许用​​户输入列数,哪些列包含已知的重量标记和它们的实际重量,以及提供一个可调整的矩形来调整凝胶边缘的大小,那么也许可以扫描和从这些凝胶的图像中提取数据?我浏览了一本关于 OpenCV 的教科书,但我没有看到任何明显和可靠的方法可以解决这个问题。有任何想法吗?也许不同的库会更合适?

最佳答案

我相信你可以使用 OpenCV 做到这一点

我的方法是基于颜色的分离。然后计算单独的不同组件。

在大步骤中,您的应用将执行以下步骤:

  1. 加载图像,通过应用的 GUI 手动旋转图像,以满足您的需求

  2. 创建第二张灰度图像,其中每个像素包含一个介于 [0,255] 之间的值,表示原始点的颜色与目标颜色的匹配程度(在 this image 的情况下为蓝色阴影) 在我的一个实验中,我使用了模糊集和 alpha 切割的概念来提取特定颜色的对象。三角隶属函数给了我很好的结果。这只是意味着我已经定义了 triangular functions for all three color channels RGB,并对作为输入给出的每种颜色的结果求和。如果颜色值接近三角形的中心,那么我就有很强的相似性。另外,通过控制三角形的宽度,您可以定义匹配的公差。 (另一种选择是使用梯形隶属函数)

  3. 此时您有一个灰度图像,其中背景(凝胶)为黑色,蛋白质为灰/白色。如果您想清除一些噪音,请使用 morphological operators (第 127 页)侵 eclipse 和扩张(openCV 中的 cvErode 和 cvDelate)。

  4. 之后,可以用这个great openCV based blob extraction library提取剩余灰色区域的边界框 - 代表蛋白质

  5. 有了边界框的所有坐标,您就可以应用自己的算法来提取您想要的任何数据

在我看来,OpenCV 为您提供了所有必要的工具。但是,可能很难获得完全自动化的解决方案。但我相信您可以轻松构建一个 GUI,您可以在其中设置在上述步骤中应用的运算符的参数

至于 Android:我没有为移动平台开发,但我知道你可以为这些设备创建 C++ 应用程序——已经阅读了几个关于 iPhone 和 openCV 的问题——所以我认为你的应用程序是可移植的,或者至少它的图像处理部分(GUI 可能过于特定于平台)。

关于android - 使用 OpenCV 分析蛋白质凝胶的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496954/

相关文章:

python - 使用python仅在R(红色) channel 中显示图像

c++ - 什么是本地峰值检测器skimage.feature.peak_local_max的C++实现或类似物?

python - 如何使用霍夫变换查找图像中的行数?

android - Graphhopper。我可以只加载部分图形文件以避免 OutOfMemory 错误吗?

android - 为我的项目启用 Google Cloud Build API 时出错?

opencv - OPENCV无法同时读取2个视频帧

matlab - VLFeat - 如何修复 "Warning: Name is nonexistent or not a directory"?

image-processing - 有没有办法检测图像是否模糊?

android - 如何在android中获得锁屏广播

android - 在 android studio 中找不到我的自定义 View 的自定义属性