对于荧光细胞来说实时追踪是很困难的,
光信号非常弱的缘故
所以先进行语义分割,然后对时间序列进行倒序追踪
顺序是这样的
1. 语义分割
2. 反向卡尔曼滤波追踪 predict、
3. 匈牙利算法match
4.卡尔曼滤波update 进入下一帧
如图所示(画的很清晰明确了哈)
在匈牙利算法的时候计算cost matrix 可以把一切乱七八糟想加的东西加进去
我这里加入了重心坐标,面积,周长,IOU,总之感觉有关的连续变量都可以加进去
,注意权重赋值就行。
马氏距离的问题和导师讨论了一下,感觉我们的情况用不用都可以
根据需求加吧
基本的function在这里:
# kalman
"""
Kalmanfilter
输入:一张图的信息,一个细胞序号
input one frame, one cell number each time
use new frame for iteration
"""
class Kalmanfilter(object):
def __init__(self, preds_info_one_frame,cell_num,Z_Null=False): #输入一个图的信息,一个细胞序号
"""
timelist for later use
"""
self.preds_info = preds_info_one_frame
self.cell_num = cell_num
self.skipped_frames = 0 # number of frames skipped undetected
self.trace = [] # trace path
self.cx=int(self.preds_info[self.cell_num][3][0]) # centroid x
self.cy=int(self.preds_info[self.cell_num][3][1]) # centroid y
self.area=int(self.preds_info[self.cell_num][1]) # area 面积
self.hh = self.preds_info[self.cell_num][7].shape[0]
self.ww = self.preds_info[self.cell_nu