Pechka
Sep 15 2011, 08:51
Пытаюсь разобраться с проблемой фильтрации бинарного изображения. Есть изображение с фоном (уровень 1) и информацией(уровень 2). Нужно все области связанных пикселей (связь вертикальная либо горизонтальная), размер которых меньше заданного. Я сделал рекурсивный алгоритм, но даже при развороте рекурсии:
1. производительсность его весьма мала
2. невозможно распараллелить
Хочется переложить алгоритм на GPU(вся остальная обработка ведется именно там и не хватает пропускной способности чтобы гонять промежуточне изображения для фильтрации туда-сюда), для этого нужно его как-то распараллелить. Может кто-нибудь знает подходящий для такой фильтрации алгоритм? Интересуют в целом не рекурсивные алгоритмы (может с обходом контуров и подсчетом периметра и др.), которые могут помочь при решении задачи.
LexsZero
Sep 15 2011, 10:35
Какого размера изображение, какие требования по производительности?
Попробуйте поиск в ширину, оптимизировать можно, например, используя очередь. Это классическая задача поиска компонент связности в графе.
Простейший способ распараллеливания - обрабатывать изображение частями, затем объединяя области одного цвета на границах.
Pechka
Sep 15 2011, 13:19
Цитата(LexsZero @ Sep 15 2011, 14:35)

Какого размера изображение, какие требования по производительности?
Попробуйте поиск в ширину, оптимизировать можно, например, используя очередь. Это классическая задача поиска компонент связности в графе.
Простейший способ распараллеливания - обрабатывать изображение частями, затем объединяя области одного цвета на границах.
Спасибо, а может есть ссылочка на литературу по этому вопросу?
Нашел такую статью:
http://ieeexplore.ieee.org/Xplore/login.js...thDecision=-203
LexsZero
Sep 15 2011, 18:13
Цитата(Pechka @ Sep 15 2011, 17:19)

Спасибо, а может есть ссылочка на литературу по этому вопросу?
Увы, не подскажу. Разве что можно почитать классику по алгоритмам - Кормен/Лейзерсон/Ривест "Алгоритмы: построение и анализ".