Реализация алгоритма скелетизации монохромного из

Ольга15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
21.10.2009

Требуется реализовать алгоритм скелетизации (утоньшения) монохромного изображения. Ссылки на описание алгоритма:

http://www.graphicon.ru/1998/Image_Processing_&%20_Computational_Geometry/Mestetskiy.pdf

http://files.firun.ru/study/ITMO/Term.5-6/CG/%D0%A1%D0%BA%D0%B5%D0%BB%D0%B5%D1%82%20%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D0%B9%20%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9%20%D1%84%D0%B8%D0%B3%D1%83%D1%80%D1%8B.pdf

Требования:

1. Разрабатывать реализацию можно на любом языке, но выводы алгоритма должны быть в .NET-сборке.

2. На вход алгоритм должен брать массив bool[,] ячеек монохромной картинки: false -> ячейка часть объекта, true -> ячейка пустая, параметр "способ контуризации" (см. п. 4) и параметр "грубость аппроксимации", влияющий на то, аппроксимировать или нет полученный скелет (п. 6), и, если аппроксимировать - то насколько грубо можно это делать.

3. На выход алгоритм должен давать скелет этой картинки, в виде набора связанных векторов.

4. Контуризацию монохромного изображения нужно уметь производить 2 способами: как указано в описании, и очерчивая границы черных квадратов, для сравнительного анализа.

5. После преобразования в векторную форму нужно убрать все фиктивные черточки, появляющиеся в процессе работы этого алгоритма - все векторы, соприкасающиеся с границами изображения.

6. После пункта 5 нужно аппроксимировать ("сгладить") полученную векторную форму.

7. Скорость работы скелетизации должна быть, как и заявлено в алгоритме - N log(N), где N - число вершин полученного многоугольника с дырами.

Есть примеры работы этого алгоритма и даже демо-программа, реализующая этот метод.

Исходные коды должны быть предоставлены в компилируемом виде.