私はイメージ内のいくつかのセルを数えるために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()
画像は以下の通りです。死んだ細胞は右下にあり、中央からちょうど左にあります。偽陽性が
大きな赤い塊です、私はこれらの偽陽性を除外できとにかくありますか?私はすべての地域のサイズを取得し、サイズに基づいてフィルタリングを試みましたが、地域の最大値を取ると結果は奇妙に見えます。
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を取り除くと、他のいくつかの場所で画像を歪めてしまいました。
また、この画像は元の画像とは異なる場所にありますが、元の画像に比べて歪みがあり、死んだ細胞の断片が残っています。
私の質問は、より良い細胞数の見積もりを得るために、画像から小さな破片/死んだ細胞を取り除くために、Pythonを使用する最良の方法は何ですか?
私は問題を理解していることを確認したいと思います。それは私に、それがかなり単純であるかのように見えます:生きている細胞は核を持っています*そして*少なくとも2倍の活発な原形質でその領域を持っています。おそらく、核を持たない小塊を最初に取り除くと、** too_small **操作が完了するでしょうか? – Prune