【问题标题】:Contrast stretching in local regions of an image图像局部区域的对比度拉伸
【发布时间】:2013-02-28 15:35:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab opencv image-processing contrast


    【解决方案1】:

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

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

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

    【讨论】:

    • 根据论文,Guided Filter 以约 12.5 FPS 的速度运行 1 兆像素的灰度图像。您是否有其他参考更好的性能,或者您认为“对于视频来说足够快”?
    • 对这些类型的过滤器进行了大量优化,其中一些专门针对视频。我不记得论文的标题了,但试着用谷歌搜索“快速高维过滤器”、“快速双边过滤器”或“视频双边过滤器”。双边过滤器是“原始”想法,引导式过滤器对此进行了加速。不过,优化可能非常复杂。我记得 Microsoft Research 的一篇 SIGGRAPH 论文非常令人印象深刻,它针对的是视频。
    • 试试对比度受限的自适应直方图均衡化怎么样?
    【解决方案2】:

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

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

    唯一的区别是您手动决定minValuemaxValue。这样minValue 下面的所有内容都将是0255 类似。

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

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

    【讨论】:

    • 这个问题可能是决定 minValue 和 maxValue。如果我必须拉伸白天拍摄的图像的对比度,那么最小-最大范围会发生变化。
    • 从您答案中的方程式,我们如何确定一个阈值,高于该阈值将开始增加,低于该阈值将减少?所以在上面的等式中,如果maxValue=150minValue=20,我们可以不经过反复试验就得到阈值吗?或者换句话说,如果我们知道阈值,我们能否预测minValuemaxValue
    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多