У меня есть фотография документа с черным текстом на белом фоне.
На фото есть несколько проблем:
Я хотел бы очистить эту картину. Я на Линуксе.
Фильтр «Цвета > Авто > Баланс белого» в GIMP дает многообещающие результаты. Однако он не выравнивает фон в разных областях изображения.
Но если я выберу только подобласть изображения, фильтр «Баланс белого» на самом деле работает лучше в этой области.
Так что я полагаю, что постепенное применение «Баланс белого» в локальных областях изображения будет работать очень хорошо.
Я представляю, что фильтр "Баланс белого" реализован так:
Итак, что я хотел бы вместо этого:
Знаете ли вы что-нибудь подобное, что существует либо в GIMP, либо в виде независимой части программного обеспечения, например, для командной строки Linux?
Я предполагаю, что у вас есть градиент общей яркости из-за неравномерного освещения. Если это так, то вы можете продублировать слой с изображением и применить лучшую коррекцию к каждой части изображения на другом слое: кривые для контраста, цветовой баланс или обесцвечивание для баланса белого.
Затем, используя маски слоя, вы можете закрасить каждую область плавными градиентами, чтобы смешать их вместе. Десатурацию можно использовать в качестве последнего шага, чтобы немного сгладить оставшиеся различия.
Альтернативным подходом может быть дублирование слоя (я сделал снимок, затеняя рукой половину карты, чтобы воспроизвести проблему):
Размывайте его, пока текст не исчезнет:
Затем вычтите полученный слой из исходного, выберите режим наложения «Зернистый экстракт», чтобы обратить неравномерность освещения:
Низкочастотная фильтрация, достигаемая за счет размытия, эффективна только в том случае, если изменения освещения намного более плавные, чем детали текста, и она лучше всего работает с более разреженным текстом, поскольку он исчезает при размытии. Обратите внимание, что в этом случае полужирный текст создает ореол при размытии, который инвертируется при выполнении смешивания. Вы можете попробовать с большим радиусом или попробовать замаскировать его перед размытием дубликата слоя.
Также обратите внимание, что эта операция также фиксирует баланс белого, поскольку инвертирует цветовые кривые.
В качестве последнего штриха я применил настройку «Кривые», чтобы увеличить контрастность.
Это может быть не идеально, но я действительно удивлен тем, как это получилось.
Вы, вероятно, добьетесь некоторого успеха, выполняя уровни в более темных каналах (если изображение выглядит желтым, осветлите синий канал и т. д.). Вы можете сделать это глобально. Это, вероятно, будет в дополнение к уровням (до) в канале *значение. В канале значения вы можете переместить входные черные и белые точки ближе друг к другу, а затем, возможно, увеличить гамму, чтобы осветлить бумагу, на которую повлияло размытие. из печати.
Хотя обесцвечивание может помочь, оно оставит вас с серым фоном, а не с белым, если применить его до того, как вы поднимете уровни фона — это будет полезно, когда фон станет белым. Маска нерезкости с довольно низким значением, но большим радиусом может приподнять белые области вокруг текста, а малый радиус может скрыть часть размытия.
Я не рекомендую пороговое значение , если вам абсолютно не нужно обеспечивать черно-белое изображение, поскольку оттенки серого имеют эффект сглаживания.
Как только ваш фон станет белым (rgb 255 255 255) далеко от текста, может потребоваться локальное удаление пятен.
...режим смешивания как "Экстракт зерна"
Режим «Деление» также создает приятные эффекты для документов (более контрастные).
Вот идея без конкретных инструкций по реализации. Если кто-то может конкретизировать это в новом ответе, вперед!
Сначала вы делаете копию изображения, например, в новом слое - зависит от используемого вами инструмента.
В этой копии вы сначала делаете небольшое сглаживание с небольшим радиусом. Это означает, что каждый пиксель становится средневзвешенным значением своего локального окружения.
Затем вы применяете медиану или «нижнюю медиану» с радиусом больше среднего символа. Это означает, что для каждого пикселя (и каждого цветового канала):
Это дает вам оценку фона. Однако он, вероятно, будет содержать «шаги» в цветах из-за того, как работают медианы. Может быть, есть что-то еще умнее этих медиан.
При желании используйте сглаживание (большой радиус), чтобы устранить эти шаги.
Теперь вычтите этот слой из исходного изображения.
При желании используйте «баланс белого» для результата (если вы работаете с GIMP).
Я не знаю, какой инструмент мне выбрать, если я хочу реализовать все это. До сих пор я использовал PHP, но я не уверен, что это вообще лучшее решение.
свалкаблеск
Майкл С
Дон Кихот
Дон Кихот
Дон Кихот
Майкл С
Дон Кихот
Дон Кихот