Здесь я предложу несколько вариантов решения этой проблемы.
Основная проблема фотографий — неравномерная освещенность страницы, когда в центре яркость больше, а по краям меньше или что-то в этом роде.
Также часто необходимо повысить контрастность текста по сравнению со страницей.
При обычной коррекции Levels некоторые части изображения переэкспонированы, а некоторые, наоборот, слишком темные.
Все методы более или менее решают эти проблемы.
В качестве материала для обработки я взял вот эту страницу (предварительно отрезав всё лишнее):
В скобках указаны английские названия инструментов, а также используемые при этом настройки.
Метод разделения слоев
- Создайте новый слой с копией изображения.
- Размытие нового слоя по Гауссу до тех пор, пока он не станет относительно однородным, когда текст почти не оставляет следов, но заметна разница в яркости по углам и в центре.
(Фильтры -> Размытие -> Размытие по Гауссу: Радиус размытия - 100)
- Назначьте режим этого слоя на разделение (Окно Слои: Режим - Разделить)
- Объединить слои (Слои -> объединить)
Метод обнаружения края
- Размытие фона по Гауссу.
Выбираем дельту, чтобы текст не размывался, думаю радиус размытия не стоит ставить больше 10. (Фильтры -> Размытие -> Выборочное размытие по Гауссу: Дельта - 19; Радиус - 15)
- Выберите ребра, используя собственный метод Лапласа (Фильтры -> Обнаружение кромок -> Край.
: Алгоритм: Лапласа; Количество: 2)
- Если хотите, инвертируйте цвет изображения
Длинный метод с отдельной коррекцией яркости
- Размытие фона по Гауссу.
Выбираем дельту, чтобы текст не размывался, думаю радиус размытия не стоит ставить больше 10. (Фильтры -> Размытие -> Выборочное размытие по Гауссу: Дельта - 19; Радиус - 15)
- Создайте новый слой с копией изображения.
- Размытие нового слоя с помощью Gaussian до тех пор, пока он не станет относительно равномерным, когда текст почти не оставляет следов, но заметна разница в яркости по углам и центру (Фильтры -> Размытие -> Размытие по Гауссу: Радиус размытия - 100) (Фильтры - > Размытие -> Размытие по Гауссу: Радиус размытия - 100)
- Установите режим этого слоя на «Яркость» и установите плотность на 50% (окно «Слои»: «Режим» — «Значение»; «Непрозрачность»: 50).
- Объединить слои (Слои -> объединить)
- Обработка изображения: Цвет -> Авто -> Растянуть HSV.
Относительная читаемость также может быть достигнута с помощью пакета ImageMagic.
(Никакого отношения к GIMP, просто альтернатива) Convert ./1_original.jpg -colorspace grey \( +clone -blur 10x65535 \) -compose subtract -composite -threshold 50% .
Автоматизация
Муркт Я разобрался с Python-Fu и написал скрипт, который может всё это автоматизировать.Пишем в консоль следующее (Фильтры -> Python-Fu -> Консоль):
from gimpfu import * def textify_divide(img): ly2 = img.active_layer.copy() img.add_layer(ly2) pdb.plug_in_gauss_rle(img, ly2, 100, 1, 1) ly2.mode = DIVIDE_MODE img.flatten() def textify_edges(img, radius=10, max_delta=25, amount=2): ly = pdb.gimp_image_get_active_layer(img) pdb.plug_in_sel_gauss(img, ly, radius, max_delta) pdb.plug_in_edge(img, ly, amount, 1, 5) pdb.gimp_invert(ly)Теперь вы можете обрабатывать все открытые изображения из одной консоли с помощью команды:
[textify_edges(x) for x in gimp.image_list()]Вы также можете попробовать использовать другие функции Python-Fu, например открытие файлов и т. д.:
image = pdb.file_jpeg_load(filename, raw_filename) image = pdb.file_png_load(filename, raw_filename)Теги: #канитель #Чулан
-
Rfg_Drawer Или Редактор Otdr
19 Oct, 24