簡體   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