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)