根据灰度动态范围将图像分类为褪色或未褪色?

Classify image as washed-out or not based on the grayscale dynamic range?

我正在尝试在 Python 的 OpenCV 上重新创建一个算法(来自这个 publication)来检测图像是否具有褪色效果。

论文陈述如下:

"Washed out images have a reduced dynamic range (in the gray-scale image) with respect to images with natural colors. The compliance score is simply calculated by rescaling the dynamic range of the gray-scale image to [0;100]"

问题是,我不明白灰度动态范围是什么

这是关于计算灰度图像 [0-255] 的最小和最大像素值之间的差异并将该值重新缩放到 [0-100] 范围内吗?

我在 researchgate.com 上找到了论文。该论文讨论了面部图像必须通过的各种标准才能被标记为机器可读。因为与人类不同的机器无法在光照、遮挡、姿势差异等各种条件下理解面部图像。除了问题中的陈述之外,关于 ICAO 13 的信息不多。所以我认为它会是以下方式。

根据 ICAO 13 将灰度图像转换为动态范围可以通过以下方式完成:

我从 OpenCV 文档中获取了示例图像来说明这一点:

代码:

import cv2
import numpy as np

img = cv2.imread(path + 'wiki.jpg', 0)

print(((np.max(img) - np.min(img)) * 100) / 255)
cv2.imshow(path + 'normal.jpg', img)

equ = cv2.equalizeHist(img)
print(((np.max(equ) - np.min(equ)) * 100) / 255)
cv2.imshow(path + 'equalized.jpg', equ)

结果:

 Dynamic range of original image : 36
 Dynamic range of equalized image : 100

原图:

均衡图像:

现在因为你有 0 - 100 之间的值,你可以 select 一个阈值(比如 85) 并说具有 85 及以上值的图像被认为是机器可读的。如果该值低于阈值,则丢弃图像。