python – 图像分析:在图像中查找蛋白质
作者:互联网
我正在尝试编写一个程序,它将自动定位图像中的蛋白质,这最终将用于区分存在的两种不同高度的蛋白质.
背景顶部的白色区域是蛋白质所在的膜,而存在的白色斑点是蛋白质.蛋白质有两个叶片,因此它们成对出现(实际上是一种蛋白质).
我一直在斐济(Jython)编写一个脚本来尝试找到蛋白质,这样我们就可以从当地背景中找出高度.到目前为止,这涉及应用自适应直方图均衡,然后用半径为10像素的滚球减去背景.之后,我一直在应用10像素乘10像素的内核并计算出5个中心像素的平均值,并将其除以内核4个边缘上的像素的平均值以得到比率.如果比率高于某个值,则它是候选者.
我得到的输出是这个图像,除了一些包装和灵敏度(比率= 2.0)问题似乎没问题.我的问题是:
>这是一种合理的方法还是有明显更好的方法呢?
>你能从这里建议一下吗?我现在有点陷入困境,并不确定如何继续.
必要时代码:http://pastebin.com/D45LNJCu
谢谢!
山姆
解决方法:
如何开始更简单,并使用哈里斯点方法并检测局部最大值.例如.
import numpy as np
import Image
from scipy import ndimage
import matplotlib.pyplot as plt
roi = 2.5
peak_threshold = 120
im = Image.open('Q766c.png');
image = im.copy()
size = 2 * roi + 1
image_max = ndimage.maximum_filter(image, size=size, mode='constant')
mask = (image == image_max)
image *= mask
# Remove the image borders
image[:size] = 0
image[-size:] = 0
image[:, :size] = 0
image[:, -size:] = 0
# Find peaks
image_t = (image > peak_threshold) * 1
# get coordinates of peaks
f = np.transpose(image_t.nonzero())
# Show
img = plt.imshow(np.asarray(im))
plt.plot(f[:, 1], f[:, 0], 'o', markeredgewidth=0.45, markeredgecolor='b', markerfacecolor='None')
plt.axis('off')
plt.savefig('local_max.png', format='png', bbox_inches='tight')
plt.show()
这给了这个:
标签:python,image-processing,imagej 来源: https://codeday.me/bug/20190824/1713164.html