2016-06-27 10 views
1

私はイメージ内のいくつかのセルを数えるためにpythonを使用しようとしています。私は多かれ少なかれチュートリアルhereに従っています。スレッシュホールドのステップの後、私は地域のmaximasを見つけ、それらを数えます。これは核の計数には非常に有効ですが、死にたくない細胞や細胞の断片など、誤った陽性があります。私が使用したコード:コンピュータビジョン:細胞を数えるときに残骸を取り除く方法は?

import mahotas as mh 
import numpy as np 
from matplotlib import pyplot as plt 

dna = mh.imread('img.jpg') 
dna = dna[:,:,0] 

dnaf = mh.gaussian_filter(dna.astype(float), 4) 
maxima = mh.regmax(mh.stretch(dnaf)) 
maxima = mh.dilate(maxima, np.ones((5,5))) 
plt.imshow(mh.as_rgb(np.maximum(255*maxima, dnaf), dnaf, dna > T_mean)) 
plt.show() 

画像は以下の通りです。死んだ細胞は右下にあり、中央からちょうど左にあります。偽陽性が

enter image description here

大きな赤い塊です、私はこれらの偽陽性を除外できとにかくありますか?私はすべての地域のサイズを取得し、サイズに基づいてフィルタリングを試みましたが、地域の最大値を取ると結果は奇妙に見えます。

dnaf = mh.gaussian_filter(dna.astype(float), 4) 
sizes = mh.labeled.labeled_size(dnaf) 
too_small = np.where(sizes < 800) 
dnaf = mh.labeled.remove_regions(dnaf, too_small) 
maxima = mh.regmax(mh.stretch(dnaf)) 
maxima = mh.dilate(maxima, np.ones((5,5))) 
plt.imshow(mh.as_rgb(np.maximum(255*maxima, dnaf), dnaf, dna > T_mean)) 
plt.show()  

これは、私だけは、私が何か間違ったことをしたと思う作る(下記参照)偽陽性の1を取り除くと、他のいくつかの場所で画像を歪めてしまいました。

enter image description here また、この画像は元の画像とは異なる場所にありますが、元の画像に比べて歪みがあり、死んだ細胞の断片が残っています。

私の質問は、より良い細胞数の見積もりを得るために、画像から小さな破片/死んだ細胞を取り除くために、Pythonを使用する最良の方法は何ですか?

+0

私は問題を理解していることを確認したいと思います。それは私に、それがかなり単純であるかのように見えます:生きている細胞は核を持っています*そして*少なくとも2倍の活発な原形質でその領域を持っています。おそらく、核を持たない小塊を最初に取り除くと、** too_small **操作が完了するでしょうか? – Prune

答えて

0

偽陽性を特定するには、元の画像から始めなければならないと思います。死んだ細胞の位置と他の偽陽性をマークし、それらが生成するブロブの幾何学的特性を記録する。サイズのようなプロパティが明確な違いを示すことができれば、それらを簡単に区別することができます。

また、ガウスフィルタサイズや拡張演算子サイズなどのパラメータを変更することもできます。

これらのヘルプが表示されない場合は、多数の顕微鏡画像を使用し、それに基づいた機械学習システムを訓練することをお勧めします。

関連する問題