検出された粒子のラベル付き画像と、各ラベル付き粒子の対応する領域を含むデータフレームがあります。私がやりたいことは、指定された値よりも小さい領域を持つ画像上のすべての粒子を除外することです。
以下の例で動作するようになりましたが、よりスマートで特に高速な方法が必要であることはわかっています。たとえば、画像を配列と比較してループをスキップします。
ご協力いただきありがとうございます!
例:
labels = df["label"][df.area > 5000].to_numpy()
mask = np.zeros(labeled_image.shape)
for label in labels:
mask[labeled_image == label] = 1
データフレーム:
label centroid-0 centroid-1 area
0 1 15 3681 191
1 2 13 1345 390
2 3 43 3746 885
3 4 32 3616 817
4 5 20 4250 137
... ... ... ...
3827 3828 4149 1620 130
3828 3829 4151 852 62
3829 3830 4155 330 236
3830 3831 4157 530 377
3831 3832 4159 3975 81