как отбелить белые части и почернить черные части отсканированного изображения в MatLab или фотошопе - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть отсканированное изображение, отсканированное из файла напечатанного слова (docx). Я хочу, чтобы отсканированное изображение выглядело как исходный текстовый файл, то есть для удаления шума и улучшения. то есть, чтобы полностью отбелить белые части и полностью чернить черные части, не меняя цветные части в файле введите описание изображения здесь

1 Ответ

0 голосов
/ 03 ноября 2018

Есть несколько способов подойти к этому. Проще всего было бы применить фильтр уровней с черной точкой, немного поднятой и белой точкой, немного пониженной. Это можно сделать для всех 3 цветовых каналов или выборочно для подмножества. Поскольку вы собираетесь создавать чисто черный и белый цвета, а цветное изображение отсутствует, я бы применил одинаковые настройки ко всем 3 цветным каналам. Это работает так:

destVal = (srcVal - blackPt) + srcVal / (whitePt - blackPt);

Это немного изменит цветные части изображения, вероятно, сделав их немного более или менее насыщенными.

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

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

Но я подумал - это было сделано с помощью Word. У вас есть копия Word? Вероятно, было бы не слишком сложно собрать макет, который почти идентичен. Это все равно не поможет с логотипом. Но то, что вы можете сделать, это расположить текст так же и экспортировать его в PDF или другой формат изображения. (Или, если вы можете найти оригинальный шаблон, просто используйте его напрямую.) Затем вы можете написать некоторый код для обработки вашей отсканированной копии, и где бы пиксель был в оттенках серого (красный = зеленый = синий), используйте соответствующий пиксель из версии, которую вы сделали. , иначе используйте пиксели от скана. Это даст вам все штампы и подписи, при этом текст будет красивым и четким. Возможно, вы могли бы даже найти логотип организации в Интернете. На самом деле, в Википедии даже есть копия их логотипа .

Возможно, вам понадобится какой-то порог для градаций серого, потому что некоторые пиксели могут быть близки, но имеют небольшой оттенок цвета. Один из вариантов может быть примерно таким:

if ((fabs(red - green) < threshold) && (fabs(red - blue) < threshold))
{
    destVal = recreationVal; // The output is the same as the copy you made manually
}
else
{
    destVal = scannedVal; // The output is the same as the scan
}

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

...