簡體   English   中英

如何使圖像亮度均勻(使用 Python/PIL)

[英]How to Make an Image Uniform Brightness (using Python/PIL)

我想為已拍攝的文檔拍攝圖像,並使其看起來像是經過掃描的。 由於掃描儀會在整個文檔上放置一個恆定的光源,我想在文檔的照片上實現這種效果。 所需的效果是消除任何陰影或低光區域(或至少使它們不那么明顯)並使整張照片相當明亮。

我的第一個想法是找到目標圖像中最亮的部分,然后它們使整個圖像變得如此明亮。 假設這甚至是正確的算法,我將如何在 PIL 中做到這一點? 有沒有獲取亮度的方法? ETC?

(這是這個早先問題的后續。)

作為第一次嘗試,嘗試對圖像進行閾值處理。 暗區變為黑色,亮區變為白色。 我沒有使用過 PIL,但我想有任何簡單的方法可以做到這一點。

使用 2 個圖像副本嘗試 ImageChops.screen(image1, image2)。 如果不滿意,請嘗試 ImageChops 模塊中的其他一些功能。

此外,您可能需要先將其轉換為灰度:ImageOps.grayscale(image)。

首先在圖像編輯程序中手動嘗試,如 GIMP。 我認為您正在尋找的是調整亮度和對比度。

什么類型的圖像? 如果它應該是理想的純黑白,就像文本頁面一樣,那么您的原始數據可能類似於灰度漸變,其中包含不同級別的非全黑字母。 對常數設置閾值可能會產生良好的結果,但如果照明太不均勻或鏡頭眩光干擾則不會。 對圖像本身的平滑版本進行閾值處理。 使用 PIL_usm.gblur(image, radius) 對其進行平滑處理,其中半徑(以像素為單位)類似於十、二十或與字母元素寬度相當的某個值。 舊筆記中的快速黑客代碼僅用於說明:

import Image
import PIL_usm
# see http://www.cazabon.com/pyCMS/PIL_usm.html for PIL_usm

img = Image.open(...)
sm = PIL_usm(img, 10)
thr = Image.ImageChops.subtract(img,sm, .001, 128)  
# or whatever works 4u...

OTOH,如果這些文件有照片或其他非雙層圖形,你需要更聰明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM