在ImageJ中,您可以使用最小值和最大值调整图像的亮度和对比度。您还可以使用setMinAndMax()
宏功能。对话框如下所示:
它映射每个像素以适合最小值和最大值。
我试图在OpenCV(C ++)中做同样的事情。我可以使用alpha
的{{1}}和beta
参数更改对比度和亮度,但我不知道如何使用最小值和最大值进行操作。
在我的情况下,我使用的是12位图像,因此像素值范围为0到4095.我不确定这是否重要。
答案 0 :(得分:2)
你分三步完成:
答案 1 :(得分:1)
你是这样做的。
首先,找到当前的最大值和最小值。
让我们说最黑暗和最聪明的人分别是80和220。现在您需要将此范围80..220拉伸到整个范围0..4095。
因此,您从图像中的每个像素中减去80,以在直方图的左端向下移动到零,因此您的范围现在为0..140。
现在你需要将每个像素乘以4095/140以将右端扩展到4095.
实际上,您需要的公式是:
newvalue = int((current value - darkest)*4095/(brightest-darkest))