Реализация алгоритма скелетизации монохромного из
Требуется реализовать алгоритм скелетизации (утоньшения) монохромного изображения. Ссылки на описание алгоритма:
http://www.graphicon.ru/1998/Image_Processing_&%20_Computational_Geometry/Mestetskiy.pdf
Требования:
1. Разрабатывать реализацию можно на любом языке, но выводы алгоритма должны быть в .NET-сборке.
2. На вход алгоритм должен брать массив bool[,] ячеек монохромной картинки: false -> ячейка часть объекта, true -> ячейка пустая, параметр "способ контуризации" (см. п. 4) и параметр "грубость аппроксимации", влияющий на то, аппроксимировать или нет полученный скелет (п. 6), и, если аппроксимировать - то насколько грубо можно это делать.
3. На выход алгоритм должен давать скелет этой картинки, в виде набора связанных векторов.
4. Контуризацию монохромного изображения нужно уметь производить 2 способами: как указано в описании, и очерчивая границы черных квадратов, для сравнительного анализа.
5. После преобразования в векторную форму нужно убрать все фиктивные черточки, появляющиеся в процессе работы этого алгоритма - все векторы, соприкасающиеся с границами изображения.
6. После пункта 5 нужно аппроксимировать ("сгладить") полученную векторную форму.
7. Скорость работы скелетизации должна быть, как и заявлено в алгоритме - N log(N), где N - число вершин полученного многоугольника с дырами.
Есть примеры работы этого алгоритма и даже демо-программа, реализующая этот метод.
Исходные коды должны быть предоставлены в компилируемом виде.