背景
水滴检测的实验中,检测对阴影非常敏感,往往出现阴影误检的情况,首先尝试了一下调整参数
结构元素的kernel size
- kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
修改kernel大小:
kernel=(8, 8)
kernel=(5, 5)
都检测不到水滴
kernel=(4,4)
几乎检测不到
GMM的参数 history和距离
- model = cv2.createBackgroundSubtractorMOG2(50, 16, detectShadows=False)
混合高斯模型GMM修改参数:
默认值为500,16
history:
试了500,200, 100,50,20,10,5
history=100时似乎比500效果要好,不确定
感觉100,50,20,10,5都差不多,没什么肉眼差距
似乎50最好
玛氏距离:
距离=50时检测不到任何东西,包括水滴
距离=30时检测水滴非常迟钝,但同时能去除相当一部分阴影
距离=25时,仍然有较大一部分阴影,而且有时水滴检测不出来呢
后来在尝试canny算子前,50,30是效果最好的参数
二值化
- 二值化fgmk[fgmk<210] = 0
其实不确定是否是将运动对象标注为白色,阴影标注为灰色,看过fgmk的矩阵(看不全),显示最高255白色
仍然调了,聊胜于无
fgmk<210,还行
fgmk<230,没有明显提升
结论
在尝试canny算子前,50,30,210是效果最好的参数。这些参数调整过后,仍然没有完全解决阴影问题。