【问题标题】:Using OpenCV to analyze data from protein gels使用 OpenCV 分析蛋白质凝胶数据
【发布时间】:2011-06-27 18:00:13
【问题描述】:

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

对于那些不熟悉的人来说,变性蛋白质的混合物(基本上,分子完全是直的)被加载到每根柱子中,并在电力的作用下将蛋白质拉过凝胶(因为蛋白质是极性分子) .此图像http://i52.tinypic.com/205cyrl.gif 每一侧的最后一列是放置已知重量的蛋白质混合物的位置(因此,如果您有 4 个不同的重量,顶部的条带是最大的重量,蛋白质的重量/大小减小它向下移动的距离越远)。是否可以使用 OpenCV 进行分析?给定的图像是一个看起来很干净的凝胶,它们经常会变得很乱(见谷歌图片)。我想如果我允许用​​户输入列数,哪些列包含已知的重量标记和它们的实际重量,并提供一个可调整的矩形来调整凝胶边缘的大小,那么也许可以扫描和从这些凝胶的图像中提取数据?我浏览了一本关于 OpenCV 的教科书,但没有看到任何明显和可靠的方法可以解决这个问题。有任何想法吗?也许不同的库会更适合?

【问题讨论】:

    标签: android image-processing opencv computer-vision


    【解决方案1】:

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

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

    您的应用会大步执行以下步骤:

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

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

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

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

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

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

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

    【讨论】:

    • 这听起来可能无关紧要,但您可能会查看最近的支票存款移动应用程序,以获取有关如何指导用户拍照进行分析的灵感。诸如“对齐凝胶柱,使其适合这条线或框内”之类的内容将帮助您对图像数据做出某些假设,并避免处理重新对齐照片等问题。基本上,使用好的 UI 设计来引导用户创建干净的图像,这样您就不必担心会自动清理它。
    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    相关资源
    最近更新 更多