2016-10-13 3 views
0

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

Как я делаю это прямо сейчас -

1. Apply bilateral filters to remove the underlines of text. 
2. Apply threshold with value 180 as min value and clear them out 
3. Apply Gaussian blur on the image to remove the unfilled space between the characters. 
4. Apply threshold again with value 250 as min value. 
5. Compute contours in the images 
6. Draw rectangle bounding box around contours 
7. use O(n^2) algo to find out max overlapped rectangle and compare text within it. 

Однако проблема заключается в контуры, появляющиеся в обоих изображениях разные, то есть в одном из image number of contours are 38 while other contains 53. Я хочу иметь общее решение и не хочу зависеть от содержимого изображения. Однако, несомненно, изображение содержит хорошо отформатированный текст.

Благодаря

ответ

0

Я не уверен, чтобы понять, что вы хотите точно, но, чтобы получить ограничивающую рамку вокруг слова в образе, я мог бы сделать это:

  1. Применить обработку, чтобы получить хороший пороговую: только текст, фон в черном, текст в белом. Этот шаг зависит от типа и качества вашего изображения.
  2. Вычислить сумму каждой строки. Сумма должна отличаться от 0, где есть текст, и все строки в пространстве между каждой строкой должны быть нулевыми (вы можете установить порог этого значения, если есть некоторый шум). Вы можете найти верхнюю/нижнюю строку для каждой текстовой строки
  3. Для каждой текстовой строки, найденной на шаге 2, вычислите сумму каждого столбца. То же, что и в шаге два, столбцы со словом должны отличаться от 0. Вы можете найти все пробелы между словами и буквами. Удалите все пробелы, которые слишком малы, чтобы быть пробелом между двумя словами.
  4. Поздравляем, у вас есть верхняя/нижняя строка и первые/последние столбцы каждого слова.
+0

Спасибо за ответ. Почему я делаю это, я хочу проверить, содержит ли два изображения один и тот же текст в одном и том же формате, то есть форматирование одинаково. Я должен быть в состоянии сказать, если они не являются и насколько далеко. Можете ли вы предложить несколько разных способов, если вы имеете в виду. – codeomnitrix

+0

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

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