如何在 OpenCV + Visual C++ 中测量对比度

Posted

技术标签:

【中文标题】如何在 OpenCV + Visual C++ 中测量对比度【英文标题】:How To Measure Contrast in OpenCV + Visual C++ 【发布时间】:2012-11-15 12:16:27 【问题描述】:

之前的问题是“如何在 OpenCV 中选择最佳对比度的图像”,但根据 @Rook 的建议,我正在更改它。

我将在我的项目中使用 OpenCV + Visual Studio 2010。我只是想知道 OpenCV 如何让我更轻松。我从视频中提取了大约一千帧,我需要找出哪个具有最佳对比度。最好,我认为最高和最低对比度之间的质量。

我一直在网上搜索参考代码,但到目前为止,我还没有找到。

更新:所以基本上,我需要测量对比度并比较图像之间的值。顺便说一句,这是通过望远镜观测火星的视频,我将使用从中提取的帧。

【问题讨论】:

在您能够量化“最佳对比度”的实际含义之前,您无法做出此选择。 “最高和最低对比度之间的质量。” 对我来说没有意义。 我认为这个词应该是介于最高值和最低值之间的“中点(?)”。谢谢 所以你的问题实际上是,“我如何计算图像的对比度?” 【参考方案1】:

图像的熵用作对比度的度量。看到这个code。

熵是一个标量值,是随机性的统计量度,可用于表征输入图像的纹理。熵定义为

-sum(p.*log2(p))

其中p 包含直方图计数。

——Matlab documentation

【讨论】:

以上是关于如何在 OpenCV + Visual C++ 中测量对比度的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual c++ 中处理 SEHException?

如何在 C++ 中的 OpenCV 3.0.0、Visual Studio 2013 中检测关键点、计算描述符并匹配这些描述符?

如何在 Visual C++ 2010 或 2008 中使用 OpenCV 2.1 访问 ip camera (compro IP50W)

为 Visual C++ 9.0 编译 OpenCV

Microsoft Visual Studio C++、OpenCV 动画

visual studio 2019中C++安装opencv