Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Victor A. Pavlov                     2:5025/81      23 Jul 2002  18:54:26
 To : Evgen Kondratyuk
 Subject : Need Help -> Векторизация
 -------------------------------------------------------------------------------- 
 
 
  Как то раз (Пон Июл 22 2002 20:54) Evgen Kondratyuk написал письмо All:
 
  EK>   Такая задачка.___________________________________________
  EK>   Входные данные: БМП файл с фигурами(триугольник, квадрат и т.д.).
  EK>   Требуется: Векторизировать файл, тоесть определить линии (начало и конец
  EK> линии) и сложить из линий объекты. Вывести в текстовый файл названия
  EK> объектов и координаты составляющих их линий.
 
   Обработка производится в несколько этапов:
   1. Бинеаризация.
   Здесь мы приводим полутоновое изображение к двууровневому виду (двум цветам). 
 Если необходима векторизация разноцветных фигур по-отдельности, делаем
 многоуровневую сегментацию - приведение к ограниченному числу цветов, а далее
 для каждого цвета (кроме цвета фона) формируем отдельное двухцветное
 изображение, сводя задачу к предыдущей.
   Алгоритмы бинеаризации довольно хорошо проработаны и выбрать подходящий для
 конкретного случая не составляет труда.
   2. Выделение границ (edge detect).
   Если изображение представлено, в основном, сплошными закрашенными фигурами,
 необходим этап выделения границ. Он состоит в обходе всех границ раздела цветов 
 и создании результирующего изображения, в котором закрашены только пикселы,
 соответствующие границам.
   Если же изображение состоит из тонких линий (вроде чертежа), данный этап не
 требуется.
   3. Скелетизация (thinning).
   Hа данном этапе все линии на изображении приводятся к толщине в 1 пиксел.
 Имеется несколько алгоритмов скелетизации, например, Zhang-Suen. Если нужен
 пример в исходниках - могу выслать.
   4. Трассировка однопиксельных линий.
   Отслеживаем полученные в результате скелетизации однопиксельные линии, идя
 вдоль них и записывая подряд каждую точку. Анализируем разветвления, либо
 зацикливания линий. Получаем "сырое" векторное описание.
   Можно просто тупо соединить любые две закрашенные соседние точки векторами, а 
 затем в несколько проходов разрывать по определенным правилам циклы
 (треугольники), размером в 1 пиксел, пока подобных циклов-артефактов не
 останется. Можно также восстанавливать разрывы линий в 1-2 пиксела, для
 коррекции ошибок сканирования/бинеаризации.
   5. Сглаживание линий.
   Сглаживаем полученные на предыдущем этапе попиксельные ломаные любыми
 нравящимися нам кривыми (отрезки прямых, дуги окружностей, сплайны и т.п.) и
 получаем результирующее векторное описание.
 
 Всего хорошего - Victor
 
 --- GoldED/W32 3.0.1
  * Origin: Red Station, Voronezh, Russia (2:5025/81)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Need Help -> Векторизация   Evgen Kondratyuk   22 Jul 2002 20:54:35 
 Need Help -> Векторизация   Georgy Plechanov   23 Jul 2002 11:55:50 
 Need Help -> Вектоpизация   Peter Pike\'s   24 Jul 2002 23:43:11 
 Need Help -> Вектоpизация   Georgy Plechanov   25 Jul 2002 12:52:52 
 Need Help -> Векторизация   Evgen Kondratyuk   25 Jul 2002 12:16:12 
 Need Help -> Векторизация   Roman Dawydkin   26 Jul 2002 08:57:08 
 Need Help -> Векторизация   Georgy Plechanov   25 Jul 2002 22:09:58 
 Re: Need Help -> Векторизация   UstVG    26 Jul 2002 17:23:04 
 Need Help -> Векторизация   Victor A. Pavlov   23 Jul 2002 18:54:26 
 Need Help -> Векторизация   Evgen Kondratyuk   25 Jul 2002 12:15:00 
 Need Help -> Векторизация   Victor A. Pavlov   26 Jul 2002 00:16:35 
 Re: Need Help -> Векторизация   Michael Lezzhov   26 Jul 2002 00:13:33 
Архивное /ru.algorithms/18393d3dad4c.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional