Konwertuj rysunek linii z rastra na wektor ** LINIE **

16

Oto już takie pytania, takie jak:

... i inni.

Mam czarno-biały obraz png, zawiera rysunek podobny do labiryntu, np. Zawiera tylko linie , bez obszarów.

Musisz przekonwertować go na (dowolny) format wektorowy, ale jako LINIE . Każdy program, który próbowałem, np. VectorMagic, potrace itp. Przekształca linie w zamknięte obszary ścieżki.

Mała część oryginalnego obrazu PNG - powiększony: wprowadź opis zdjęcia tutaj

Wynik śledzenia: wprowadź opis zdjęcia tutaj

Jak widać, „linia” jest obrysowana z obu stron, jak każdy inny kształt podobny do obszaru.

Szukasz sposobu, jak prześledzić linie w rzeczywiste linie (PATHS) , najlepiej o pasującej szerokości linii. (ale wystarczyłaby dowolna linia z).

Powód: potrzeba pracy ze śledzonymi liniami i węzłami, np. Konwersja niektórych węzłów na bezier i tym podobne. Niemożliwe (łatwo) w przypadku kształtów.

Dowolny pomysł:

  • jak uzyskać wektoryzowane linie z dowolnego programu do śledzenia.
  • które narzędzie może to zrobić? (dowolny system operacyjny - może korzystać z systemu Windows, OS X, Linux ..)
jm666
źródło

Odpowiedzi:

15

Śledzenie linii środkowej

Istnieje bezpłatne narzędzie Open Source AutoTrace, które jest w stanie wykonać śledzenie linii środkowej bitmapy graficznej.

wprowadź opis zdjęcia tutaj

Uruchom AutoTrace z co najmniej następującymi opcjami:

autotrace -centerline -color-count 2 -output-file output.svg -output-format SVG input.png 

wprowadź opis zdjęcia tutaj

Następnie możemy precyzyjnie dostroić pociągnięcia i dodać żądaną siłę uderzenia.

Możemy również zainstalować graficzną nakładkę Frontline dla AutoTrace w przypadku, gdy nie znamy wiersza poleceń.

Użytkownicy Linuksa mogą być w stanie zainstalować autotrace z domyślnych repozytoriów w większości dystrybucji. W systemie Windows istnieją wstępnie skompilowane pakiety do pobrania ze strony projektu.

Istnieje wiele dodatkowych parametrów dla AutoTrace, które można znaleźć na stronie podręcznika aplikacji lub wywołując go autotrace -help.

Aby raczej uzyskać linie proste niż splajny, możemy np. Użyć następujących parametrów:

  • -line-threshold [real]:
    Jeśli splajn nie odchyla się od linii prostej zdefiniowanej przez punkty końcowe o więcej niż określoną liczbę pikseli, traktuj go jak linię prostą (domyślnie: 1).

  • - line-reversion-threshold [real]:
    Jeśli splajn jest bliżej linii prostej niż ta, ważona kwadratem długości krzywej, zachowaj ją jako linię prostą, nawet jeśli jest to lista z krzywymi; domyślnie jest to .01.

Takkat
źródło
1
+1 Czy wiesz, czy istnieje możliwość śledzenia tylko prostych odcinków za pomocą funkcji automatycznego śledzenia.
joojaa
@joojaa: zobacz edycję opcji.
Takkat
Chciałbym mieć autotrace do zbudowania ... Chciałbym tego użyć
slashdottir
1
@slashdottir: jakiego systemu używasz? Witryna projektu została przeniesiona do Github w celu niedawnego opracowania i zgłaszania błędów. Zredagowałem odpowiedź, aby dołączyć link.
Takkat
Och, wspaniale! Używam OSX. Dziękuję bardzo za link!
slashdottir
10

Szczerze mówiąc ... chwyć narzędzie pióra i ręcznie prześledź ścieżki. Zapewni to najlepszą wydajność.

Automatyczne śledzenie często nie jest najlepszą opcją. Jeśli potrzebujesz tylko ścieżek, które możesz obrysować, automatyczne śledzenie zwykle kończy się niepowodzeniem.

Scott
źródło
obraz jest naprawdę KOMPLEKSOWY z wieloma wieloma liniami. Mają też więcej zdjęć - po prostu za dużo pracy - szukam alternatywy ...;)
jm666
mam też nadzieję, że „narzędzie” dokona jakiejś optymalizacji, np. stworzy zawsze najdłuższe możliwe ścieżki i tak dalej ... praca ręczna nie zawsze najlepsza;)
jm666
Powodzenia! Naprawdę uważam, że to, o co prosisz, wymaga jedynie umiejętności manualnych i cierpliwości. Nigdy nie widziałem zautomatyzowanego rozwiązania, które było opłacalne przy tworzeniu pojedynczych ścieżek. Myślę, że szczerze szukasz niemożliwego.
Scott
2
@ scott, podczas gdy ja ogólnie zgadzam się z twoim sentymentem w tym konkretnym przypadku, może to po prostu zadziałać.
joojaa
5

Spróbuj użyć interpolowanych ścieżek po zakończeniu śledzenia, jak pokazano tutaj:

Średni skok od wypełnienia

Sean
źródło
ŁAŁ. To wygląda BARDZO obiecująco. Dziękuję Ci! +1.
jm666
@ jm666 ofcourse rhis rodzaj metody nie zautomatyzuje się bardzo dobrze, chyba że masz do czynienia z ciągłymi ścieżkami.
joojaa
5

Ilustrator może zrobić środkową linię śledzenia podobnie jak autotrace . Nie jest bardzo przydatny do większości rzeczy, ale w tym przypadku obraz jest wysoce syntetyczny i może działać.

Twój obraz źródłowy jest notorycznie zły, więc nie ma prawdziwego sposobu na wypróbowanie tego bez utraty jakości, twoje oryginały powinny być lepsze (nie trzeba tak powiększać)

Zrób to:

  1. W ustawieniach śledzenia wyłącz wypełnienia i pociągnięcia.

  2. Obiekt → Rozwiń

wprowadź opis zdjęcia tutaj

Zdjęcie 1 : Obiekt po śledzeniu i rozwinięciu.

  1. Aby dodatkowo poprawić wyniki błędów śledzenia, wykonaj: Obiekt → Ścieżka → Uprość , sprawdź proste krawędzie.

wprowadź opis zdjęcia tutaj

Zdjęcie 2 : Po uproszczeniu

  1. Wydaje mi się, że twój obraz jest nieco ograniczony w kierunkach linii i lokalizacjach w narożnikach, jeśli to prawda, możesz teraz spróbować oszacować punkty, aby uzyskać jeszcze lepsze (jeśli nie idealne) wyniki.

wprowadź opis zdjęcia tutaj

Zdjęcie 3 : Co kwantyzacja może zrobić z wynikiem.

PS: biorąc pod uwagę, że źródło, które udostępniłeś, jest niekompletne, powiedziałbym, że mój wynik jest całkiem dobry. Chociaż zgadzam się, że generalnie nie można polegać na śledzeniu linii, w tym przypadku działałoby.

PPS: Twoje rogi nachodzą na siebie, co powoduje smutek w automatycznych śledzeniach. Możesz je wykryć i naprawić za pomocą kilku operatorów morfologii, powiedzmy ImageMagick, które powinny sprawić, że znaczniki będą WIELE szczęśliwsze.

joojaa
źródło
Również miły. Teraz używa automatycznego śledzenia, ze względu na proste użycie wiersza poleceń - dla wielu obrazów. Powyższy obraz bitmapowy jest małą częścią większego obrazu (powiększenie 1300%) :) - dlatego wygląda na pogorszony. +1, dziękuję.
jm666
@ jm666 na pewno możesz również użyć programu illustrator z cmd, jeśli chcesz, ale trochę pracy na początek.
joojaa
Próbowałem ze śladem obrazu programu Illustrator i próbką używać tylko obrysów. Nie udało mi się uzyskać żadnych użytecznych wyników. Trzeba przyznać, że nie zainwestowałem w to dużo czasu, a próbka nie jest idealna do śledzenia. Ale ogólnie ustalam, że śledzenie AI ma tylko pociągnięcia, oznacza to, że otrzymujesz tylko 30-60% faktycznej grafiki, chyba że oryginał jest dość solidny i ostry przed śledzeniem.
Scott
@ Scott zmniejszyłem obraz z powrotem do oryginalnego (ish) rozmiaru i dostosowałem parametr szerokości linii, aby po prostu działał. Podczas śledzenia pociągnięć o różnej szerokości może być konieczne wykonanie tego w 2 lub 3 osobnych przejściach.
joojaa
2

Znalazłem dobre darmowe narzędzie o nazwie WinTopo , które dla mnie wykonało zadanie, tj. Śledzenie linii środkowej.

Metoda nazywa się „wektoryzacją za jednym dotknięciem” i działa dobrze.

Ponieważ pochodzę z kontekstu GIS - w wersji pro istnieje możliwość Georeferencji najpierw danych rastrowych - może być przydatna, jeszcze nie przetestowana.

ORiAX
źródło