2016-09-14 4 views
1

Я создаю общий алгоритм синтаксического анализа текста для изображений. я бегу:opencv MSER.detectRegions() vs findContours(): в чем разница?

MSER.detectRegions() 

против

findContours(...cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 

на бинарном изображении. Результаты там же. Я знаю, что MSER можно сделать в сером цвете, но я хотел пойти безопаснее.

Мне нужно выбрать один из них, а findContours() занимает меньше половины времени работы MSER.

Я что-то упустил? Что бы вы выбрали?

+4

Не имеет смысла вычислять максимально устойчивые области на двоичных изображениях! – Miki

+0

Почему? если есть связь одного пикселя между двумя корпусами, почему бы и нет? – ndor

ответ

2

Как уже указывалось, нет смысла вычислять MSER на двоичном изображении. MSER в основном порождает изображение (оттенки серого) несколько раз, используя увеличивающиеся (уменьшающиеся) пороговые значения, и то, что вы получаете, является так называемым деревом компонентов, как это here. Связанные компоненты, которые изменяют свой размер/форму, по крайней мере, по разным бинаризациям, являются так называемыми максимально устойчивыми экстремальными областями (например, K на графике). Это, конечно, очень упрощенное объяснение. Обратитесь к Google за дополнительной информацией, вы найдете достаточно.

Как вы можете видеть, порог уже порожденного изображения не имеет смысла. Итак, передайте изображение в градациях серого в алгоритм MSER. MSER является общей основой для современных подходов к обнаружению текста (см. here и here).