gpt4 book ai didi

matlab - 如何消除视频中剧烈的亮度变化?

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:00 24 4
gpt4 key购买 nike

我有一个从摄像机获取的图像流。我发现有时流中的图像会出现较大的亮度峰值(每个像素的值都跳跃或下降),然后在下一张图像中恢复到正常亮度水平。

这对我的算法来说是个大问题。无论如何我可以防止这种亮度峰值吗?我正在考虑在每个像素上使用低通滤波器之类的东西,但我想知道是否有人对这个问题有更多经验。

我将在 MATLAB 中进行设计并在 OpenCV 中实现。如果任何一个平台有一些漂亮的功能,我很乐意听到它们。

感谢您的宝贵时间!

最佳答案

一个相当天真的解决方案是将图像转换为 YUV 颜色空间,在 Y channel 上执行直方图均衡,然后再转换回 RGB。该方法尝试将图像的亮度归一化为每一帧的相同分布,以补偿亮度的变化。

在 OpenCV 中执行此操作的代码是:

cv::cvtColor(img, img, CV_BGR2YUV);
std::vector<cv::Mat> channels;
cv::split(img, channels);
cv::equalizeHist(channels[0], channels[0]);
cv::merge(channels, img);
cv::cvtColor(img, img, CV_YUV2BGR);

这会产生如下所示的效果。请注意,Equalized 列中的两个图像的亮度比两个原始图像的亮度更相似。您的里程会有所不同。

Luminance Equalization

关于matlab - 如何消除视频中剧烈的亮度变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com