Как извлечь пиксели определенного цвета c для распознавания текста? - PullRequest
1 голос
/ 07 августа 2020

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

Читая о предварительной обработке изображений для OCR, я подумал, что было бы действительно полезно просто удалить из изображения все, что не является белым.

Я используя как imagemagick, так и vips, но я понятия не имею, с чего начать, какие операции использовать и как его искать.

Ответы [ 4 ]

3 голосов
/ 07 августа 2020

Если мы сделаем образец изображения следующим образом:

magick -size 300x100 xc: +noise random -gravity center -fill white -pointsize 48 -annotate 0 "Hello" captcha.png

enter image description here

You can then fill with black anything that is not white:

magick captcha.png -fill black +opaque white result.png

enter image description here

If you want to accept colours close to white as being white, you can include some "fuzz":

magick captcha.png -fuzz 10% -fill black +opaque white result.png

enter image description here

введите описание изображения здесь

2 голосов
/ 07 августа 2020

Несколько месяцев в трекере libvips обсуждали go методы удаления фона:

https://github.com/libvips/libvips/issues/1567

Вот фильтр:

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

1 голос
/ 07 августа 2020

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

0 голосов
/ 07 августа 2020

Если изображения являются синтетическими c и несжатыми, вы можете проверить строгое равенство значений RGB. В противном случае используйте порог расстояния между тройками RGB (например, евклидова или манхэттенская).

Если вы хотите разрешить вариации яркости, но не цвета, вы можете преобразовать в HLS и сравнить HS.

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