Реализация локализованной бинаризации Оцу - PullRequest
2 голосов
/ 13 апреля 2011

Я использую подпрограмму cvThresholding () из библиотеки OpenCV, чтобы выполнить бинаризацию с помощью метода пороговых значений Оцу.Иногда такой подход терпит неудачу, что понятно, поскольку Оцу рассчитывает единый порог для всего изображения.Чтобы улучшить результаты, я решил разбить изображение на сетку, а затем выполнить бинаризацию Оцу на каждом участке сетки.Результаты теперь кажутся обнадеживающими, однако разбиение на основе сетки делает выходное двоичное изображение прерывистым по своей природе, особенно на краях сетки.Есть ли способ решить эту проблему?

Пожалуйста, обратите внимание, что этот подход работает лучше для меня.Мне известна опция адаптивного порога, доступная в opencv, и она, похоже, не работает для меня, поскольку она слишком чувствительна по сравнению с подходом бинаризации Оцу.

Ожидание ответа.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Что если вы попробуете переместить окно вместо сетки? Например, для каждого пикселя бинаризация основана на пороговом значении, полученном для патча 5x5 или 7x7 с центром в этом пикселе (с соответствующим переносом по краям).

Движущееся окно будет постепенно и непрерывно изменять порог по всему изображению.

3 голосов
/ 13 апреля 2011

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

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