代码之家  ›  专栏  ›  技术社区  ›  jruivo

是否根据灰度动态范围将图像分类为已冲出?

  •  1
  • jruivo  · 技术社区  · 7 年前

    我正在尝试重新创建一个算法(从这个 publication )在python的opencv上检测图像是否有冲蚀效果。

    本文阐述了以下内容:

    “冲洗图像的动态范围减小(在灰度范围内) 图像)关于自然颜色的图像。合规性 分数只是通过重新调整 灰度图像到[0;100]“

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jeru Luke    7 年前

    我在报纸上找到的 研究之门.com . 本文讨论了人脸图像必须通过的各种标准,才能被标记为机器可读。因为不同于人类的机器无法在各种条件下理解面部图像,如灯光、遮挡、姿势差异等。除了问题中的陈述外,关于国际民航组织13的信息并不多。所以我想应该是以下方式。

    按照国际民航组织第13号的规定,将灰度图像转换为动态范围的方法如下:

    enter image description here

    我从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
    

    原始图像:

    enter image description here

    均衡图像:

    enter image description here

    现在,由于您的值介于0-100之间,所以可以选择阈值(比如85)。 也就是说,值为85及以上的图像被限定为机器可读的。如果该值低于阈值,则丢弃图像。