Co to jest kod łańcuchowy?
W grafice komputerowej i przetwarzaniu obrazu kod łańcuchowy jest algorytmem używanym do kodowania konturów obiektu w obrazie czarno -białym lub monochromatycznym. Powstała sekwencja kodów może albo opisać, jak narysować zarys obiektu w stosunku do obrazu, w którym się znajduje, lub może być zbiorem kierunków względem lokalizacji na zarysie, w którym rozpoczął się algorytm, zasadniczo zapewniając kroki, które można wykonać w celu przerysowania obiektu. Kody te można znormalizować zgodnie z formułą, a następnie porównać z innym kodem łańcucha, aby ustalić, czy dwa obiekty są identyczne. Kod łańcuchowy może być używany do izolowania obiektów w programie wizji komputerowej lub segmentacji obrazu w przetwarzaniu obrazu, chociaż częściej może być używany w programach rozpoznawania znaków optycznych (OCR).
Chociaż istnieje kilka ustalonych algorytmów kodu łańcuchowego, podstawowa koncepcja jest taka sama w każdym. Po pierwsze, krawędź obiektu znajduje się zwykle poprzez poruszanie pikseli po pixEl przez obraz rastra. Po zlokalizowaniu pozycja jest rejestrowana i wykrywane są otaczające krawędzie. W zależności od tego, czy algorytm wykrywania będzie poruszał się zgodnie z ruchem wskazówek zegara czy przeciwnie do ruchu wskazówek zegara, aktualna lokalizacja jest przesuwana w jednym czy innym kierunku wzdłuż krawędzi, aż powróci do pierwotnej pozycji.
Za każdym razem, gdy bieżą pozycja się porusza, liczba jest rejestrowana w kodzie łańcucha. Liczba ta ogólnie wskazuje kierunek poruszony wzdłuż krawędzi obiektu. Na przykład, jeśli algorytm kodu łańcuchowego podąża prostą krawędź od prawej do lewej, to za każdym razem, gdy krawędź jest prześledzona po lewej, kod numeryczny dla lewej jest dodawany do końca kodu. Powstały kod jest ciągiem liczb, w którym, jeśli sekwencja jest przestrzegana z dowolnego punktu początkowego i piksela umieszczonego na każdym etapie, zarys obiektu zostałby przerysowany.
niegdyś ciąg liczb, który makarsKod jest zakończony, można zastosować do niego kilka różnych algorytmów, aby pomóc w porównaniu z innymi sekwencjami kodu łańcuchowego. Po pierwsze, liczba jest znormalizowana przez obrócenie liczby początkowej, aż określi się najniższą wartość całkowitą. W ten sposób można porównać dwa obiekty, które mają ten sam zarys, niezależnie od tego, gdzie na każdym obiekcie rozpoczął się kodowanie.
Istnieją inne bardziej złożone wersje algorytmu kodu łańcuchowego. Obejmują one kodowanie oparte na wektorach, w którym zarys obiektu jest opisany przez sekwencję współrzędnych połączonych przez linie, chociaż metoda ta może być stratna, gdy jest stosowana na drobno szczegółowych zarysach. Istnieje również wersja algorytmu, która wykorzystuje kodowanie długości (RLE) do dalszego kompresji kodów dla wyjątkowo dużych lub złożonych obiektów, aby można je było przechowywać w bardziej wydajny sposób.