首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用matlab修复视频荧光闪烁

利用matlab修复视频荧光闪烁
EN

Stack Overflow用户
提问于 2014-06-23 11:43:05
回答 1查看 1.3K关注 0票数 2

我有几个视频序列显示光强度闪烁(在荧光灯下)。这是由于快门速度和/或采样率不是电频率的整体倍数造成的。例如,以1/50秒快门速度拍摄视频,频率为60 50。

一般来说,我需要在不知道采样率、电频率、视频帧速率的情况下解决这个问题。我只是看到闪烁的东西,需要修复它们。

视频场景还包括移动对象(有些动作缓慢,有些像闪烁所致的强度快速变化一样快)。

是否有一种众所周知的处理这种闪烁的方法?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-23 11:51:06

消除闪烁的常用方法如下所示。从连续帧间的差异图像来看,闪烁应表现为沿图像垂直轴的强周期信号。因此,它应该在频域上有一个强的系数。因此,可以通过在频域找到表示差分图像中闪烁的系数来检测和消除闪烁,并将它们作废并转换回空间域。

在伪代码中,该算法如下所示:

代码语言:javascript
复制
imDiff = I_{t+1} - I_t (Compute the difference between subsequent video frames)
imDiff = FilterImDiff(imDiff)
imDiffRowSum = RowSum(imDiff) (summing the rows of the diff image)
dctCoef = DiscreteCosineTransform(imDiffRowSum)
flickeringDctCoef = SomeHeuristicToFindFlickeringCoef(dctCoef)
flickeringIm = CloneColumn(InverseDiscreteCosineTransform(fixedDctCoef), numCols)
fixedimDiff = imDiff - flickeringIm 
fixedI_{t+1} = I_{t+1} + fixedimDiff 

其中:

  • RowSum( x )以m图像作为输入,并返回大小为mx1的列向量,其中元素i包含图像x中第一行的和。
  • CloneColumn(x,n)采用大小为m的列向量x,并将其克隆为n次,以创建一个m矩阵。
  • numCols是输入图像中的列数。
  • 一个简单的SomeHeuristicToNullifyFlickeringCoef算法可以是选择第一对最大系数,如果它们大于某个阈值。
  • FilterImDiff应该丢弃不包含闪烁的差异图像中的内容,例如前景对象的移动。例如,像素的时间差大于闪烁的最大幅度。另外,太亮或太暗的像素通常不会闪烁。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24365037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档