Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка изображений, Удаление аномальных пикселей и решеток 
:(
    Опции темы
Dmitrii
Дата 29.7.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.7.2010

Репутация: нет
Всего: нет



Чтобы произвести скелетизацию сохраняя кроме координат информацию о цвете и толщине, надо скелетизировать не бинаризированное и не "утоньченное" растровое изображение, какой алгоритм для этого использовать, ведь волновой подходит как я понимаю только для бинаризированного изображения.
PM MAIL   Вверх
Earnest
Дата 30.7.2010, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



1) Я бы разделила растр по цветам (на несколько цветовых слоев) и векторизовала отдельно каждый слой - вот тебе информация о цвете. Строго говоря, их можно и обрабатывать отдельно, а объединить данные (если надо) только на последнем этапе.
2) Для сохранения информации о толщине я делаю утоньшение с помощью Distance Transform - это такое преобразование, которое каждой белой точке бинарного растра приписывает некоторое эффективное расстояние до края, а потом прослеживаются "хребты". Утоньшенный растр делаю не черно-белым а серым, с этой приведенной толщиной в каждой точке. И дальше волновой алгоритм имеет информацию о толщине в каждой точке.
Конечно, это только варианты, могут быть и другие методы. 
Кстати, волновой алгоритм можно напустить на любое изображение, там ведь просто надо определить функцию NonZeroPixel, а уж как ты будешь определять пиксел или не пиксел - дело двадцать пятое.


--------------------
...
PM   Вверх
Dmitrii
Дата 30.7.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.7.2010

Репутация: нет
Всего: нет



Как же это вся математика тяжела, когда приходится в ней копаться самому smile 
Никак не могу разобраться как дистанс трансформ является алгоритмом утоньшения, глядя на примеры в википедии и на других сайтах. Где из обычного бинарного изображения получается черно-серый монстр, где почти ничего не видно. К сожалению, этот путь, скорее всего, не для меня) Буду думать как найти нижнюю и левую крайнии линии, а там уже работать непосредственно с областью, где лежит график.
PM MAIL   Вверх
Earnest
Дата 2.8.2010, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



DT не фвляется сам по себе алгоритмом утоньшения, это предварительный этап. Это преобразование как бы делает растр "трехмерным". А вторым этапом нужно проследить хребты. Я уже не помню алгоритм, но вот тебе статья, по которой я его когда-то делала. Насколько я помню, там не все абсолютно прозрачно (как и в любых научных статьях), кое-что надо додумывать.
Но вроде не очень сложно. Я изменила там 2 вещи: во-первых, утоньшенный растр делаю не бинарным, а 256-цветным (чтобы сохранить цвет, т.е. толщину). во-вторых, там где исходная линия имеет четную толщину, оставляю 2 пиксела, а не один . У авторов там, насколько помню, довольно мутные рассуждениыя насчет того, какой пиксел из 2 выбрать, но я это все пропустила, т.к. меня интересовали довольно тонкие линии, причем нужно было, чтобы векторизованная линия лежала точно по центру, а если оставлять один из пары пикселов, линия заметно съезжает. Кроме того, я потом использовала волновой алгоритм для построения вектора; это немножко из пушки по воробьям (для работы с утоньшенным растром можно было бы чего попроще нарисовать), но во-первых, у меня уже было большой опыт работы с волновым алгоритмом, а во-вторых, ему по фигу, один там пиксел или 2, он прекрасно строит центры.

Что касается "ничего не видно" - это вопрос выбора палитры. Конечно, если ты будешь использовать чистые расстояния для интенсивности серого, то ничего не разглядишь. С другой стороны, а надо ли - видеть должен компьютер, а он разницу между RGB(1,1,1) и RGB(2,2,2) прекрасно видит. Но если хочешь посмотреть - задай палитру поярче. И еще, я первое время экспериментировала с различными метриками (при построении DT). И пришла к выводу, что для векторизации линейчатых растров ощутимой разницы нет, так что не парься, бери любую.

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Skeletons_based_on_DT.rar 154,08 Kb


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.