1
我從來沒有使用過計算機視覺的東西之前,我想我可以用Python凝膠電泳的分析。 Here是解釋,如果你不熟悉的過程中所發生的事情的錄像。Python的凝膠電泳數據的Scikit圖像處理
因此,我從凝膠的維基百科拍攝了一張照片,然後使用灰度濾鏡,然後使用雙邊濾鏡來消除污跡和僞影,然後使用Otsu濾鏡分離出明顯的條紋。
import numpy as np
import matplotlib.pyplot as plt
from skimage import data, io
from skimage.filter import threshold_otsu, denoise_bilateral
from skimage.morphology import closing, square
from skimage.measure import regionprops
from skimage.color import label2rgb, rgb2gray
image = io.imread('http://upload.wikimedia.org/wikipedia/commons/6/60/Gel_electrophoresis_2.jpg')
#grayscaling
gray_image = rgb2gray(image)
# bilateral filtering
bilat=denoise_bilateral(gray_image, sigma_range=0.05, sigma_spatial=20)
# apply threshold Otsu
thresh = threshold_otsu(bilat)
bw = closing(bilat > thresh, square(1))
#print process
def show_images(images,titles=None):
"""Display a list of images"""
n_ims = len(images)
if titles is None: titles = ['(%d)' % i for i in range(1,n_ims + 1)]
fig = plt.figure()
n = 1
for image,title in zip(images,titles):
a = fig.add_subplot(1,n_ims,n)
if image.ndim == 2:
plt.gray()
plt.imshow(image)
a.set_title(title)
n += 1
fig.set_size_inches(np.array(fig.get_size_inches()) * n_ims)
plt.show()
#print data
show_images(images=[image, bilat, bw], titles=['Normal', 'Bilateral filter', 'Otsu Threshold'])
這裏是什麼結果目前看起來像
我有4個問題,我就死在:
使用大津門檻導致從淺色帶一些數據丟失有更好的方法獲得樂隊數據?
有沒有辦法將每行的結果返回到矩陣上顯示帶的numpy/pandas數組? (即,0表示沒有條帶,1光帶,2表示介質帶,3爲重頻帶)這將允許檢測與該DNA梯(參考行)匹配頻帶。
什麼方法可以用來計算從井到波段的距離。
如果圖片沒有直接拍攝,我需要一個叫做Image registration的東西嗎?如果是的話,我在哪裏可以找到
scikit-image
?
最後,我使用python 3和scikit-image的最後一個穩定版本(如果它很重要)。