Как сделать изображение равномерной яркости (используя Python / PIL) - PullRequest
4 голосов
/ 20 марта 2009

Я хочу сделать снимок документа, который был сфотографирован, и сделать так, чтобы он был отсканирован. Так как сканер будет помещать постоянный источник света по всему документу, я хочу добиться такого эффекта на фотографии документа. Желаемый эффект будет состоять в том, чтобы удалить любые тени или области при слабом освещении (или, по крайней мере, сделать их менее заметными) и сделать всю фотографию довольно яркой.

Моей первой мыслью было бы найти самую яркую часть целевого изображения, и они сделали все изображение такой яркостью. Предполагая, что это даже правильный алгоритм, как бы я сделал это в PIL? Есть метод получения яркости? и т.д.

(Это продолжение этого более раннего вопроса .)

Ответы [ 4 ]

2 голосов
/ 20 марта 2009

Попробуйте ImageChops.screen (image1, image2) с 2 копиями изображения. Если это неудовлетворительно, попробуйте некоторые другие функции в модуле ImageChops.

Также вы можете сначала преобразовать его в оттенки серого: ImageOps.grayscale (изображение).

2 голосов
/ 20 марта 2009

В качестве первой попытки попробуйте установить порог изображения. Темные области становятся черными, светлые области становятся белыми. Я не использовал PIL, но я думаю, что есть простой способ сделать это.

0 голосов
/ 12 мая 2009

Какой тип изображения? Если предполагается, что он идеально чистый черный и белый, как на текстовых страницах, то ваши необработанные данные, вероятно, представляют собой градиент градаций серого с различными уровнями не совсем черных букв. Пороговое значение относительно константы может дать хорошие результаты, но не в том случае, если освещение слишком неравномерно или мешает блики объектива. Пороговое изображение против сглаженной версии себя. Сгладьте его, используя PIL_usm.gblur (изображение, радиус), где радиус (в пикселях) - это что-то вроде десяти, двадцати или некоторого значения, сопоставимого с шириной элементов букв. Быстрый взломанный код из старых заметок только для иллюстрации:

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, если в этих документах есть фотографии или другая не двухуровневая графика, вам нужно быть более умным.

0 голосов
/ 24 марта 2009

Сначала попробуйте вручную в программе для редактирования изображений, например, в GIMP. Я думаю, что вы ищете для регулировки яркости и контрастности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...