2013-03-08 4 views
1

У меня есть куча несжатых битоновых изображений TIF. У всех из них есть водяной знак посередине. Когда я запускаю их через OCR, текст, который перекрывается с водяным знаком, не распознается. Я пытаюсь проверить, могу ли я применить некоторую очистку для удаления этих водяных знаков, чтобы распознать недостающий текст.Как удалить водяной знак из TIFF для улучшения OCR

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

Пример схожих изображений this (кроме этого один цветов и символы водяных знаков в моем случае много толще и больше, мои водяные знаки также намного короче: только 3 до 4 букв длина)

Кажется, что может быть какой-то фильтр очистки, который будет похож на удаление больших черных границ с изображения, кроме того, что границы «плотнее», чем водяной знак, поэтому они выглядят «более черными».

У меня есть 3 инструмента в моем распоряжении: GIMP, ImageMagick и IrfanView. Можете ли вы порекомендовать какие-либо конкретные функции любого подмножества этих инструментов, которые могли бы мне помочь?

+0

Является ли водяной знак обозначением (например, «конфиденциальный», «черновик» и т. д.), или он специально предназначен для путаницы OCR («Копия оценки», и т.д)? – halfer

+0

Чисто обозначение. –

+0

OK, прохладный. Если вы увеличите яркость и контрастность (либо с помощью Gimp, либо IM), то серые артефакты могут отпасть, а черные выживут. – halfer

ответ

3

Игра с контрастом и т. Д. Не помогла, но я нашел другой способ. Как указано выше, обычный текст намного «плотнее», чем текст водяного знака, означающий, что обычный черный пиксель имеет более близкие черные пиксели, чем черный пиксель водяного знака. Поэтому я разработал простой алгоритм фильтрации и порогового алгоритма на основе окон.

Вот как я сделал это в Matlab, используя окно 5X5:

im=imread('imageWithWmark.tif'); 
imInv = ~im; 
nr=size(imInv,1); 
nc=size(imInv,2); 

d = 2; % for 5X5 window 
counts = zeros(nr,nc); 
for rr = d+1 : nr-d-1 
for cc = d+1 : nc-d-1 
    counts(rr,cc) = nnz(imInv(rr-d:rr+d,cc-d:cc+d)); 
end 
end 

thresh=10; % 10 out of 25 -- the larger the thresh the thinner the resulting letters are 
imThresh = (counts>=thresh) & imInv; 
imwrite(~imThresh,sprintf('Thresh_%d.tif',thresh),'Compression','none','Resolution',300); 

Конечно, размер окна, порог и другие параметры зависят от параметров обычного текста на странице (письмо больше/меньше, толще/тоньше и т. д.), но даже эта начальная версия работала довольно хорошо

 Смежные вопросы

  • Нет связанных вопросов^_^