繁体   English   中英

增加图像亮度而不会溢出

[英]Increase image brightness without overflow

尝试提高图像亮度时遇到问题。

这是原始图像:

在此输入图像描述

我想要的图像是这样的:

在此输入图像描述

现在使用以下代码增加亮度:

    image = cv2.imread("/home/wni/vbshare/tmp/a4_index2.png",0)

    if sum(image[0])/len(image[0])<200:
        new = np.where((255-image)<image,255,image*2)
    else:
        new = image
    return new

而且,我得到了以下图像:

在此输入图像描述

所以,似乎某些点的亮度溢出。

我试图将阈值从200更改为其他数字,例如125,100,140等。但是,图像亮度几乎保持相同的暗或溢出。

ENV:

Python:2.7.10

Opencv:3.2.0

对此有任何建议表示赞赏。

谢谢。

这是我用一种清理特定图像的简单算法的镜头。 随意玩它并进一步调整以获得所需的结果。

注意 :显示的代码应该适用于OpenCV的2.4.x和3.x分支。

第0步

将输入图像加载为灰度。

img = cv2.imread('paper.jpg',0)

步骤1

扩大图像,以摆脱文本。 此步骤有助于保留条形码。

dilated_img = cv2.dilate(img, np.ones((7,7), np.uint8)) 

扩张型心肌病

第2步

中位数使用适当大小的内核模糊结果以进一步抑制任何文本。

这应该会给我们一个相当不错的背景图像,其中包含所有阴影和/或变色。

bg_img = cv2.medianBlur(dilated_img, 21)

模糊

第3步

计算我们刚刚获得的原始和背景之间的差异。 相同的位将是黑色(接近0差异),文本将是白色(大差异)。

因为我们想要白色的黑色,我们反转结果。

diff_img = 255 - cv2.absdiff(img, bg_img)

倒差异

第4步

标准化图像,以便我们使用完整的动态范围。

norm_img = diff_img.copy() # Needed for 3.x compatibility
cv2.normalize(diff_img, norm_img, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)

归

第5步

在这一点上,我们仍然有一些灰色的纸张。 我们可以将其截断,并重新标准化图像。

_, thr_img = cv2.threshold(norm_img, 230, 0, cv2.THRESH_TRUNC)
cv2.normalize(thr_img, thr_img, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)

灰色修剪

完成...

好吧,至少对我来说;)你可能想要裁剪它,并做任何你想要的后处理。


注意:获得差异图像后,可能需要切换到更高的精度(16位int或浮点数),以便最大限度地减少重复归一化中的累积舍入误差。

你需要的是阈值 这将允许您将非常暗的所有内容设置为纯白色,并将非常暗的内容设置为直黑色(或任何其他颜色)。 这应该让你开始:

cutoff_val = 100 # everything above this is set to set_color
set_color = 255 
ret,thresh_img = cv2.threshold(image,cutoff_val,set_color,cv2.THRESH_BINARY)

在您使用它之后,您可以使用自适应阈值处理获得更好的结果。

看到这个伟大的教程基本上做你想要的 - 和奖金,它包括一个关于翘曲的教程,以获得纸张的矩形区域!

编辑:我的图像结合了阈值处理和自适应阈值处理,结果非常好。

cutoff_val = 150 # everything above this is set to the cutoff val
set_color = 255 # if 
ret,thresh_img = cv2.threshold(image,cutoff_val,set_color,cv2.THRESH_TRUNC)
window_sz = 3
thresh_img2 = cv2.adaptiveThreshold(thresh_img,set_color,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
            cv2.THRESH_BINARY,window_sz,2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM