2

我想对图像执行对比度拉伸。图像如图所示(数据提示由我在 MATLAB 中创建,以提供有关图像的更多信息,图像上已经存在时间戳)。

在此处输入图像描述

现在,这里已经描述了如何执行对比度拉伸。但是这个公式在这里不起作用,因为imgMin=0imgMax=255。所以图像将保持不变。所以我的解决方法是局部对比度拉伸。我不确定如何做到这一点(而且相对较快,即我应该能够对比视频的拉伸帧并仍然实时播放视频。我尝试了直方图均衡,虽然它在 OpenCV 中产生实时结果,但对比度拉伸不是感人的)。要了解该算法是否有效,我也愿意使用 MATLAB。

我还展示了数据提示,您可以在其中看到像素值。我首先将我的彩色图像转换为灰度。简而言之,目标是白色车道应该变得更亮,尽管图像的最亮部分取值为 255(即太阳)。

4

2 回答 2

5

使用较大的过滤器半径,您可能会通过细节增强过滤器获得您正在寻找的结果。一个流行的细节增强示例是 Adob​​e Lightroom 中的“清晰”效果。这些算法所做的实际上相当于增加局部对比度。

引导过滤器可用于细节增强(参见链接论文的第 10 页),与更广为人知的双边过滤器相比,它对于视频来说可能足够快。它也相对容易实现,至少对于灰度图像或每通道操作。用于实验的 Matlab 代码在这里,如果我没记错的话,它包含一个细节增强示例。

理论:粗略地说,这个想法是将图像的高通滤波版本添加到原始图像中。如果您使用小的高通内核执行此操作,您会进行锐化,如果您使用大内核(让更多频率通过),您会进行细节增强。当您使用简单的高通滤波器解决问题时,引导滤波器是一种避免在明暗边界处出现光晕伪影的巧妙方法。

于 2013-03-12T22:39:22.760 回答
1

如果您拥有整个颜色范围,我建议您决定您愿意“牺牲”多少像素,因为会有一些饱和度。您仍然可以使用对比方程(来自您的链接)

newValue = 255 * (oldValue - minValue)/(maxValue - minValue)

唯一的区别是您手动决定minValuemaxValue。这样下面的一切minValue都会0; 类似的255

升级 - 只需决定您愿意使用的百分比并自动设置界限。

编辑——那个“本地”让我想到了一个“高级”版本。也许你可以看看直方图(有 256 个 bin),看看是否有一些“洞”。假设您只有从 0 到 50 和从 205 到 255 的值。然后您可以将较低的值拉伸到 100,将较高的值拉伸到 155。唯一的问题是较低值和较高值之间的对比度更差。

于 2013-03-12T22:31:38.800 回答