Strona 1 z 1

Wektoryzacja bitmapy? (własny program sterujący)

: 15 maja 2012, 12:10
autor: WRonX
Cześć.

Moje pytanie może Wam się wydać głupie, albo bezsensowne, ale mam tak, że lubię coś czasem zrobić w 100% we własnym zakresie, a pomyślałem, że tutaj najłatwiej uzyskam pomoc.

Chodzi mi po głowie prosta maszynka, powiedzmy że do grawerowania 2D. Generalnie chodzi o wyżłobienie obrysów kształtu, który mam w bitmapie. Bitmapa jest monochromatyczna, grawerowane miałyby być krawędzie czarnych kształtów.

Mechaniką się nie chcę tutaj zajmować, bo jakoś ją wyskrobię. Sterowanie chciałem zrobić jak najprościej, czyli informacje o krokach X/Y przekazywane do Arduino, skąd byłyby sterowane silniki, ewentualnie proste informacje w stylu "prosta od (X,Y) do (X', Y')". W każdym razie jako że to początki, nie chcę GCODE, nie chcę robić interpretera, chcę zacząć od czegoś łatwiejszego. Poza tym nie chciałbym strzelać z armaty do komara. Nie chcę też korzystać z gotowych programów/rozwiązań, "bo nie" :)

Łatwym etapem było wykrycie krawędzi bitmapy (program masochistycznie piszę w C#). Teraz mam taki problem - jak najłatwiej zwektoryzować daną bitmapę? Chodzi mi o to, że jeżeli ustalę tolerancję na X pikseli, chciałbym móc wykryć, że w tej tolerancji można wyrysować po krawędzi kształtu prostą A do punktu B.

Podejściem "hardkorowym" byłoby sterowanie po pikselu, ale zakładając, że maszyna miałaby minimalnie większą dokładność, niż bitmapa, w praktyce "proste" na grawerze wykazywałyby "pikselozę" (patrz zdjęcie w wiki). Macie jakieś pomysły, jak zacząć?

(mam nadzieję, że opisałem problem z sensem - wypiłem dopiero jedną kawę, więc jeśli coś jest niejasne, nie bijcie :))

: 09 cze 2012, 07:03
autor: Piotr Rakowski
Jednym z ciekawszych algorytmów jest Potrace. Teoria wyjaśniona jest tu: http://potrace.sourceforge.net/potrace.pdf

A na potrace.sourceforge.net masz źródła i support.

Miłej zabawy ;-)