Re: Need Help -> Векторизация
- From
- Michael Lezzhov ()
- To
- Evgen Kondratyuk
- Date
- 2002-07-26T00:13:33Z
- Area
- RU.ALGORITHMS
From: "Michael Lezzhov" <msl@admiral.ru>
> Входные данные: БМП файл с фигурами(триугольник, квадрат и т.д.).
> Требуется: Векторизировать файл, тоесть определить линии (начало и конец
> линии) и сложить из линий объекты. Вывести в текстовый файл названия
объектов и
> координаты составляющих их линий.
>
Векторизовать можно, например, с помощью волнового алгоритма.
Подробно описано в http://ocrai.narod.ru/vectory.html
Для каждой связной компоненты пикселей поочередно применять волну на 8
направлений и на 4 направления.
В качестве координат отрезков линий векторизованного изображения
использовать середину испущенной волны. Координаты снимать, например, через
каждые 3-4 волны.
В результате этого получится совокупность маленьких отрезков известной
толщины. причем будут известны соседи каждого. (Толщина отрезка - это
средняя ширина волнового фронта по всему отрезку)
После этого отфильтровать явный мусор средней толщине и суммарной длине
отрезков.
После этого можно выделять большие отрезки на изображении(состоящие из
маленьких отрезков). Точки поворота можно отличить по резкому изменению угла
между маленькими отрезками.
Отрезок прямой(большой) можно отличить от всего остального по разности
расстояния между его крайними точками и длиной отрезка. У отрезка прямой она
достаточно маленькая.(Если этого не хватит можно еще добавить какие-нибудь
еще признаки)
Из больших отрезков довольно просто составить фигуры(квадрат, треугольник)
Работает все это довольно быстро.
Такой поиск фигур сработает, если фигуры не пересекаются. Иначе задача
сильно усложнится.
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)