我正在使用 trackpy 来计算粒子数。使用完整图像可以获得令人满意的结果。
我还有一组图像,其中一个区域被蒙版(蒙版和蒙版图像可在此处使用 mask+masked image)。
正如我们在下图中看到的那样,该算法检测到 Mask 边界周围的所有粒子。
import numpy as np
import pandas as pd
from pandas import DataFrame, Series # for convenience
from pylab import*
import pims
import trackpy as tp
frames = pims.ImageSequence('C:/Users/Mich/Desktop/masked_particles.tif', as_grey=True)
originaImage=pims.ImageSequence('C:/Users/Mich/Desktop/masked_particles.tif', as_grey=True)
plt.imshow(frames[0]);
f = tp.locate(frames[0], 3, minmass=30,maxsize=3, separation=3,noise_size=1, threshold=2)
plt.figure(figsize=(40,20)) # make a new figure
tp.annotate(f, originaImage[0],plot_style={'markersize': 1});
防止这种“边界粒子”的最佳策略是什么?
我无法解决使用 tp.locate 参数的问题。也许有一种方法可以导入掩码并对 DataFrame 进行后过滤?那可能超出了我的技能。
*****编辑******
到目前为止,我提出的解决方案包括修改遮罩 (0) 的像素值以匹配未遮罩区域的平均像素值(本例中为 50)。
即使结果在每种情况下都不是完美的,粒子查找的结果也较少受到 Mask 边界的影响。