1

我正在使用 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 边界的影响。

在此处输入图像描述

4

0 回答 0