1. Home
  2. Tutorial
  3. Śledzenie mapy bitowej w Ruby.

Śledzenie mapy bitowej w Ruby.

Intencja

Śledzenie mapy bitowej ma na celu konwersję danych bitmapowych na dane wektorowe poprzez wykrywanie krawędzi. Detekcja ta odbywa się poprzez porównanie wartości szarości. Aby wykryć krawędzie, wartości kolorów muszą się wystarczająco różnić, w przeciwnym razie śledzenie nie powiedzie się.

Śledzenie obrazu bitmapowego

Rozpoczęcie śledzenia odbywa się poprzez zaznaczenie obrazu i kliknięcie ikony śledzenia.


Spowoduje to otwarcie następującego widżetu.

Ustaw parametry i kliknij „Trace”, aby rozpocząć proces śledzenia.
W zależności od obrazu źródłowego i wybranych wartości otrzymasz wynik śledzenia.

Uwaga: Jeśli w wyniku ustawień otrzymamy pusty ślad, pojawi się komunikat o błędzie i nie zostaną utworzone żadne wektory!

Parametry

Tylko zewnętrzny kontur

Ogranicz wykrywanie krawędzi tylko do najbardziej zewnętrznego konturu. Dzięki temu algorytm śledzenia nie będzie szukał dodatkowych konturów wewnątrz wykrytego. Funkcja ta jest używana, gdy planowane jest cięcie po zewnętrznym konturze.

Śledzenie z włączonym tylko zewnętrznym konturem (poniżej) vs. wyłączony (powyżej)

Zignorowana wielkość klastra

Ten parametr służy do minimalizacji szumów. Podniesienie tej wartości powoduje, że Rubyignoruje większe skupiska pikseli o podobnym kolorze.


Śledzenie przy wielkości klastra 1 (powyżej), 10 (w środku) i 30 (poniżej).
Zwiększenie wartości powoduje odfiltrowanie większych białych kropek, aż do wykrycia tylko konturu (czarnego prostokąta).

Próg czarno-biały

Ten parametr ma największy wpływ na śledzenie, ponieważ określa poziom kontrastu, który zostanie użyty do wykrywania krawędzi.
Liczba reprezentuje wartość szarości (Indeks 0-255), która zostanie użyta jako próg dla dodania piksela do wektora lub nie. Oznacza to, że każda wartość poniżej będzie traktowana jako czarna, każda wartość powyżej jako biała. Powstałe w ten sposób czarne i białe obszary definiują krawędzie, które zostaną wykryte (odbywa się to w tle niewidocznym dla użytkownika).


Wyniki w zależności od wybranego progu. Na początku wykrywane są tylko prawdziwe ciemne obszary, na końcu wykluczane jest tylko białe tło.

Wygładzić poziom

Ponieważ obrazy składają się z pikseli, które tworzą „schody”, gdy są wystarczająco powiększone.

Śledzenie obrazu wygenerowałoby wtedy wektor, który podąża za tymi „schodami”. W większości przypadków jest to niezamierzone.
Za pomocą opcji „Smooth level” można określić, jak dokładnie algorytm ma podążać za konturem. Wyższe wygładzenie spowoduje, że wektory będą mniej obłe. Z drugiej strony, zbytnie wygładzanie może spowodować utratę szczegółów.


Śledzenie „o” bez wygładzania (po lewej) vs. z wysokim wygładzaniem (po prawej) wyraźnie pokazuje wpływ na okręgi.


Zbyt duże wygładzenie spowoduje utratę szczegółów.

Jak wydobyć z niego to, co najlepsze

Wysokiej jakości obrazy źródłowe

Mapy bitowe w Rubybędą zawsze konwertowane na obrazy w skali szarości. Używaj bitmap o wysokiej jakości, ponieważ dają one najlepsze rezultaty. Obrazy, które mają wspólne kolory pomiędzy częścią do śledzenia i tłem są również trudne do śledzenia. Nie można uzyskać wyraźnej krawędzi.

  • Dobra – wysoka jakość, dobra rozdzielczość, wysoki kontrast, niewiele antyaliasingu na krawędziach, brak mieszanych kolorów
  • Źle – niska rozdzielczość, słaby kontrast, silny antyaliasing
  • Źle – kolory noża i tła są wymieszane, tworzenie krawędzi nie jest możliwe

Poprawianie obrazu przed śledzeniem

Wyeliminuj jak najwięcej szumu w obrazie, regulując kontrast i próg kolorów. Wszystko, co nie jest w bitmapie, nie może być wykryte nieprawidłowo. Istnieją pewne wskazówki, których możesz chcieć przestrzegać zarówno wewnątrz, jak i na zewnątrz Ruby:

Korekty przed importem do Ruby

Kadrowanie do potrzebnej części obrazu

Odetnij wszystkie części, które nie są potrzebne do konturu. Obracanie obrazu może również pomóc w przycięciu tylko pożądanej części.

Przed:

Po:

Usuń inną zawartość

Otwórz obraz za pomocą edytora obrazu i usuń jak najwięcej tła lub niechcianych elementów (gumka, zastępowanie kolorów itp.).

Korekty w ramach Ruby ®

Regulacja progu koloru (krzywa tonalna)

Dostosuj progi kolorów, aby poprawić jakość krawędzi. Odbywa się to poprzez zaznaczenie obrazu i kliknięcie ołówka w prawym górnym rogu.

Teraz spróbuj dopasować obraz w taki sposób, aby tło było jak najjaśniejsze, a kontur jak najczarniejszy.
Również drugi sposób jest możliwy, ale wykrywa odwrotny kontur!

Aby to łatwo zmienić, można odwrócić obraz. Może to wyglądać niezbyt znajomo, ale nie zmienia konturu dla algorytmu śledzenia i pozwala namierzyć właściwy.

Zasadniczo działa to w ten sposób:

  • Oś X określa kolor wejściowy (= które wartości szarości z oryginału mają być zmienione)
    • Przesunięcie punktu w lewo powoduje włączenie większej ilości kolorów w kierunku czerni
  • Oś Y określa kolor wyjściowy (= na jaki kolor ma być zmieniony kolor wejściowy)
    • Przesunięcie punktu do góry powoduje powstanie jaśniejszego koloru (w kierunku bieli)
  • Chwyć linię w dowolnym punkcie i przesuń ją zgodnie z potrzebą
    • Wszystkie kolory pomiędzy punktami zostaną odpowiednio zmienione

Bardziej szczegółowe wyjaśnienia można znaleźć w sieci wyszukując „tone curve input output”.

Poniższe przykłady ilustrują różnice:


Białe tło, czarny kontur jest łatwy do śledzenia i daje pożądany kontur.


Czarne tło, biały kontur jest trudniejszy do śledzenia i daje odwrotny kontur.

Podsumowanie

  • Używaj obrazów o dobrej jakości.
  • Mapy bitowe o złej jakości (np. niska rozdzielczość, wiele artefaktów, niski kontrast, wspólne kolory konturu i tła itp.) zwykle nie mogą tworzyć dobrych śladów.
  • Przygotuj obraz źródłowy jak najbardziej idealnie do śledzenia.
    Usuń szumy, niepotrzebne elementy, dostosuj progi kontrastu i koloru – to, czego nie ma, nie może być fałszywie wykryte.
  • Wiedzieć, co powinno się osiągnąć.
    Podrasuj odpowiednie parametry we właściwy sposób. Po prostu robienie prób i błędów zajmie dużo czasu i często będzie frustrujące.
  • Śledzenie mapy bitowej nie może robić magii
    Jeśli kontur nie jest wyraźnie określony (bo ma np. cienie, jasne części zlewające się z tłem itp.) to po prostu nie da się go prześledzić!
Updated on 9. września 2022

Related Articles