图像之间的平均值会产生较暗的图像

Mau*_*ini 3 matlab average image-processing video-processing

我正在尝试制作 5 秒视频的慢动作。为了保持相同的帧速率,我需要更多的帧。我从视频中提取了所有帧,并通过创建新帧将它们的数量加倍。每个帧都与其后继帧相结合,创建一个平均帧以插入它们之间。

average = (predecessor + successor)/2
Run Code Online (Sandbox Code Playgroud)

结果在空间上是正确的,但在颜色方面却不正确。平均图像比原始图像明显暗。我正在尝试放慢费德勒打网球的视频速度。平均图像在原始图像与其后继图像之间找到了中间地带。这种效果可以在球员和球明显移动的帧之间看到。下图显示了我试图消除的颜色差异(:平均,:原始)

在此输入图像描述前任(原版)

为什么会出现这种情况?有没有更好的方法来实现我想要做的事情?

Cri*_*ngo 5

处理整数数组时,MATLAB 使用饱和算术。这意味着uint8(200) + uint8(200) == uint8(255)

\n

假设您的图像是 uint8,将两个白色像素相加会导致饱和度,即最大亮白色,然后将其除以二以获得中灰色。

\n

为了避免将图像转换为浮点类型,MATLAB 默认为double

\n
average = uint8((double(predecessor) + double(successor))/2);\n
Run Code Online (Sandbox Code Playgroud)\n

single但如果您\xe2\x80\x99担心内存使用情况,也可以使用,正如 Ander 在评论中建议的那样。

\n