OpenCV:检测视频中的癫痫发作灯?

时间:2018-01-30 18:02:53

标签: c++ opencv video video-processing light

我一直在研究一种能够检测视频中诱发癫痫发作的频闪灯的算法。

目前,我的代码几乎每帧都会返回,因为它可以导致癫痫发作(3Hz闪烁)。

我的代码计算每个像素的相对亮度,并查看在任何给定秒内亮度上升然后下降等等多少次,或者向下看多少次等等超过10%。

有没有办法在不相互比较每个像素并且只返回正确的帧的情况下进行此操作。

我想模仿的一个例子:https://trace.umd.edu/peat

2 个答案:

答案 0 :(得分:1)

解决此类问题的常用方法是将帧转换为灰度,然后构造一个包含1到3秒时间间隔帧的立方体。通过此立方体,您可以提取单个像素(噪声)或块(推荐)的时变特征。可以首先手动观察得到的1D曲线,看看它们是否实际显示您正在寻找的3Hz变化(有时,由于相机的自动曝光设置,这些变化会丢失或失真)。如果你能看到它们,你应该能够使用FFT来自动隔离和检测它。

答案 1 :(得分:0)

将图像转换为灰度。将图像分成块,可能是16x16或64x64或更大(试验看看哪些有效)。取每个块的平均亮度至少2/3秒。随着时间的推移创建亮度波。在此波上做一个fft并寻找3Hz附近的最小能量阈值。