Przenoszenie średniej obróbki obrazu
Naukowiec i inżynier Przewodnik po cyfrowym przetwarzaniu sygnału Autor: Steven W. Smith, Ph. D. Rozdział 1: Szerokość i głębokość obrazów DSP Obrazy są sygnałami o szczególnych właściwościach. Po pierwsze, są miarą parametru w przestrzeni (odległość), podczas gdy większość sygnałów jest miarą parametru w czasie. Po drugie, zawierają wiele informacji. Na przykład, więcej niż 10 megabajtów może być wymagane do przechowywania jednej sekundy telewizyjnego wideo. Jest to ponad tysiąc razy więcej niż dla sygnału głosowego o podobnej długości. Po trzecie, ostatecznym sędzią jakości jest często subiektywna ocena człowieka, a nie obiektywne kryteria. Te specjalne cechy sprawiły, że przetwarzanie obrazu stanowi odrębną podgrupę w ramach DSP. Medycyna W 1895 r. Wilhelm Conrad Rntgen odkrył, że promieniowanie rentgenowskie może przechodzić przez znaczne ilości materii. Medycyna została zrewolucjonizowana dzięki umiejętności zaglądania do żywego ludzkiego ciała. Medyczne systemy rentgenowskie rozprzestrzeniły się na całym świecie w ciągu zaledwie kilku lat. Pomimo oczywistego sukcesu, medyczne obrazowanie rentgenowskie było ograniczone przez cztery problemy do czasu pojawienia się DSP i powiązanych technik w latach siedemdziesiątych. Po pierwsze, zachodzące na siebie struktury w ciele mogą się chować za sobą. Na przykład części serca mogą nie być widoczne za żebrami. Po drugie, nie zawsze jest możliwe odróżnienie podobnych tkanek. Na przykład może być w stanie oddzielić kości od tkanki miękkiej, ale nie odróżnić guza od wątroby. Po trzecie, zdjęcia rentgenowskie pokazują anatomię. struktura ciała, a nie fizjologia. operacja bodys. Obraz rentgenowski żywej osoby wygląda dokładnie tak, jak zdjęcie rentgenowskie martwego. Ekspozycja na promieniowanie rentgenowskie może powodować raka, wymagając, aby była używana oszczędnie i tylko z odpowiednim uzasadnieniem. Problem nakładających się struktur został rozwiązany w 1971 roku wraz z wprowadzeniem pierwszego skanera do tomografii komputerowej (wcześniej nazywanego komputerową tomografią osiową lub skanerem CAT). Tomografia komputerowa (CT) to klasyczny przykład cyfrowego przetwarzania sygnału. Promienie rentgenowskie z wielu kierunków przechodzą przez przekrój badanego ciała pacjenta. Zamiast po prostu tworzyć obrazy z wykrytymi promieniami X, sygnały są konwertowane na dane cyfrowe i przechowywane w komputerze. Informacje są następnie wykorzystywane do obliczania obrazów, które wydają się być przekrojone przez ciało. Obrazy te przedstawiają znacznie więcej szczegółów niż konwencjonalne techniki, pozwalając na znacznie lepszą diagnostykę i leczenie. Wpływ CT był prawie tak duży jak pierwotne wprowadzenie samego obrazowania rentgenowskiego. W ciągu zaledwie kilku lat każdy większy szpital na świecie miał dostęp do skanera CT. W 1979 roku dwaj główni współtwórcy CT, Godfrey N. Hounsfield i Allan M. Cormack, podzielili się Nagrodą Nobla w dziedzinie medycyny. To dobry DSP Ostatnie trzy problemy z promieniowaniem rentgenowskim zostały rozwiązane przez zastosowanie energii przenikliwej innej niż promieniowanie rentgenowskie, takiej jak fale radiowe i dźwiękowe. DSP odgrywa kluczową rolę we wszystkich tych technikach. Na przykład obrazowanie metodą rezonansu magnetycznego (MRI) wykorzystuje pola magnetyczne w połączeniu z falami radiowymi do badania wnętrza ludzkiego ciała. Właściwa regulacja siły i częstotliwości pól powoduje, że jądra atomowe w zlokalizowanym regionie ciała rezonują między stanami energii kwantowej. Rezonans ten powoduje emisję wtórnej fali radiowej, wykrytą za pomocą anteny umieszczonej w pobliżu ciała. Siła i inne cechy tego wykrytego sygnału dostarczają informacji o zlokalizowanym regionie w rezonansie. Regulacja pola magnetycznego pozwala skanować obszar rezonansu w całym ciele, mapując strukturę wewnętrzną. Informacje te są zwykle przedstawiane jako obrazy, tak jak w tomografii komputerowej. Oprócz zapewnienia doskonałej różnicy między różnymi typami tkanek miękkich, MRI może dostarczyć informacji na temat fizjologii, takich jak przepływ krwi przez tętnice. MRI opiera się całkowicie na technikach cyfrowego przetwarzania sygnału i nie można go wdrożyć bez nich. Przestrzeń Czasami trzeba po prostu jak najlepiej wykorzystać zły obraz. Dzieje się tak często w przypadku zdjęć pochodzących z bezzałogowych satelitów i pojazdów kosmicznych. Nikt nie wyśle mechanika na Marsa tylko po to, aby dostroić pokrętła w kamerze DSP może poprawić jakość zdjęć wykonanych w wyjątkowo niesprzyjających warunkach na kilka sposobów: regulacja jasności i kontrastu, wykrywanie krawędzi, redukcja szumów, regulacja ostrości, rozmycie ruchu redukcja itp. Obrazy, które mają przestrzenne zniekształcenia, takie jak napotkane podczas robienia płaskiego obrazu planety sferycznej, mogą również zostać wypaczone w poprawną reprezentację. Wiele pojedynczych obrazów można również połączyć w jedną bazę danych, umożliwiając wyświetlanie informacji w unikalny sposób. Na przykład sekwencja wideo symulująca lot z lotu ptaka nad powierzchnią odległej planety. Produkty do obrazowania komercyjnego Duża zawartość informacji w obrazach stanowi problem w przypadku systemów sprzedawanych w masowej ilości do ogółu społeczeństwa. Systemy komercyjne muszą być tanie. a to nie jest dobre dla dużych pamięci i wysokich prędkości przesyłu danych. Jedną z odpowiedzi na ten dylemat jest kompresja obrazu. Podobnie jak w przypadku sygnałów głosowych, obrazy zawierają ogromną ilość nadmiarowych informacji i mogą być uruchamiane za pomocą algorytmów, które redukują liczbę bitów potrzebnych do ich reprezentacji. Telewizja i inne ruchome obrazy nadają się szczególnie do kompresji, ponieważ większość obrazów pozostaje taka sama w układzie od klatki do klatki. Komercyjne produkty do przetwarzania obrazu wykorzystujące tę technologię to: telefony wideo, programy komputerowe wyświetlające ruchome obrazy i telewizja cyfrowa. Ten samouczek omawia sposób użycia MATLAB do przetwarzania obrazu. Przyjmuje się pewną znajomość MATLAB (powinieneś wiedzieć, jak używać macierzy i pisać plik M). Pomocne jest posiadanie narzędzia MATLAB Image Processing Toolbox, ale na szczęście do większości operacji nie są potrzebne skrzynki narzędziowe. Polecenia wymagające narzędzia Image Toolbox są oznaczone przybornikiem obrazu. Reprezentacja obrazu W programie MATLAB dostępnych jest pięć typów obrazów. Skala szarości. Obraz w skali szarości M pikseli wysokości i N pikseli szerokości jest reprezentowany jako macierz podwójnego typu danych o rozmiarze MN. Wartości elementów (np. MyImage (m, n)) oznaczają piksele w skali szarości w 0,1 przy 0 kolorach i 1 kolorze białym. Truecolor RGB. Prawdziwy obraz czerwono-zielono-niebieski (RGB) jest reprezentowany jako trójwymiarowa podwójna macierz M N3. Każdy piksel ma czerwone, zielone i niebieskie elementy wzdłuż trzeciego wymiaru z wartościami w skali 0,1, na przykład komponenty kolorów piksela (m, n) to Moje obrazki (m, n, 1) czerwone, Moje obrazki (m, n, 2) zielony, MyImage (m, n, 3) niebieski. Indeksowane. Indeksowane (z paletą) obrazy są reprezentowane przez macierz indeksu wielkości M N i matrycę kolorów o wielkości K 3. Barwista przechowuje wszystkie kolory używane w obrazie, a matryca indeksu reprezentuje piksele, odnosząc się do kolorów w mapie kolorów. Na przykład, jeśli 22-ty kolor to magenta MyColormap (22, :) 1,0,1. następnie MyImage (m, n) 22 jest pikselem w kolorze magenta. Binarny. Obraz binarny jest reprezentowany przez macierz logiczną M N, gdzie wartości pikseli wynoszą 1 (prawda) lub 0 (fałsz).uint8. Ten typ wykorzystuje mniej pamięci, a niektóre operacje są obliczane szybciej niż w przypadku podwójnych typów. Dla uproszczenia ten samouczek nie omawia dalej uint8. Skala szarości jest zazwyczaj preferowanym formatem przetwarzania obrazu. W przypadkach wymagających koloru, kolorowy obraz RGB może zostać rozłożony i potraktowany jako trzy osobne obrazy w skali szarości. Zindeksowane obrazy muszą zostać przekonwertowane na skalę szarości lub RGB dla większości operacji. Poniżej przedstawiono niektóre typowe manipulacje i konwersje. Kilka poleceń wymaga narzędzia Image Toolbox i jest oznaczone przybornikiem Image Toolbox. Czytanie i zapisywanie plików graficznych MATLAB może odczytywać i zapisywać obrazy za pomocą poleceń imread i imwrite. Mimo że obsługiwana jest duża liczba formatów plików, niektóre nie. Użyj imformatów, aby zobaczyć, co obsługuje twoja instalacja: Podczas odczytu obrazów niefortunnym problemem jest to, że imread zwraca dane obrazu w typie uint8, które muszą zostać przekonwertowane na podwójne i przeskalowane przed użyciem. Dlatego zamiast bezpośrednio wywoływać funkcję imread, używam następującej funkcji M-pliku do odczytu i konwersji obrazów: Kliknij prawym przyciskiem myszy i zapisz getimage. m, aby użyć tej funkcji M. Jeśli obraz baboon. png znajduje się w bieżącym katalogu (lub gdzieś w ścieżce wyszukiwania MATLAB), możesz go odczytać za pomocą funkcji MyImage getimage (baboon. png). Możesz także użyć ścieżek częściowych, na przykład jeśli obraz jest w bieżącym katalogu gtimages z getimage (imagesbaboon. png). Aby napisać obraz w skali szarości lub RGB, używaj Uważaj, że MyImage jest podwójną macierzą z elementami o nieprawidłowym skalowaniu 0.1if, zapisany plik prawdopodobnie pozostanie pusty. Podczas pisania plików graficznych bardzo polecam używanie formatu pliku PNG. Ten format jest niezawodny, ponieważ jest bezstratny, obsługuje truecolor RGB i kompresuje całkiem nieźle. Korzystaj z innych formatów z rozwagą. Podstawowe operacje Poniżej przedstawiono podstawowe operacje na obrazie w skali szarości u. Polecenia wymagające narzędzia Image Toolbox są oznaczone przybornikiem obrazu. (Uwaga: dla dowolnej tablicy składnia u (:) oznacza rozwinięcie u do wektora kolumnowego, np. Jeśli u 1,50,2, to u (:) wynosi 1052.) Na przykład moc sygnału obrazu jest używana w stosunek sygnału do szumu (SNR) i szczytowy stosunek sygnału do szumu (PSNR). Biorąc pod uwagę czysty obraz zanieczyszczony i zanieczyszczony hałasem u Należy zachować ostrożność przy normie. zachowanie jest normą (v) na wektorach v oblicza sqrt (suma (v.2)). ale norma (A) na macierzy A oblicza indukowaną normę macierzy L2, więc norma (A) na pewno nie jest sqrt (suma (A (:) .2)). Łatwo jest jednak użyć normy (A), gdzie powinna być normą (A (:)). Filtry liniowe Filtrowanie liniowe jest podstawową techniką przetwarzania sygnałów. Aby krótko przedstawić, filtr liniowy jest operacją, w której przy każdym pikselach x m, n obrazu, funkcja liniowa jest oceniana na pikselu i jej sąsiadach w celu obliczenia nowej wartości pikselowej y m, n. Filtr liniowy w dwóch wymiarach ma ogólną postać, w której x jest wejściem, y jest wyjściem, a h jest odpowiedzią impulsową filtra. Różne wybory h prowadzą do filtrów, które wygładzają, wyostrzają i wykrywają krawędzie, by wymienić tylko kilka zastosowań. Prawa strona powyższego równania jest zwięzła jako h x i nazywana jest splotem h i x. Filtrowanie w domenie przestrzennej W MATLAB z konw .2 zaimplementowano dwuwymiarowe filtrowanie liniowe. Niestety, conv2 może obsługiwać filtrowanie w pobliżu granic obrazu przez zerowe wypełnianie, co oznacza, że wyniki filtrowania są zazwyczaj nieodpowiednie dla pikseli w pobliżu granicy. Aby obejść ten problem, możemy wstawić obraz wejściowy i użyć poprawnej opcji podczas wywoływania conv2. Następująca funkcja M to robi. Kliknij prawym przyciskiem myszy i zapisz conv2padded. m, aby użyć tej funkcji M. Oto kilka przykładów: Mówi się, że filtr 2D h ma być rozdzielny, jeśli można go wyrazić jako zewnętrzny produkt dwóch filtrów 1 i 1 h1 i h2. to znaczy h h1 (:) h2 (:). Szybciej jest przechodzić h1 i h2 niż h. jak to jest zrobione powyżej dla okna średniej ruchomej i filtra gaussowskiego. W rzeczywistości, filtry Sobel hx i hy są również separowalne, co to jest filtrowanie w domenie hier i h2. Filtrowanie w domenie przestrzennej z conv2 jest z łatwością kosztowną operacją. W przypadku filtra KK na obrazie MN, konw. Kosztuje dodatki i multiplikacje O (MNK 2) lub O (N 4) z założeniem M N K. W przypadku dużych filtrów filtrowanie w domenie Fouriera jest szybsze, ponieważ koszt obliczeniowy jest zredukowany do O (N 2 log N). Używając właściwości multiplikacji splotu transformaty Fouriera, splot jest obliczany równoważnie przez Wynik jest równoważny conv2padded (x, h) z wyjątkiem blisko granicy, gdzie powyższe obliczenia wykorzystują okresowe rozszerzenie granicy. Filtrowanie oparte na fourierach może być również wykonane z symetrycznym rozszerzeniem granicznym, odzwierciedlając dane wejściowe w każdym kierunku: (Uwaga: jeszcze bardziej wydajną metodą jest filtrowanie nakładające się na FFT. Monitorowanie przetwarzania sygnału implementuje nakładanie FFT w jednym wymiarze w widoku zfft .) Filtry nieliniowe Filtr nieliniowy to operacja, w której każdy filtrowany piksel ym, n jest nieliniową funkcją xm, n i jej sąsiadów. Poniżej krótko omówimy kilka rodzajów nieliniowych filtrów. Zamawianie filtrów statystycznych Jeśli posiadasz Przybornik Obrazu, możesz uporządkować filtry statystyczne za pomocą ordfilt2 i medfilt2. Filtr statystyk zamówień sortuje wartości pikseli w sąsiedztwie i wybiera k-tą największą wartość. Filtry min, max i mediany są przypadkami specjalnymi. Filtry morfologiczne Jeśli masz Przybornik Obrazu, bwmorph realizuje różne operacje morfologiczne na obrazach binarnych, takich jak erozja, poszerzenie, otwieranie, zamykanie i szkielet. Dostępne są również polecenia dotyczące morfologii obrazów w skali szarości: imerode. imdilate i imtophat. pośród innych. Zbuduj własny filtr Czasami chcemy użyć nowego filtra, którego MATLAB nie ma. Poniższy kod jest szablonem do implementacji filtrów. (Uwaga: częstym błędnym stwierdzeniem jest to, że pętle w MATLAB są powolne i należy ich unikać. To było kiedyś prawdziwe, z powrotem w MATLAB 5 i wcześniejszych, ale pętle we współczesnych wersjach są dość szybkie.) Na przykład, średni filtr z przycięciem alfa ignoruje d 2 najniższe i d 2 najwyższe wartości w oknie i uśrednia pozostałe (2 r 1) 2 d wartości. Filtr stanowi równowagę pomiędzy filtrem medianowym a filtrem średnim. Średni filtr alfa może być zaimplementowany w szablonie. Jak w innym przykładzie, filtr obustronny to Naukowiec i przewodnik inżyniera do cyfrowego przetwarzania sygnału Autor: Steven W. Smith, Ph. D. Rozdział 25: Specjalne techniki obrazowania Morfologiczne przetwarzanie obrazu Identyfikacja obiektów w obrazie może być bardzo trudnym zadaniem. Jednym ze sposobów uproszczenia problemu jest zmiana obrazu w skali szarości na obraz binarny. w którym każdy piksel jest ograniczony do wartości 0 lub 1. Techniki stosowane na tych obrazach binarnych mają takie nazwy, jak: analiza typu blob. analiza łączności. i morfologiczne przetwarzanie obrazu (z greckiego słowa morph, co oznacza kształt lub formę). Podstawą przetwarzania morfologicznego jest matematycznie rygorystyczna dziedzina teorii mnogości, jednak ten poziom zaawansowania jest rzadko potrzebny. Większość algorytmów morfologicznych to proste operacje logiczne i bardzo doraźne. Innymi słowy, każda aplikacja wymaga niestandardowego rozwiązania opracowanego metodą prób i błędów. Zwykle jest to bardziej sztuka niż nauka. Używana jest torba sztuczek zamiast standardowych algorytmów i formalnych właściwości matematycznych. Oto kilka przykładów. Na rysunku 25-10a pokazano przykładowy obraz binarny. Może to oznaczać wrogi czołg na zdjęciu w podczerwieni, asteroidę na fotografii kosmicznej lub podejrzenie guza na medycznym prześwietleniu. Każdy piksel w tle jest wyświetlany jako biały, a każdy piksel w obiekcie jest wyświetlany jako czarny. Często obrazy binarne są tworzone przez progowanie pikseli obrazu w skali szarości o wartości większej niż próg ustawionej na 1, natomiast piksele o wartości poniżej progu są ustawiane na 0. Często zdarza się, że obraz w skali szarości jest przetwarzany za pomocą technik liniowych przed progiem. Na przykład spłaszczenie oświetlenia (opisane w rozdziale 24) może często poprawić jakość początkowego obrazu binarnego. Ryciny (b) i (c) pokazują, w jaki sposób obraz jest zmieniany przez dwie najpopularniejsze operacje morfologiczne, erozję i dylatację. W erozji każdy piksel obiektu, który dotyka piksela tła, zmienia się w piksel tła. Podczas dylatacji każdy piksel tła, który dotyka piksela obiektu, zmienia się w piksel obiektu. Erozja powoduje, że obiekty są mniejsze i mogą rozbić pojedynczy obiekt na wiele obiektów. Dyling sprawia, że obiekty są większe i mogą łączyć wiele obiektów w jeden. Jak pokazano w (d), otwarcie definiuje się jako erozję, po której następuje rozszerzenie. Rysunek (e) pokazuje przeciwną operację zamykania. zdefiniowane jako rozszerzenie, po którym następuje erozja. Jak pokazano w tych przykładach, otwieranie usuwa małe wysepki i cienkie włókna pikseli obiektów. Podobnie zamykanie usuwa wyspy i cienkie włókna pikseli tła. Techniki te są przydatne do obsługi głośnych obrazów, w których niektóre piksele mają niewłaściwą wartość binarną. Na przykład może się zdarzyć, że obiekt nie może zawierać dziury lub że obramowanie obiektów musi być gładkie. Rysunek 25-11 pokazuje przykład przetwarzania morfologicznego. Rysunek (a) jest binarnym obrazem odcisków palców. Opracowano algorytmy analizujące te wzorce, dzięki czemu poszczególne odciski palców można dopasować do tych w bazie danych. Typowy krok w tych algorytmach przedstawiono w (b), operacji zwanej szkieletyzacją. Upraszcza to obraz, usuwając nadmiarowe piksele, zmieniając odpowiednie piksele z czarnego na biały. W wyniku tego każdy z grzbietów zostaje przekształcony w linię o szerokości tylko jednego piksela. Tabele 25-1 i 25-2 przedstawiają program szkieletyzacji. Mimo że obraz odcisków palców jest binarny, jest przechowywany w tablicy, w której każdy piksel może działać w zakresie od 0 do 255. Czarny piksel jest oznaczony jako 0, a biały piksel jest oznaczony jako 255. Jak pokazano w Tabeli 25-1, Algorytm składa się z 6 iteracji, które stopniowo erodują grzbiety w cienką linię. Liczba iteracji jest wybierana metodą prób i błędów. Alternatywą byłoby zatrzymanie się, gdy iteracja nie wprowadza żadnych zmian. Podczas iteracji każdy piksel na obrazie jest oceniany jako możliwy do usunięcia, piksel spełnia zestaw kryteriów do zmiany z czarnego na biały. Linie 200-240 przechodzą przez każdy piksel obrazu, podczas gdy podprogram w Tabeli 25-2 dokonuje oceny. Jeśli rozważany piksel nie jest wymienny, podprogram nie robi nic. Jeśli piksel jest usuwalny, podprogram zmienia jego wartość z 0 na 1. Oznacza to, że piksel jest nadal czarny, ale zostanie zmieniony na biały po zakończeniu iteracji. Po oszacowaniu wszystkich pikseli linie 260-300 zmieniają wartość zaznaczonych pikseli z 1 na 255. Ten dwuetapowy proces powoduje, że grube grzbiety są erodowane równo ze wszystkich kierunków, a nie wzór oparty na tym, w jaki sposób rzędy i kolumny są skanowane. Decyzja o usunięciu piksela opiera się na czterech zasadach, zawartych w podprogramie przedstawionym w tabeli 25-2. Wszystkie te reguły muszą być spełnione, aby piksel został zmieniony z czarnego na biały. Pierwsze trzy zasady są raczej proste, a czwarte jest dość skomplikowane. Jak pokazano na fig. 25-12a, piksel w lokalizacji R, C ma ośmiu sąsiadów. Czterech sąsiadów w kierunku poziomym i pionowym (oznaczonych 2,4,6,8) jest często nazywanych bliskimi sąsiadami. Piksele o przekątnej (oznaczone jako 1,3,5,7) są odpowiednio nazywane odległymi sąsiadami. Cztery zasady są następujące: Zasada pierwsza: Rozpatrywany piksel musi być obecnie czarny. Jeśli piksel jest już biały, nie trzeba podejmować żadnych działań. Zasada druga: co najmniej jeden z pikseli znajdujących się blisko sąsiadów musi być biały. Zapewnia to, że erozja grubych krawędzi odbywa się z zewnątrz. Innymi słowy, jeśli piksel jest czarny i jest całkowicie otoczony czarnymi pikselami, to należy go pozostawić w tej iteracji. Dlaczego warto korzystać tylko z bliskich sąsiadów. zamiast wszystkich sąsiadów Odpowiedź jest prosta: uruchomienie algorytmu w obie strony pokazuje, że działa lepiej. Pamiętaj, że jest to bardzo powszechne w procesie przetwarzania obrazu morfologicznego, a błąd służy do stwierdzenia, czy jedna technika działa lepiej niż inna. Zasada trzecia: piksel musi mieć więcej niż jednego czarnego sąsiada. Jeśli ma tylko jeden, musi to być koniec linii, dlatego nie należy go usuwać. Zasada czwarta: piksela nie można usunąć, jeśli spowoduje to rozłączenie sąsiadów. Jest tak dlatego, że każdy grzbiet jest zamieniany na ciągłą linię, a nie na grupę przerwanych segmentów. Jak pokazano w przykładach na rys. 25-12, połączone oznacza, że wszyscy czarni sąsiedzi dotykają się wzajemnie. Podobnie, niepołączone oznacza, że czarni sąsiedzi tworzą dwie lub więcej grup. Algorytm określania, czy sąsiedzi są połączeni lub niepołączeni, opiera się na zliczaniu przejść czarno-białych pomiędzy sąsiadującymi pikselami w kierunku zgodnym z ruchem wskazówek zegara. Na przykład, jeśli piksel 1 jest czarny, a piksel 2 jest biały, uznaje się to za przejście od czerni do bieli. Podobnie, jeśli piksel 2 jest czarny, a oba piksele 3 i 4 są białe, jest to również przejście od czerni do bieli. Łącznie istnieje osiem lokalizacji, w których może wystąpić przejście w kolorze czarnym do białego. Aby lepiej zilustrować tę definicję, przykłady w punktach (b) i (c) mają gwiazdkę umieszczoną przy każdym przejściu czarno-białym. Kluczem do tego algorytmu jest to, że będzie dokładnie jedna przejście od czerni do bieli, jeśli sąsiedzi są połączeni. Więcej niż jedno takie przejście wskazuje, że sąsiedzi nie są połączeni. Jako dodatkowe przykłady przetwarzania obrazu binarnego należy wziąć pod uwagę typy algorytmów, które mogą być przydatne po skróceniu odcisku palca. Wadą tego szczególnego algorytmu szkieletyzacji jest to, że pozostawia znaczną ilość łupieżu. krótkie odgałęzienia wystające z boków dłuższych segmentów. Istnieje kilka różnych podejść do eliminacji tych artefaktów. Na przykład program może przechodzić przez obraz, usuwając piksel na końcu każdej linii. Piksele te są identyfikowane przez posiadanie tylko jednego czarnego sąsiada. Wykonaj to kilka razy, a fuzz zostanie usunięty kosztem skracania każdej z poprawnych linii. Lepsza metoda przełączy się przez obraz identyfikujący rozgałęzione piksele (piksele, które mają więcej niż dwóch sąsiadów). Zaczynając od każdego piksela gałęzi, policz liczbę pikseli w każdym odgałęzieniu. Jeśli liczba pikseli w odgałęzieniu jest mniejsza niż pewna wartość (powiedzmy 5), zadeklaruj, że jest to fuzz, i zmień piksele w gałęzi z czarnego na biały. Inny algorytm może zmienić dane z bitmapy na format mapowany wektorowo. Obejmuje to tworzenie listy grzbietów zawartych w obrazie i pikseli zawartych w każdym grzbiecie. W postaci zmapowanej wektorowo, każdy grzbiet odcisku palca ma indywidualną tożsamość, w przeciwieństwie do obrazu złożonego z wielu niespokrewnionych pikseli. Można to osiągnąć poprzez zapętlenie obrazu w poszukiwaniu punktów końcowych każdej linii, pikseli, które mają tylko jednego czarnego sąsiada. Począwszy od punktu końcowego, każda linia jest śledzona od piksela do łączącego piksela. Po osiągnięciu przeciwnego końca linii wszystkie śledzone piksele są zadeklarowane jako pojedynczy obiekt. i odpowiednio traktowane w przyszłych algorytmach.
Comments
Post a Comment