如何使用OpenCV

时间:2015-05-01 02:50:10

标签: c++ opencv

在ImageJ中,您可以使用最小值和最大值调整图像的亮度和对比度。您还可以使用setMinAndMax()宏功能。对话框如下所示:

ImageJ Brightness and Contrast dialog

它映射每个像素以适合最小值和最大值。

我试图在OpenCV(C ++)中做同样的事情。我可以使用alpha的{​​{1}}和beta参数更改对比度和亮度,但我不知道如何使用最小值和最大值进行操作。

在我的情况下,我使用的是12位图像,因此像素值范围为0到4095.我不确定这是否重要。

2 个答案:

答案 0 :(得分:2)

你分三步完成:

  • 使用minMaxLoc获取当前的最小/最大值
  • 调整' min'通过向图像添加差异来获得值(没有特殊功能,只需在C ++或python中执行' image = image + offset')
  • 调整' max'缩放图像的值(没有特殊功能,'图像=图像*比例')

答案 1 :(得分:1)

你是这样做的。

首先,找到当前的最大值和最小值。

让我们说最黑暗和最聪明的人分别是80和220。现在您需要将此范围80..220拉伸到整个范围0..4095。

因此,您从图像中的每个像素中减去80,以在直方图的左端向下移动到零,因此您的范围现在为0..140。

现在你需要将每个像素乘以4095/140以将右端扩展到4095.

实际上,您需要的公式是:

newvalue = int((current value - darkest)*4095/(brightest-darkest))