Joh*_*acs 5 android opencv image-processing computer-vision
所以我想做的是编写一个应用程序,至少在未来,可以移植到移动平台(如android),可以扫描蛋白质凝胶的图像并返回数据,如带的数量(即权重) )在一列中,相对浓度(带的厚度),以及每列中每个的重量.
对于那些不熟悉的人,将变性蛋白质的混合物(基本上是直接完成的分子)加载到每个柱子中,并且通过使用电力将蛋白质拉过凝胶(因为蛋白质是极性分子).这张图片每侧的末端栏http://i52.tinypic.com/205cyrl.gif是放置已知重量蛋白质混合物的地方(所以如果你有4种不同的重量,顶部的带子是最大的重量,蛋白质的重量/大小随着它向下移动而减少.是否可以使用OpenCV进行分析?给定的图像是一个非常干净的凝胶,它们经常会变得非常混乱(参见谷歌图片).我想如果我允许用户输入列数,哪些列包含已知的重量标记和它们的实际重量,以及提供一个可调节的矩形来调整凝胶边缘的大小,也许可以扫描和从这些凝胶的图像中提取数据?我浏览了一本关于OpenCV的教科书,但我没有看到任何明显可靠的方法来解决这个问题.有任何想法吗?也许一个不同的图书馆会更适合?
我相信你可以使用OpenCV来做到这一点
我的方法是基于颜色的分离.然后计算单独的不同组件.
在大步骤中,您的应用程序将执行以下步骤:
加载图像,通过应用程序的GUI手动旋转图像,以满足您的需求
创建第二个灰度图像,其中每个像素包含介于[0,255]之间的值,表示原始点的颜色与目标颜色的匹配程度(在此图像的情况下为蓝色阴影)在我的一个实验中,我我们使用模糊集和alpha切割的概念来提取某种颜色的对象.三角隶属函数给了我很好的结果.这只是意味着我为所有三个颜色通道 RGB 定义了三角函数,并将每个颜色的结果相加作为输入.如果颜色的值接近三角形的中心,那么我有很强的相似性.另外,通过控制三角形的宽度,您可以定义匹配的容差.(另一种选择是使用梯形隶属函数)
此时你有一个灰度图像,背景(凝胶)是黑色,蛋白质是灰色/白色.如果您希望清除某些噪音,请使用形态学运算符(第127页)侵蚀和扩张(cvErode和cvDelate在openCV中).
在它之后,可以使用这个伟大的基于openCV的blob提取库来提取剩余灰色区域的边界框 - 代表蛋白质
拥有边界框的所有坐标,您可以应用自己的算法,以提取您想要的任何数据
在我看来,OpenCV为您提供了所有必要的工具.但是,可能很难获得完全自动化的解决方案.但我确信您可以轻松构建一个GUI,您可以在其中设置在上述步骤中应用的运算符的参数
至于Android:我没有为移动平台开发,但我知道你可以为这些设备创建C++应用程序 - 已经读过几个关于iPhone和openCV的问题 - 所以我认为你的应用程序是可移植的,或者至少是图像处理的一部分(GUI可能过于特定于平台).