如何在python中使用skimage / opencv检测文档图像中的闪光/眩光?

hwamh0ep  于 2023-01-20  发布在  Python
关注(0)|答案(1)|浏览(138)

请提出一种新的方法或至少一种方法,使任何这些足够强大,以良好的速度检测

我有一些图像(大部分是从电脑屏幕上拍摄的),其中一些闪光灯从相机或所谓的是目前有。我想放弃这些类型的图像或至少通知用户重新拍摄。我怎么能这么做
我没有足够的数据来训练深度学习分类模型,例如Fast Glare Detection
Here is the Data of more than 70 images
我尝试了以下几种方法:

  1. Bright area detection using OpenCV cv2.minMaxLoc function,但它总是返回该地区,无论什么,大多数情况下,它失败了我的类型的图像。
    1.我找到了this code for removal but it is in Matlab
  2. This code uses Clahe adjustement但问题是它删除而不是检测
  3. This one looks promising but is not robust enough for my image type
    最后下面的代码,我发现是有点我需要,但有人可以帮助我,使其强大。例如使用这些阈值/改变它们/或使用二值化、闭合(用膨胀增加白色区域,然后用侵 eclipse 去除黑色噪声),使得这些被推广用于所有。
def get_image_stats(img_path):
    img = cv2.imread(img_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (25, 25), 0)
    no_text = gray * ((gray/blurred)>0.99)                     # select background only
    no_text[no_text<10] = no_text[no_text>20].mean()           # convert black pixels to mean value
    no_bright = no_text.copy()
    no_bright[no_bright>220] = no_bright[no_bright<220].mean() # disregard bright pixels

    std = no_bright.std()
    bright = (no_text>220).sum()

    if no_text.mean()<200 and bright>8000:
        return True

字符串
以下是几个例子:
x1c 0d1x的数据




1cosmwyk

1cosmwyk1#

使用高Gamma值进行Gamma校正如何?它是像素强度的非线性变换,如OpenCV教程中关于图像强度变换here所示。在上述OpenCV链接中检查什么是gamma校正。“
我在你的图像上试过了,灰度值很高。代码如下所示。

import cv2 as cv
import numpy as np
import os

gamma = 50
lookuptable = np.empty((1, 256), np.uint8)
lookuptable[0, :] = [np.clip(pow(i/255.0, 10)*255.0, 0, 255) for i in range(256)]

for img_file in os.listdir():
    if 'jpg' in img_file:
        img = cv.imread(img_file, cv.IMREAD_GRAYSCALE)
        res = cv.LUT(img, lookuptable)
        filename_gamma = f"{img_file.split('.')[0]}_{gamma}.jpg"
        cv.imwrite(filename_gamma, res)

        __, ret = cv.threshold(res, 0, 255, cv.THRESH_BINARY+cv.THRESH_OTSU)
        filename_bin = f"{img_file.split('.')[0]}_{gamma}_bin.jpg"
        cv.imwrite(filename_bin, ret)

字符串
其结果如下。成对地,顶部是伽马校正的图像,底部是伽马校正的图像上的阈值。100d 1xx 1c 1d 1x的字符串
1c 2d 1xx 1c 3d 1x的字符串
1c 4d 1xx 1c 5d 1x的字符串
如果您有最后一种类型的图像(例如,仅将范围(245-255)内的灰度值设置为前景),则可以对Gamma校正图像应用更多的手动阈值处理,以获得更好的结果。
完成后,您可以使用连通分量分析提取有关这些提取的眩光区域的统计信息。

相关问题