以下是对比度的一种度量:迈克尔逊对比度以及如何在 Python/OpenCV/Numpy 中计算它。低对比度接近于零,高对比度接近于1。使用 YUV 或 YCbCr 中的 Y(强度)通道,或者使用 LAB 中的 L 通道,甚至只是将图像转换为灰度并使用它。
输入:
import cv2
import numpy as np
# load image as YUV (or YCbCR) and select Y (intensity)
# or convert to grayscale, which should be the same.
# Alternately, use L (luminance) from LAB.
img = cv2.imread("barn.jpg")
Y = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)[:,:,0]
# compute min and max of Y
min = np.min(Y)
max = np.max(Y)
# compute contrast
contrast = (max-min)/(max+min)
print(min,max,contrast)
Run Code Online (Sandbox Code Playgroud)
0 255 1.0
对比度将介于 0 和 1 之间。
对比度的一种定义是RMS Contrast,它可以计算如下:
首先,将BGR图像转换img为灰度:
img_grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Run Code Online (Sandbox Code Playgroud)
最后,计算灰度图像像素强度的标准偏差:
contrast = img_grey.std()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8184 次 |
| 最近记录: |