Menu
Za darmo
Rejestracja
dom  /  Nawigatorzy/ Metody i algorytmy przetwarzania obrazu. Implementacja systemu

Metody i algorytmy przetwarzania obrazu. Implementacja systemu

Reprezentacja obrazu

Istnieją dwa główne typy reprezentacji obrazu - wektorowe i rastrowe.

W reprezentacji wektorowej obraz jest opisany zbiorem linii (wektorów), które zawierają współrzędne punktu początkowego i końcowego, krzywiznę linii i inne cechy geometryczne, zasady konstruowania różnych obszarów oraz charakterystykę kolorystyczną. opisane. Innymi słowy, reprezentacja rastrowa wymaga utworzenia pewnego modelu matematycznego. Dlatego reprezentacja wektorowa jest wykorzystywana głównie w rozwiązywaniu problemów syntezy obrazów. Chociaż niektóre algorytmy rozpoznawania obrazu wymagają do swojej pracy reprezentacji wektorowej, którą należy uzyskać z oryginalnego obrazu.

Obraz rastrowy to jedna lub więcej macierzy opisujących przestrzenny rozkład cech obrazu na określonej kartezjańskiej siatce współrzędnych. W tym przypadku obraz jest zbudowany ze zbioru punktów i ma strukturę rastrową. Głównym elementem rastrowej reprezentacji obrazu jest piksel (skrót od wyrażenia „elementy obrazu” - elementy obrazu), który ma współrzędne w rastrowym układzie współrzędnych oraz pewne atrybuty (kolor, jasność, przezroczystość itp.). Liczba pikseli wzdłuż współrzędnych X i Y (w poziomie i w pionie) określa rozdzielczość (wymiar) reprezentacji obrazu. Kolor piksela jest określony przez jego głębię, czyli liczbę bitów wymaganych do określenia dowolnego koloru.

Obrazy rastrowe, w zależności od sposobu ustawienia koloru piksela i właściwości oryginalnego obrazu, dzielą się na:

Dwójkowy

Półtony

Paleta

pełny kolor

W reprezentacji binarnej kolor piksela może być biały lub czarny i jest zakodowany w jednym bicie. Obraz jest matrycą. Każdy element I (i , j ) tej macierzy ma wartość 0 lub 1, gdzie i jest numerem wiersza i jest numerem kolumny j elementu odpowiadającego danemu pikselowi (rys. 1).

W obrazach w skali szarości piksele reprezentują wartości jasności odpowiadające odcieniom szarości. Indeksy matrycy opisujące obraz rastrowy określają położenie piksela na rastrze oraz wartość elementu matrycy

- ustawia jego jasność I (i, j) (rys. 2).

Obrazy z palety opisują dwie macierze (ryc. 3). Przechowuje się wartości indeksów, które określają dostęp do wiersza macierzy palety. Matryca palety to mapa kolorów. Zawiera 3 grupy kolumn - odpowiadające kolorom czerwonemu „R”, zielonemu „G” i niebieskiemu „B”. Ustawiają kolor odpowiedniego piksela.

Paleta to macierz Nc 3, gdzie Nc to liczba kolorów.

Algorytmy wstępnego przetwarzania obrazu

Pełnokolorowe obrazy są zbudowane w formacie RGB i reprezentują trzy macierze R (i , j ), G (i , j ), B (i , j ). Odpowiednie elementy każdej macierzy zawierają wartości intensywności kolorów czerwonego, zielonego i niebieskiego dla piksela określone przez indeksy matrycy. Zatem obraz w pełnym kolorze nie ma mapy kolorów, a kolor każdego piksela jest reprezentowany przez trzy liczby pobrane z odpowiednich macierzy (ryc. 4).

Format liczb w macierzach może być liczbą całkowitą lub zmiennoprzecinkową. Pierwszy przypadek dotyczy tzw. obrazów zdigitalizowanych uzyskiwanych za pomocą różnych urządzeń – skanerów, aparatów cyfrowych, kamer telewizyjnych itp. W tym formacie informacje o obrazach są przechowywane w standardowych plikach graficznych.

Druga opcja służy do wewnętrznej reprezentacji obrazów podczas ich przetwarzania. W takim przypadku wygodnie jest znormalizować dane dotyczące natężenia do jednego zakresu, na przykład do zakresu , i wykonać różne obliczenia z liczbami zmiennoprzecinkowymi, a następnie przekonwertować wynik do pierwotnej postaci całkowitej. Metoda ta pozwala zredukować błędy obliczeniowe i poprawić dokładność wyniku przetwarzania.

W przypadku obrazów w pełnym kolorze jedną z opcji jest maksymalna liczba kolorów, które można przedstawić w tym formacie. Najczęściej używane obrazy mają 16, 256, 65536 (High Color) i 10,7 miliona (True Color) kolorów.

Algorytmy wstępnego przetwarzania obrazu

0 0 0 0 1 1 1 0 0

120 122 125 128 115 117 118

1 0 0 0 1 1 1 1 0

119 121 124 125 128 130 133

1 1 0 0 1 1 0 0 1

122 122 124 123 127 126 128

120 121 123 125 127 125 126

1 1 1 0 1 1 0 0 0

118 110 109 108 108 109 110

0 0 1 0 0 1 0 0 1

Algorytmy wstępnego przetwarzania obrazu

Macierz indeksów

31 15 03 09

matryca palety

Algorytmy wstępnego przetwarzania obrazu

Pełnokolorowy obraz można przedstawić nie tylko w formacie RGB, ale także przy użyciu innych systemów kolorów.

W systemie HSB kolor jest reprezentowany przez następujące cechy koloru: Odcień - odcień koloru;

Nasycenie - nasycenie; Jasność - jasność.

Uważa się, że ten system kolorów odpowiada osobliwościom ludzkiego postrzegania koloru.

W systemie LAB za kolor uważa się kombinację jasności (jasności) i dwóch niezależnych wartości chrominancji, które określają prawdziwy kolor piksela. Chromatyczność A - składowa barwy dobierana jest w zakresie od magenty do zieleni. Chromatyczność B - druga składowa barwy wybierana jest z zakresu od żółtego do niebieskiego.

Istnieją inne systemy reprezentacji kolorów. Naturalnie wszystkie są ze sobą powiązane iz jednej reprezentacji można uzyskać inną. Różnorodność systemów kolorystycznych wynika z zadań rozwiązywanych za ich pomocą. Na przykład wygodniej jest wykonać korekcję kolorów w systemie LAB, aby odtworzyć obraz na ekranie monitora w systemie RGB, lepiej wydrukować,

Algorytmy wstępnego przetwarzania obrazu

przy użyciu reprezentacji CMYK. Jednak w każdym przypadku podczas przetwarzania obrazów i ich rozpoznawania pracują z reprezentacją rastrową obrazów zawierającą jedną lub więcej macierzy.

Klasyfikacja algorytmów przetwarzania wstępnego

Algorytmy wstępnego przetwarzania obrazu dzielą się na różne grupy w zależności od cechy klasyfikującej. Wszystkie algorytmy wstępnego przetwarzania muszą albo w jakimś sensie poprawiać jakość obrazów, albo konwertować je do postaci najdogodniejszej do późniejszego przetwarzania.

Algorytmy mające na celu poprawę odwzorowania kolorów obrazu nazywane są algorytmami korekcji kolorów. Ta grupa obejmuje również algorytmy, które działają z obrazami w skali szarości, zmieniając ich charakterystykę jasności i kontrastu.

Algorytmy mające na celu przetwarzanie przestrzennej charakterystyki obrazów nazywane są algorytmami filtrowanie przestrzenne. Do tej grupy należą algorytmy tłumienia szumów, algorytmy wygładzania przestrzennego i algorytmy wzmacniania przestrzennego, algorytmy tłumienia i wzmacniania częstotliwości przestrzennych.

Nazywa się algorytmy wykonujące operacje geometryczne na obrazie algorytmy przetwarzania geometrycznego. Obejmują one:

Algorytmy wstępnego przetwarzania obrazu

Kadrowanie obrazu - zaznaczenie określonej części prostokątnego kształtu z oryginalnego obrazu;

Zmiana rozmiaru obrazu. Algorytmy te wykorzystują różne metody interpolacji, aby albo poprawnie wypełnić brakujące piksele w powiększonym obrazie, albo ponownie obliczyć wartości pikseli, gdy obraz jest zmniejszany.

Obrót obrazu. Algorytmy te obracają oryginalny obraz o zadany kąt, poprawnie przeliczając wartości pikseli przy użyciu różnych metod interpolacji.

Nazywa się algorytmy, które wykonują transformacje z jednego systemu kolorów na inny Algorytmy konwersji kolorów. Obejmują one również algorytmy konwersji obrazów kolorowych na skalę szarości oraz algorytmy binaryzacji, które przekształcają obraz oryginalny w obraz binarny.

Algorytmy, które wybierają pewne obszary oryginalnego obrazu zgodnie z różnymi, często nieformalnymi warunkami, nazywane są algorytmami segmentacji. Przykładem takiego algorytmu może być np. algorytm, który ma wyróżniać obszary informacji tekstowej i graficznej na obrazie dokumentu lub algorytm, który wybiera obszary w obrazie tekstowym, które należą do poszczególnych słów.

Algorytmy wstępnego przetwarzania obrazu

Algorytmy filtrowania przestrzennego

Filtrowanie przestrzenne obrazu w postaci matematycznej to dyskretny splot dyskretnego obrazu z pewną odpowiedzią impulsową filtra przestrzennego

Jeśli (i, j)

Im(i m , j n )h (m , n ), gdzie:

m N11 n N21

Im, Jeśli macierze obrazów oryginalnych i filtrowanych, h jest macierzą odpowiedzi impulsowej filtra,

N 11 , N 21 dolna i górna granica kolumn odpowiedzi impulsowej, N 12 , N 22 lewa i prawa granica rzędów odpowiedzi impulsowej.

Macierz odpowiedzi impulsowej można uzyskać, obliczając filtr przestrzenny z ustawić parametry. Sporą ilość literatury na temat filtrowania cyfrowego poświęcono na przykład metodom obliczania filtrów przestrzennych. Do praktycznych obliczeń można użyć standardowych pakietów matematycznych, na przykład system „MATLAB” zawiera system obliczania filtrów „Image Filter Design”.

Należy zauważyć, że filtrowanie można również przeprowadzić w dziedzinie częstotliwości. W tym

Algorytmy wstępnego przetwarzania obrazu

W takim przypadku kolejność filtrowania jest następująca:

Konwertuj obraz z domeny przestrzennej na dziedzinę częstotliwości za pomocą dyskretnej transformaty Fouriera 2D

Wykonaj elementarne pomnożenie macierzy częstotliwości obrazu przez macierz częstotliwości filtra

Otrzymany wynik przekształca się w dziedzinę przestrzenną za pomocą odwrotnej dwuwymiarowej dyskretnej transformaty Fouriera.

ja(x , y )

Im(f x , f y )

Jeśli (f x , f y ) Im(f x , f y ) H (f x , f y )

Jeżeli (fx , f y )

Jeśli (x, y).

Filtrowanie obrazów w dziedzinie częstotliwości jest rzadko stosowane ze względu na dużą ilość obliczeń. Jednak ta metoda filtrowania jest szeroko stosowana w obliczeniach teoretycznych w analizie opcji przetwarzania obrazu. Pozwala dość wyraźnie zwizualizować, jaki rodzaj filtrowania jest potrzebny. Na przykład, jeśli chcesz podkreślić ostre zmiany jasności na obrazie, oczywiste jest, że musisz użyć filtrów górnoprzepustowych. Wręcz przeciwnie, jeśli chcesz pozbyć się szumu o niskiej częstotliwości - drżących obwodów, pojedynczych pików itp., Musisz użyć filtrów dolnoprzepustowych. Konkretne parametry filtra dobierane są na podstawie analizy częstotliwości interferencji oraz właściwości oryginalnego obrazu.

CYFROWY LECZENIE SYGNAŁY

Temat 17. PRZETWARZANIE OBRAZU

Nie ma nic poza wyobraźnią człowieka.

Tytus Lukrecjusz. Rzymski filozof i poeta. I wiek pne mi.

Wyobraźnia to dobra rzecz. Ale żeby wyciągnąć włóczęgę z piwnicy, umyć go, zamienić w Apolla, zapakować w pudełko zapałek i wysłać znajomemu e-mail Dobry program graficzny zrobi lepiej.

Anatolij Pyshmintsev, nowosybirski geofizyk ze szkoły uralskiej. XX wiek

Wstęp.

1. Podstawowe pojęcia. Reprezentacja graficzna obrazy. Reprezentacja koloru w grafice komputerowej. Model kolorów RGB. System kolorów CIE XYZ.

2. Transformacje geometryczne obrazów rastrowych. Obszary i etapy transformacji. Próbowanie. Szeregi interpolacyjne odzyskiwania sygnału dwuwymiarowego. Zniekształcenia częstotliwościowe obrazów i ich eliminacja. Ponowne próbkowanie obrazu.

3. Filtrowanie obrazu. Filtry liniowe. Filtry wygładzające. Filtry kontrastu. filtry różnicowe. Dwuwymiarowy splot cykliczny. filtry nieliniowe. Filtrowanie progowe. filtrowanie medianowe. Ekstremalne filtry.

4. Kompresja obrazu. Algorytmy kodowania długości powtórzeń (RLE). Algorytmy słownikowe. Algorytmy kodowania statystycznego. Stratna kompresja obrazu. Szacowanie utraty obrazu. Transformata Fouriera. Transformacja falkowa.

WSTĘP

Zakres badań w dziedzinie obrazowania cyfrowego szybko rośnie. Dzieje się tak, ponieważ przetwarzanie obrazu to wielowymiarowe przetwarzanie sygnału, a większość sygnałów w świecie rzeczywistym jest wielowymiarowa.


Obraz w reprezentacji matematycznej jest dwuwymiarowym sygnałem, który przenosi ogromną ilość informacji. kolorowy obraz 500 × 500 elementów to tablica zawierająca kilkaset tysięcy bajtów. Przetwarzanie takich informacji jest możliwe tylko poprzez racjonalną organizację obliczeń. Do określonych zadań przetwarzania obrazu możesz użyć skuteczne sposoby przetwarzania, z uwzględnieniem cech i ograniczeń tego konkretnego zadania. Ale jeśli mówimy o przetwarzaniu obrazu w celu rozwiązania szerokiej klasy problemów, konieczne jest wyodrębnienie zestawu standardowych operacji, z których można zbudować algorytmy do rozwiązywania dowolnych problemów. Należą do nich transformacje liniowe, splot 2D i dyskretne transformaty Fouriera 2D.

Ale w przetwarzaniu obrazu szeroko stosowane są również przekształcenia nieliniowe. Osobliwością obrazów jest to, że poszczególne elementy obrazu są w pewnym połączeniu z sąsiednimi elementami. Dlatego większość algorytmów transformacji obrazu ma charakter lokalny, tj. przetwarza obrazy według grup elementów znajdujących się w sąsiedztwie danego. Transformacje liniowe spełniają właściwość lokalności i pozwalają na konstruowanie algorytmów, których złożoność obliczeniowa nie zależy zbytnio od wielkości objętego sąsiedztwa. Te same właściwości są wymagane w przypadku nieliniowych transformacji obrazu. Klasa takich przekształceń obejmuje algorytmy, które nazywane są algorytmami filtrowania rang, oparte na obliczaniu lokalnych statystyk obrazu rang. Przy obliczaniu statystyk rankingowych i ich pochodnych możliwe są uproszczenia związane z redundancją informacyjną obrazów. Najbardziej znanym algorytmem tej klasy jest algorytm filtrowania medianowego. Innymi przykładami algorytmów rang są algorytmy filtrowania ekstremów, które zastępują analizowany element obrazu maksimum lub minimum w sąsiedztwie. Inną właściwością algorytmów rang jest lokalna adaptacja do charakterystyki przetwarzanego obrazu oraz możliwość ich wykorzystania nie tylko do wygładzania i odszumiania, ale także do ekstrakcji cech, gdy automatyczne rozpoznawanie obrazy.

W przetwarzaniu obrazu szeroko stosowane są metody jednowymiarowego przetwarzania sygnałów, o ile możliwe jest ich uogólnienie na sygnały wielowymiarowe. Jednocześnie należy wziąć pod uwagę, że matematyczne metody opisu układów wielowymiarowych nie są kompletne. Układy wielowymiarowe mają dużą liczbę stopni swobody, a ich konstrukcja nabiera elastyczności, która nie jest charakterystyczna dla układów jednowymiarowych. Jednocześnie wielomianów wielowymiarowych nie można rozłożyć na czynniki proste, co komplikuje analizę i syntezę układów wielowymiarowych.

17.1. Podstawowe koncepcje

Graficzne przedstawienie obrazów. Aby przedstawić informacje graficzne na płaszczyźnie dwuwymiarowej (ekran monitora), stosuje się dwa podejścia: rastrowe i wektorowe.

W ujęciu wektorowym informacje graficzne opisywane są jako zbiór abstrakcyjnych obiektów geometrycznych – prostych, odcinków, krzywych, prostokątów itp. Opis wektorowy zakłada aprioryczną wiedzę o strukturze obrazu.

Grafika rastrowa operuje na dowolnych obrazach w postaci map bitowych. Raster to opis obrazu na płaszczyźnie poprzez podzielenie (próbkowanie) go na identyczne elementy wzdłuż regularnej siatki i przypisanie każdemu elementowi własnego koloru i wszelkich innych atrybutów. Najprostszy raster jest prostokątny, najbardziej ekonomiczny pod względem liczby próbek do przesyłania obrazów jest sześciokątny. Z matematycznego punktu widzenia raster jest fragmentarycznie stałą aproksymacją na płaszczyźnie ciągłej funkcji obrazu.

Element rastra nazywany jest pikselem. Standardowa identyfikacja pikseli:


f(i, j) = (A(i, j),C(i, j)), (17.1.1)

gdzie A(i, j) Ì R2 - powierzchnia piksela, C(i, j) Î C - atrybut piksela (zwykle kolor). Dwa najczęściej używane atrybuty to:

C(i, j) = I(i, j) - intensywność (jasność) piksela;

C(i, j) = (R(i, j), G(i, j), B(i, j)) - atrybuty koloru w modelu kolorów RGB.

W postaci macierzowej:

Mij ​​= (Aij, Cij).

Podczas próbkowania obrazów ciągłych wartości Aij można zdefiniować na dwa sposoby, albo jako wartości punktów Aij = (i, j), dla których określone są atrybuty Cij, albo jako wartości kwadratów Aij = (i, i+1) × (j, j+1) lub dowolna inna postać, z definicją Cij przez średnie wartości w obrębie tej postaci (ryc. 17.1.1).

W praktyce X i Y są z reguły ograniczonymi zbiorami nieujemnych liczb całkowitych rastra kwadratowego lub prostokątnego o stosunku szerokości do wysokości rastra, który zapisuje się jako np. „4:3”.

Reprezentacja koloru w grafice komputerowej. Pojęcie koloru opiera się na postrzeganiu przez ludzkie oczy fal elektromagnetycznych w określonym zakresie częstotliwości. Postrzegane przez nas światło dzienne ma długości fal λ od 400 nm (fiolet) do 700 nm (czerwień). Opisem strumienia świetlnego może być jego funkcja widmowa I(λ). Światło nazywamy monochromatycznym, jeśli jego widmo ma tylko jedną określoną długość fali.

Na siatkówce znajdują się dwa rodzaje receptorów: pręciki i czopki. Czułość widmowa pałeczek (ryc. 17.1.2) jest wprost proporcjonalna do jasności padającego światła. Czopki dzielą się na trzy typy, z których każdy ma określoną czułość w ograniczonych zakresach z maksimami dla kolorów czerwonego, zielonego i niebieskiego i gwałtownie traci czułość w ciemności. Podatność oka na kolor niebieski jest znacznie mniejsza niż na dwa pozostałe. Ważną właściwością ludzkiego postrzegania światła jest liniowość przy dodawaniu kolorów o różnych długościach fal.

Model kolorów RGB (Red, Green, Blue - czerwony, zielony, niebieski) w grafice komputerowej jest obecnie najczęściej spotykany. W tym modelu funkcja widmowa jest reprezentowana jako suma krzywych czułości dla każdego typu stożka z nieujemnymi współczynnikami wagowymi (znormalizowanymi od 0 do 1), które są oznaczane jako R, G i B. Model charakteryzuje się właściwość addytywności w celu uzyskania nowych kolorów. Na przykład kodowanie funkcji widmowych:

Czarny: fczarny = 0, (R, G, B) = (0,0,0);

Fiolet ffiolet = fred + fniebieski, (R, G, B) = (1,0,1);

Biały fbiały = fred + fzielony + fniebieski, (R, G, B) = (1,1,1).

Trójwymiarową przestrzeń barw modelu RGB pokazano na ryc. 17.1.3. Ze względu na specyfikę percepcji światła przez receptory, nie wszystkie kolory widoczne dla człowieka są reprezentatywne w tym modelu. Jednak proporcja odtwarzalnych kolorów jest znacznie większa niż proporcja kolorów, których nie można przedstawić w tym modelu.

System kolorów CIE XYZ. Międzynarodowy standard odwzorowania kolorów CIE (CIE – Commission Internationale de l „Eclairage) został przyjęty w 1931 roku przez Międzynarodową Komisję Oświetleniową. Definiuje on trzy podstawowe funkcje ρX (λ), ρY (λ), ρZ (λ), w zależności od długość fali , której liniowe kombinacje z nieujemnymi współczynnikami (X, Y i Z) dają wszystkie kolory widoczne dla człowieka. Funkcje te uwzględniają względną percepcję natężenia światła przez receptory oka. W przestrzeni trójwymiarowej CIE system kolorów tworzy stożek w pierwszej ćwiartce i służy do wyświetlania kolorowych obrazów o wysokiej jakości.

17.2. Transformacje geometryczne map bitowych

Obszary i etapy transformacji. Obrazy można podzielić na teksturowe i szczegółowe. W obrazach tekstur wszystkie próbki (elementy) niosą informację (obraz na ekranie telewizora). Szczegółowy obraz to obraz, w którym można rozróżnić obiekty przeszkadzające, tło i użyteczne przedmioty.

Istnieją trzy główne grupy algorytmów przetwarzania obrazu na komputerach:

1. Pierwotna (wstępna) obróbka obrazu w celu odtworzenia, oczyszczenia z przypadkowych szumów, poprawy jakości, skorygowania zniekształceń geometrycznych układów optycznych (rozogniskowania, aberracji itp.).

2. Opis obrazów, rozpoznawanie wzorców. Wykonywane jest w celu określenia parametrów szczegółów obrazu i obejmuje: znajdowanie obszarów obrazu, które są jednolite pod względem oświetlenia i koloru, wyróżnianie znaków kształtu obrazów, wyznaczanie współrzędnych punktów specjalnych obiektów itp.

3. Wydajne kodowanie w celu zmniejszenia ilości transmisji i przechowywania.

Większość metod przetwarzania wstępnego opiera się na wykorzystaniu liniowych filtrów niezmiennych przestrzennie (LPI). Algorytmy liniowe są wykonywane przy użyciu 2D analogów filtrów 1D FIR i IIR. Można je wykorzystać np. przy implementacji filtrów zmniejszających poziom szumów w obrazach.

Filtry FIR są realizowane metodą splotu. Zaletą filtrów 2D FIR jest widoczność, prostota i absolutna stabilność. Filtry IIR są implementowane przy użyciu równań różnicowych i przekształceń z. Są szybsze niż filtry FIR, ale mogą być niestabilne. Synteza dwuwymiarowych filtrów IIR różni się od syntezy jednowymiarowych, ponieważ dla funkcji dwuwymiarowej nie jest możliwe jawne wybranie biegunów.

Metody nieliniowe mogą być również wymagane do przywracania obrazów i poprawy ich jakości. Na przykład, aby stłumić szum i jednocześnie zachować część konturową obrazów, konieczne jest zastosowanie filtrów nieliniowych lub liniowych przestrzennie niezmiennych (SPNI), które są realizowane przez algorytmy rang. Wszystkie filtry nieliniowe rang są oparte na szybkich algorytmach obliczania lokalnych histogramów.

Jedną z takich metod jest filtrowanie medianowe. Zastosowanie filtrów medianowych jest skuteczne do tłumienia pewnych rodzajów szumów i szumów okresowych bez jednoczesnego zniekształcania sygnału, na przykład do tłumienia impulsów emisji szumów, w tym przerw w linii. Metodę można również wykorzystać do rozwiązywania problemów związanych z rozpoznawaniem, na przykład do podświetlania cienkich linii i małych pojedynczych obiektów.

Algorytmy opisu obrazów i rozpoznawania obrazów z reguły są nieliniowe i mają charakter heurystyczny. Znaki obiektów to zwykle obszar obrazu obiektu, obwód konturu obrazu, stosunek powierzchni do kwadratu obwodu obrazu. Kształt obiektu można scharakteryzować za pomocą promienia koła wpisanego w obraz lub opisanego wokół obrazu obiektu, długości minimalnego i maksymalnego wektora promienia od „środka masy” obrazu.

Próbowanie. Przekształcenia obrazu w komputerze i przechowywanie przetworzonych danych odbywa się w postaci dyskretnej. Próbkowanie służy do uzyskania dyskretnej reprezentacji z ciągłych analogowych obrazów świata rzeczywistego. W praktyce odbywa się to za pomocą urządzeń wejściowych (aparatu cyfrowego, skanera lub innych). W celu wizualnej percepcji przetworzonych obrazów na urządzeniach wyjściowych (wyświetlacz, ploter itp.) rekonstruowany jest obraz analogowy zgodnie z jego zdyskretyzowaną reprezentacją.

W najprostszym przypadku obrazów czarno-białych mamy dwuwymiarową tablicę sa(x,y). W przypadku obrazów kolorowych w modelu RGB, biorąc pod uwagę właściwość addytywności podczas dodawania kolorów, każdą warstwę R, G i B można również rozpatrywać i przetwarzać jako tablicę dwuwymiarową, z późniejszym sumowaniem wyników.

Spośród sposobów uogólnienia jednowymiarowej dyskretyzacji okresowej na przypadek dwuwymiarowy najprostszym jest dyskretyzacja okresowa we współrzędnych prostokątnych:

s(n, m) = sa(nDx, mDy),

gdzie Dx i Dy to poziome i pionowe odstępy próbkowania dwuwymiarowego sygnału ciągłego sa(x, y) o ciągłych współrzędnych x i y. Poniżej wartości Dx i Dy, podobnie jak w przypadku jednowymiarowym, są równe 1.

Dyskretyzacja sygnału dwuwymiarowego prowadzi również do periodyzacji jego widma i odwrotnie. Warunek równoważności informacyjnej reprezentacji współrzędnych i częstotliwości sygnału dyskretnego jest również zachowany przy równej liczbie punktów próbkowania w głównych zakresach sygnału. W przypadku dyskretyzacji prostokątnej bezpośrednie i odwrotne transformaty Fouriera są określone wyrażeniami:

S(k, l) =s(n, m) exp(-jn2pk/N-jm2pl/M), (17.2.1)

S(k, l) = exp(-jn2pk/N) s(n, m) exp(-jm2pl/M), (17.2.1")

s(n, m) = S(k, l) exp(-jn2pk/N-jm2pl/M). (17.2.2)

s(n, m) = exp(-jn2pk/N) S(k, l) exp(-jm2pl/M). (17,2,2")

Ryż. 17.2.1. Periodyzacja widma.

Te wyrażenia pokazują, że 2D DFT na prostokątnym rastrze próbkowania danych można obliczyć za pomocą 1D szeregowych DFT. Drugie sumy wyrażeń (17.2.1") i (17.2.2") to jednowymiarowe DFT odcinków funkcji s(n, m) i S(k, l) wzdłuż linii n i k, odpowiednio, a pierwsze sumy to jednowymiarowe DFT obliczonych funkcji w sekcjach według m i l . Innymi słowy, początkowe macierze wartości s(n, m) i S(k, l) są najpierw przeliczane na macierze pośrednie z DFT według wierszy (lub kolumn), a macierze pośrednie są przeliczane na macierze końcowe z DFT kolumnami (lub odpowiednio wierszami).

Aby okresowe powtórzenie widma (rys. 17.2.1), spowodowane próbkowaniem sygnału analogowego o częstotliwości Fx=1/Dx i Fy=1/Dy, nie zmieniało widma w częstotliwości głównej (w stosunku do widma pierwotnego sygnału analogowego) konieczne i wystarczające jest, aby maksymalne składowe częstotliwościowe fmax w widmie sygnału analogowego, zarówno w wierszach, jak i w kolumnach, nie przekraczały częstotliwości Nyquista (fmax. x £ fN = Fx/2, fmax y £ fM = Fy/2). Oznacza to, że częstotliwość próbkowania sygnału musi być co najmniej dwukrotnie większa niż maksymalna składowa częstotliwościowa w widmie sygnału:

Fx ³ 2fmaks. x, Fy ³ 2fmax. y, (17.2.3)

co zapewnia, że ​​funkcje widmowe osiągają wartości zerowe na krańcach głównego zakresu widma.

Szeregi interpolacyjne odzyskiwania sygnału dwuwymiarowego. Jeśli sygnał ciągły sa(x,y) jest sygnałem o ograniczonym widmie, a okresy próbkowania są dobrane na tyle małe, aby widma sąsiednich okresów nie zachodziły na siebie:

Sa(Wx, Wy) = 0 dla |Wx|p/Dx, |Wy|p/Dx,

wówczas, podobnie jak w przypadku jednowymiarowym, sygnał sa(x,y) można zrekonstruować z sygnału dyskretnego za pomocą dwuwymiarowego analogu szeregu Kotelnikowa-Shannona:

sa(x, y) = Sn Sm s(n, m) . (17.2.4)

Zniekształcenia częstotliwościowe obrazów i ich eliminacja. Można również próbkować sygnał o nieograniczonym widmie, ale w tym przypadku zachodzi nakładanie się widm w sąsiednich okresach, podczas gdy wysokie częstotliwości, wyższe niż częstotliwości Nyquista, będą „maskowane”, podobnie jak w przypadku jednowymiarowego, pod niskie częstotliwości główny okres. Efekt „odbicia” od granic okresu daje jeszcze bardziej złożony obraz ze względu na interferencję częstotliwości odbijanych w różnych współrzędnych. Podobny efekt, znany jako aliasing, wystąpi również w przypadku niedopróbkowania obrazów. Efekt ten można zaobserwować szczególnie wyraźnie przy ostrych, kontrastowych zmianach jasności.

Aby zwalczyć takie zjawiska, stosuje się filtrowanie wstępne (antyaliasing) - wstępne splot obrazu analogowego z funkcją filtra wagowego, który odcina składowe o wysokiej częstotliwości, które mogą prowadzić do aliasingu. W przypadku dwuwymiarowym filtrowanie jest opisane w następujący sposób:

z(x, y) = h(x", y") ③③ s(x-x", y-y"). (17.2.5)

Należy zauważyć, że obrazy analogowe istnieją tylko w zakresie optycznym, na przykład w postaci świetlnego wyświetlacza na ekranie, papierze fotograficznym lub kliszy fotograficznej, ale nie mogą istnieć w pamięci komputera. Dlatego fizyczna implementacja prefiltracji jest możliwa tylko przy rejestracji obrazu poprzez jego rozogniskowanie, co z reguły nie jest stosowane. Informacje pierwotne powinny być zawsze rejestrowane z maksymalną kompletnością i dokładnością, a oczyszczenie informacji pierwotnych ze zbędnych szczegółów i nadmiarowości jest kwestią późniejszego przetwarzania danych. Dlatego w odniesieniu do równania 17.2.5 dwuwymiarowa filtracja wstępna w swojej praktycznej realizacji może być jedynie filtracją obrazów próbkowanych z dużym marginesem w głównym zakresie częstotliwości (z nadmierną rozdzielczością) i jest stosowana z reguły , podczas ponownego próbkowania do większego kroku, na przykład podczas kompresji obrazów. Filtrowanie wstępne może być również wbudowane w algorytmy obrazowania.

na ryc. 17.2.3 i poniżej, Tabela 17.2.1 przedstawia przykłady najczęściej spotykanych jednowymiarowych filtrów antyaliasingowych. Mogą być również realizowane w postaci filtrów analogowych i są wykorzystywane np. przy transmitowaniu linii telewizyjnych obrazów w postaci analogowej kanałami radiowymi (antyaliasing poziomy). W zasadzie podobną operację można wykonać na kolumnach (duplikat - obraz), a po zsumowaniu obrazu zostanie wykonana pełna operacja antyaliasingu, ale ta metoda należy bardziej do dziedziny specjalistycznych badań naukowych.

Tabela 17.2.1.

Podstawowe funkcje wagi

okno czasowe

funkcja wagi

Transformata Fouriera

naturalny (P)

П(t) = 1, |t|£t; П(t) = 0, |t|>t

П(w) = 2t od

Bartlett (D)

B(w) = t sinc2(wag/2).

Henning, Hanna

p(t) = 0,5

0,5p(w)+0,25p(w+p/t)+0,25p(w-p/t)

Hamminga

p(t) = 0,54+0,46 cos(pt/t)

0,54P(w)+0,23P(w+p/t)+0,23P(w-p/t)

Carré (drugie okno)

p(t) = b(t) skoro(pt/t)

t B(w)*P(w), P(w) = 1 dla |w|

Laplace-Gauss

p(t) = exp[-b2(t/t)2/2]

[(t/b) exp(-t2w2/(2b2))] ③ P(w)

Dwuwymiarowe analogi filtrów jednowymiarowych f1(x) są zbudowane w dwóch wariantach symetrii: lub w funkcji promienia:

f2(x, y) = f1(),

lub jako praca:

f2(x, y) = f1(x) × f1(y).

Pierwsza opcja jest bardziej poprawna, ale druga ma właściwość separowalności, tzn. splot dwuwymiarowy można wykonać za pomocą dwóch jednowymiarowych splotów kolejno w wierszach z f1(x) iw kolumnach z f1(y).

Ponowne próbkowanie obrazu lub ponowne próbkowanie to zmiana częstotliwości próbkowania sygnału cyfrowego. W przypadku obrazów cyfrowych oznacza to zmianę rozmiaru obrazu.

Istnieją różne algorytmy ponownego próbkowania obrazu. Na przykład, aby zwiększyć obraz o 2 razy za pomocą metody interpolacji dwuliniowej, pośrednie kolumny i wiersze uzyskuje się przez interpolację liniową wartości sąsiednich kolumn i wierszy. Możliwe jest uzyskanie każdego punktu nowego obrazu jako ważonej sumy większej liczby punktów oryginalnego obrazu (interpolacja dwusześcienna i inne rodzaje). Najwyższą jakość resamplingu uzyskuje się stosując algorytmy uwzględniające nie tylko dziedzinę czasu, ale również częstotliwość sygnału.

Rozważ algorytm ponownego próbkowania z maksymalnym zachowaniem informacji o częstotliwości obrazu. Rozważymy działanie algorytmu na sygnałach jednowymiarowych, ponieważ obraz dwuwymiarowy można najpierw rozciągnąć lub skompresować w poziomie (w rzędach), a następnie w pionie (w kolumnach), a resampling obrazu dwuwymiarowego można zredukowane do ponownego próbkowania sygnałów jednowymiarowych.

Załóżmy, że mamy sygnał jednowymiarowy (Rys. 17.2.4), dany na przedziale 0-T i dyskretyzowany krokiem Dt=1 (N przedziałów). Konieczne jest „rozciągnięcie” sygnału o m razy. Widmo sygnału pokazane na rysunku jest obliczane za pomocą szybkiej transformaty Fouriera (FFT, liczba próbek widma jest równa liczbie próbek sygnału) i podawane w głównym zakresie FFT (0-2p, częstotliwość Nyquista wN = p/Dt = p lub 0,5N zgodnie z numeracją próbek widma z krokiem wzdłuż widma Df = 1/T lub Dw = 2p/T). Rozciąganie wymaga 2 kroków.

Pierwszym krokiem jest interpolacja zerowa, która zwiększa długość sygnału m razy. (Rys. 17.2.5). Należy pomnożyć wszystkie próbki sygnału pierwotnego przez m, a następnie po każdej próbce sygnału wstawić wartość m-1 zero. Na przedziale 0-T, którego wartość pozostaje niezmieniona, jest teraz m razy więcej przedziałów próbkowania (mN), a nowy krok próbkowania będzie równy Dx=Dt/m. Odpowiednio, nowa częstotliwość Nyquista dla tego sygnału to mp/Dt = mp. Ale fizyczna wartość kroku widma w jednostkach częstotliwości jest odwrotnością fizycznej wartości interwału ustawiania sygnału (Df=1/T), a zatem FFT na mN punktach sygnału obliczy mN punktów widma w główny zakres FFT 0-14:00 z krokiem widma sygnału oryginalnego, w którym będą obecne m-okresy widma sygnału pierwotnego (jedna strona główna i m-1).

Drugim krokiem jest odfiltrowanie pasm bocznych widma za pomocą filtra dolnoprzepustowego, w dziedzinie czasu lub widma. na ryc. 17.2.6 wyczyszczono widmo i wykonano odwrotną transformatę Fouriera, w wyniku czego uzyskano sygnał m razy dłuższy od sygnału pierwotnego z pełnym zachowaniem wszystkich informacji o częstotliwości.

Na podobnej zasadzie można zbudować algorytm kompresji (dziesiętności) sygnału n razy, przy czym kolejność kroków jest odwrócona. Podczas kompresji sygnału zwiększa się krok próbkowania sygnału i odpowiednio zmniejsza się częstotliwość Nyquista, podczas gdy odcięte wysokie częstotliwości (szum i nieznaczne części widma sygnału o wysokiej częstotliwości) będą odbijane od granicy głównego zakresu i dodawane do głównych informacji, tworząc zniekształcenia. Aby wyeliminować to zjawisko, sygnał jest najpierw filtrowany dolnoprzepustowo z częstotliwością odcięcia równą nowej częstotliwości Nyquista (antyaliasing), a dopiero potem sygnał jest dziesiątkowany przez pocienianie.

Gdy resampling jest wykonywany tylko w dziedzinie czasu, algorytmy rozciągania i kompresji są zwykle łączone w jeden sekwencyjny proces z ustawieniem zmiany kroku próbkowania w postaci stosunku m/n, co pozwala na ustawienie wartości całkowitych m i n dla ułamkowych wartości zmiany kroku próbkowania. To znacznie upraszcza algorytmy i poprawia wydajność oraz jakość ich pracy. Na przykład, gdy sygnał jest rozciągany 1,5 razy przy m/n = 3/2, sygnał jest najpierw rozciągany 3 razy (proste i równomierne dodanie zer do wszystkich próbek, następnie przeprowadzana jest filtracja dolnoprzepustowa, po której sygnał jest dziesiątkowany przez współczynnik 2. Filtr antyaliasingowy nie jest wymagany, ponieważ jego częstotliwość odcięcia pokrywa się z częstotliwością pierwszego filtra dolnoprzepustowego. ), podobnie używany jest tylko filtr antyaliasingowy.

17.3. filtrowanie obrazu

Filtrowanie obrazu to operacja, w wyniku której otrzymujemy obraz o tej samej wielkości, uzyskany z oryginału według pewnych zasad. Zazwyczaj intensywność (kolor) każdego piksela w wynikowym obrazie jest określana przez intensywność (kolory) pikseli znajdujących się w niektórych jego sąsiedztwie na oryginalnym obrazie.

Reguły filtrowania mogą być bardzo różnorodne. Filtrowanie obrazu jest jedną z najbardziej podstawowych operacji widzenia komputerowego, rozpoznawania wzorców i przetwarzania obrazu. Zdecydowana większość metod przetwarzania obrazu rozpoczyna się od takiego lub innego filtrowania oryginalnych obrazów.

Filtry liniowe mają bardzo prosty opis matematyczny. Założymy, że dany jest oryginalny obraz rastrowy A i oznaczymy intensywności jego pikseli przez A(x, y). Filtr liniowy jest definiowany przez funkcję o wartościach rzeczywistych h (jądro filtra) zdefiniowaną na rastrze. Samo filtrowanie odbywa się za pomocą operacji splotu dyskretnego (sumowania ważonego):

B(x, y) = h(i, j) ③③A(x, y) = h(i, j) A(x-i, y-j). (17.3.1)

Wynikiem jest obraz B. Zwykle jądro filtru jest niezerowe tylko w pewnym sąsiedztwie N punktu (0, 0). Poza tym sąsiedztwem h(i, j) jest równe zeru lub bardzo mu bliskie i można je pominąć. Sumowanie odbywa się po (i, j) n N, a wartość każdego piksela B(x, y) jest określana przez piksele obrazu A, które leżą w oknie N wyśrodkowanym w punkcie (x, y) ( oznaczony jest zbiorem N(x, y) ). Jądro filtra zdefiniowane w prostokątnym sąsiedztwie N można traktować jako macierz m na n, w której długości boków są liczbami nieparzystymi. Określając jądro jako macierz, należy je wyśrodkować. Jeżeli piksel (x, y) znajduje się w pobliżu krawędzi obrazu, to współrzędne A(x-i, y-j) dla pewnych (i, j) mogą odpowiadać nieistniejącym pikselom A poza obrazem. Ten problem można rozwiązać na kilka sposobów.

Nie filtruj takich pikseli, przycinając obraz B na krawędziach lub stosując oryginalne wartości obrazu A dla ich wartości.

Nie uwzględniaj brakującego piksela w sumowaniu, rozkładając jego wagę h(i, j) równomiernie na inne piksele w sąsiedztwie N(x, y).

Zdefiniuj ponownie wartości pikseli poza granicami obrazu za pomocą ekstrapolacji.

Zdefiniuj ponownie wartości pikseli poza granicami obrazu, używając lustrzanej kontynuacji obrazu.

Wybór metody dokonywany jest z uwzględnieniem specyfiki filtra i cech obrazu.

Filtry wygładzające. Najprostszym prostokątnym filtrem wygładzającym o promieniu r jest macierz (2r+1) × (2r+1), której wszystkie wartości to 1/(2r+1)2, a suma wartości to jeden. Jest to analog 2D dolnoprzepustowego filtra średniej ruchomej 1D w kształcie litery U. Podczas filtrowania z takim jądrem wartość piksela jest zastępowana średnią wartością pikseli w kwadracie o boku 2r+1 wokół niego. Przykład maski filtra 3×3:

.

Jednym z zastosowań filtrów jest redukcja szumów. Szum zmienia się niezależnie od piksela do piksela i pod warunkiem, że matematyczne oczekiwanie wartości szumu wynosi zero, szum sąsiednich pikseli zniesie się po zsumowaniu. Im większe okno filtrowania, tym niższe średnie natężenie szumu, jednak wystąpi również odpowiednie rozmycie istotnych szczegółów obrazu. Obraz białej kropki na czarnym tle podczas filtrowania (reakcji na pojedynczy impuls) będzie jednolicie szarym kwadratem.

Redukcja szumów za pomocą filtra prostokątnego ma istotną wadę: wszystkie piksele w masce filtra w dowolnej odległości od przetwarzanej mają taki sam wpływ na wynik. Nieco lepszy wynik uzyskuje się modyfikując filtr poprzez zwiększenie ciężaru punktu centralnego:

.

Bardziej efektywną redukcję szumów można uzyskać, jeśli wpływ pikseli na wynik maleje wraz ze wzrostem odległości od przetwarzanego. Właściwość tę posiada filtr Gaussa o jądrze: h(i, j) = (1/2ps2) exp(-(i2+j2)/2s2). Filtr Gaussa ma niezerowe jądro o nieskończonej wielkości. Jednak wartość jądra filtra bardzo szybko spada do n), dlatego w praktyce można ograniczyć się do splotu z małym oknem wokół (0, 0), przyjmując np. promień okna równy 3σ.

Filtrowanie gaussowskie również wygładza. Jednak w przeciwieństwie do filtra prostokątnego, obraz punktu z filtrem Gaussa będzie symetrycznie rozmytym punktem, ze spadkiem jasności od środka do krawędzi. Stopień rozmycia obrazu określa parametr σ.

Filtry kontrastowe . Jeśli filtry wygładzające zmniejszają lokalny kontrast obrazu, rozmywając go, to filtry wzmacniające kontrast dają odwrotny skutek i w istocie są filtrami o wysokich częstotliwościach przestrzennych. Jądro filtra podwyższającego w punkcie (0, 0) ma wartość większą od 1, przy czym całkowita suma wartości jest równa 1. Na przykład filtry podwyższające to filtry o jądrze określonym przez macierze:

. .

Przykład zastosowania filtra pokazano na rys. 17.3.1. Efekt zwiększenia kontrastu uzyskuje się dzięki temu, że filtr uwydatnia różnicę między intensywnościami sąsiednich pikseli, usuwając te intensywności od siebie. Efekt ten będzie tym silniejszy, im większa będzie wartość członu centralnego jądra. Charakterystycznym artefaktem filtrowania liniowego wzmocnienia kontrastu są zauważalne jasne i mniej zauważalne ciemne obwódki wokół krawędzi.

Filtry różnicowe są filtrami liniowymi zdefiniowanymi przez dyskretne przybliżenia operatorów różniczkowych (metodą różnic skończonych). Filtry te odgrywają ważną rolę w wielu aplikacjach, na przykład do wyszukiwania krawędzi obrazu.

Najprostszym operatorem różniczkowym jest pochodna x d/dx, która jest zdefiniowana dla funkcji ciągłych. Typowymi wariantami podobnych operatorów dla obrazów dyskretnych są filtry Prewitta i Sobela:

. .

Filtry aproksymujące operator pochodnej względem współrzędnej y d/dy uzyskuje się przez transpozycję macierzy.

Najprostszy algorytm obliczania normy gradientu w trzech sąsiednich punktach:

G(x, y) = .

Stosowany jest również uproszczony wzór obliczeniowy:

Obliczanie normy gradientu na czterech sąsiednich punktach (operator Robertsa):

Algorytm Sobela wykorzystuje osiem próbek jasności w pobliżu punktu centralnego:

G(x, y) = , G(x, y) @ ,

Gxx, y = - ,

Gyx, y = - .

Wraz z dokładniejszym zdefiniowaniem normy gradientu algorytm Sobela pozwala również na wyznaczenie kierunku wektora gradientu w płaszczyźnie analizy obrazu w postaci kąta j między wektorem gradientu a kierunkiem rzędów macierzy:

j(x, y) = argtg(Gyx, y /Gxx, y).

W przeciwieństwie do filtrów wygładzających i kontrastowych, które nie zmieniają średniej intensywności obrazu, w wyniku zastosowania operatorów różnicy z reguły uzyskuje się obraz o średniej wartości piksela bliskiej zeru. Pionowe krople (krawędzie) oryginalnego obrazu odpowiadają pikselom o dużych wartościach modulo w obrazie wynikowym. Dlatego filtry różnicowe są również nazywane filtrami wykrywania granic obiektu.

Podobnie jak w przypadku powyższych filtrów, metoda różnic skończonych może być wykorzystana do komponowania filtrów dla innych operatorów różniczkowych. W szczególności istotny dla wielu zastosowań różniczkowy operator Laplace'a (Laplace'a) D= 𝝏2/𝝏x2 + 2/𝝏y2 może być aproksymowany dla obrazów dyskretnych filtrem z macierzą (jedna z opcji):

.

Jak widać na ryc. 17.3.2, w wyniku zastosowania dyskretnego Laplace'a, dużym wartościom bezwzględnym odpowiadają zarówno pionowe, jak i poziome różnice jasności. Filtr jest zatem filtrem, który znajduje granice dowolnej orientacji. Znalezienie krawędzi na obrazie można wykonać, stosując ten filtr i biorąc wszystkie piksele, których wartość bezwzględna przekracza określony próg.

Algorytm ten ma jednak istotne wady. Głównym jest niepewność w wyborze wartości progowej. Dla różnych części obrazu akceptowalny wynik uzyskuje się zwykle przy znacząco różnych progach. Ponadto filtry różnicowe są bardzo wrażliwe na szumy obrazu.

Dwuwymiarowy splot cykliczny. Podobnie jak w przypadku sygnałów 1D, splot 2D można przeprowadzić w dziedzinie częstotliwości przestrzennej przy użyciu algorytmów FFT i mnożenia widm obrazu 2D i jądra filtra. Ma również charakter cykliczny i najczęściej wykonywany jest w wersji ślizgowej. Biorąc pod uwagę cykliczność, do obliczenia stałego wzorca widma jądra wymiary maski filtra jądra są podwajane wzdłuż osi i dopełniane zerami, a te same wymiary maski służą do podświetlenia okna przesuwającego się po obrazie, w obrębie w którym wykonywana jest FFT. Implementacja filtra FIR z FFT jest szczególnie wydajna, jeśli filtr ma duży obszar odniesienia.

Filtry nieliniowe . W cyfrowym przetwarzaniu obrazów algorytmy nieliniowe oparte na statystykach rang są szeroko stosowane do przywracania obrazów uszkodzonych przez różne modele szumów. Pozwalają uniknąć dodatkowych zniekształceń obrazu przy usuwaniu szumów, a także znacząco poprawiają działanie filtrów na obrazach o dużym stopniu szumu.

Wprowadźmy pojęcie M-sąsiedztwa elementu obrazu A(x, y), które jest centralne dla tego sąsiedztwa. W najprostszym przypadku M-sąsiedztwo zawiera N-pikseli - punkty, które mieszczą się w masce filtru, włączając (lub nie włączając) środkową. Wartości tych N-elementów można ułożyć w szereg wariacyjny V(r), uszeregowany rosnąco (lub malejąco), a niektóre momenty tego szeregu można obliczyć, na przykład średnią wartość jasności mN i wariancji dN. Obliczenie wartości wyjściowej filtra, który zastępuje próbkę środkową, odbywa się według wzoru:

B(x, y) = aА(x, y) + (1-a)mN. (17.3.2)

Wartość współczynnika a = wiąże się z pewną zależnością ze statystykami próbek w oknie filtra, np.:

a = dN /(dN + k dS), (17.3.3)

gdzie dS jest wariancją szumu na obrazie jako całości lub na S-sąsiedztwie dla S > M i MnS, k jest stałą ufności wariancji S-sąsiedztwa. Jak wynika z tego wzoru, dla k=1 i dN » dS zachodzi a » 0,5, a wartość B(x, y) = (A(x, y) + mN)/2, czyli sumują się one równo na wartościach centralnej próbki i średniej wartości pikseli jej M-sąsiedztwa. Wraz ze wzrostem wartości dN wzrasta udział wartości odniesienia centralnego w wyniku, ze spadkiem wartość mN. Wagę udziału wartości średnich w sąsiedztwie M można zmienić o wartość współczynnika k.

Wybór funkcji statystycznej i charakter zależności współczynnika a od niej może być dość różnorodny (na przykład według wariancji różnic odczytów w sąsiedztwie M z odczytem centralnym) i zależy zarówno od rozmiaru apertury filtra oraz od charakteru obrazów i szumu. Zasadniczo wartość współczynnika a musi określać stopień uszkodzenia próbki centralnej i odpowiednio funkcję pożyczkową dla jej korekty próbek z sąsiedztwa M.

Najprostszymi i najczęściej spotykanymi typami filtrów nieliniowych do przetwarzania obrazu są filtry progowe i medianowe.

Filtrowanie progowe podaje się na przykład tak:

B(x, y) =

Wartość P jest progiem filtra. Jeżeli wartość punktu środkowego filtru przekracza średnią wartość próbek mN w jego M-okolicy o wartość progową, to jest zastępowana przez wartość średnią. Wartość progowa może być stała lub funkcjonalnie zależna od wartości punktu centralnego.

Filtrowanie medianowe jest zdefiniowany w następujący sposób:

B(x, y) = med (M(x, y)),

tj. wynikiem filtrowania jest mediana wartości sąsiednich pikseli, których kształt jest określony przez maskę filtra. Filtrowanie medianowe może skutecznie usuwać szumy z obrazu, które niezależnie wpływają na poszczególne piksele. Na przykład takimi zakłóceniami są „zepsute” piksele podczas fotografowania cyfrowego, szum „śniegu”, gdy niektóre piksele są zastępowane pikselami o maksymalnej intensywności itp. Zaletą filtrowania medianowego jest to, że „gorący” piksel na ciemnym tle zostanie zastąpiony ciemne, a nie „rozmazane” po okolicy.

Filtrowanie medianowe ma wyraźną selektywność w odniesieniu do elementów tablicy, które są niemonotonicznym składnikiem sekwencji liczb w aperturze filtra. Jednocześnie filtr medianowy pozostawia niezmienioną składową monotoniczną sekwencji. Dzięki tej właściwości filtry medianowe o optymalnie dobranej aperturze zachowują ostre krawędzie obiektów bez zniekształceń, tłumiąc nieskorelowane lub słabo skorelowane szumy i drobne detale.

Ekstremalne filtry określone przez zasady:

Bmin(x, y) = min(M(x, y)),

Bmax(x, y) = maks (M(x, y)),

tj. wynikiem filtrowania są minimalne i maksymalne wartości pikseli w masce filtra. Takie filtry stosuje się z reguły do ​​obrazów binarnych.

17.4. KOMPRESJA OBRAZU

Typowy obraz o rozdzielczości około 3000×2000 przy 24 bitach na piksel dla transmisji kolorów ma rozmiar 17 megabajtów. W przypadku urządzeń profesjonalnych rozmiar wynikowego rastra obrazu może być znacznie większy, głębia kolorów wynosi do 48 bitów na piksel, a rozmiar jednego obrazu może przekraczać 200 megabajtów. Dlatego algorytmy kompresji obrazu są bardzo przydatne w zmniejszaniu ilości danych reprezentujących obraz.

Istnieją dwie główne klasy algorytmów:

1. Kompresja bezstratna A (kompresja bezstratna), jeżeli istnieje taki algorytm odwrotny A-1, że dla dowolnego h - obrazu A[h] = h1 mamy A-1 = h. Kompresja bezstratna stosowana jest w takich formatach graficznych jak: GIF, PCX, PNG, TGA, TIFF i jest wykorzystywana przy przetwarzaniu szczególnie cennych informacji pierwotnych (zdjęcia medyczne, lotnicze, kosmiczne itp.), gdy niepożądane są nawet najmniejsze zniekształcenia

2. Kompresja stratna, jeśli nie zapewnia możliwości dokładnego przywrócenia oryginalnego obrazu. Przybliżony algorytm odzyskiwania obrazu sparowany z A będzie oznaczony jako A*. Para (A, A*) jest dobrana tak, aby zapewnić wysokie współczynniki kompresji przy zachowaniu jakości obrazu. Kompresja stratna stosowana jest w formatach graficznych: JPEG, JPEG2000 itp.

Wszystkie algorytmy i stwierdzenia odnoszą się zarówno do obrazów, jak i do dowolnych sekwencji, których elementy mogą przyjmować skończoną liczbę wartości. Jednocześnie należy wziąć pod uwagę, że nie ma idealnych algorytmów, które są w stanie bezstratnie skompresować dowolny zestaw danych.

Algorytmy kodowania długości powtórzeń (RLE). opierają się na prostej zasadzie: zamianie powtarzających się grup elementów pierwotnej sekwencji na parę (ilość, element) lub tylko na ilość.

poziom bitowy. Rozważymy oryginalne dane na poziomie sekwencji bitów, na przykład reprezentujących czarno-biały obraz. Zwykle jest kilka zer lub jedynek z rzędu, a liczba kolejnych identycznych cyfr może być zakodowana. Ale liczba powtórzeń musi być również zakodowana w bitach. Można przyjąć, że każda liczba powtórzeń zmienia się od 0 do 7 (kod 3-bitowy), zmieniając sekwencję kodów zer i jedynek. Na przykład sekwencje można porównać z liczbami 7 0 4, czyli 7 jedynek, 0 zer, 4 jedynek, podczas gdy mamy nowy rok – Im dłuższe ciągi identycznych bitów, tym większy efekt. Tak więc sekwencja 21 jedynek, 21 zer, 3 jedynek i 7 zer jest kodowana w następujący sposób: , czyli z oryginalnej sekwencji 51 bitów mamy sekwencję 36 bitów.

Poziom bajtów. Załóżmy, że wejście jest obrazem w skali szarości, gdzie 1 bajt jest przydzielony na wartość intensywności piksela, podczas gdy oczekiwanie długiego łańcucha identycznych bitów jest znacznie zmniejszone.

Strumień wejściowy podzielimy na bajty (kod od 0 do 255) i zakodujemy powtarzające się bajty jako parę (liczba, litera). Pojedynczy bajt nie może być modyfikowany. Tak więc bajty AABBBCDAA kodują (2A) (3B) (C) (D) (2A).

Jednak modyfikacje tego algorytmu są rzadko stosowane samodzielnie (na przykład w formacie PCX), ponieważ podklasa sekwencji, na których algorytm jest skuteczny, jest stosunkowo wąska. Częściej są wykorzystywane jako jeden z etapów rurociągu sprężającego.

Algorytmy słownikowe zamiast kodowania tylko jednego elementu przychodzącej sekwencji, wykonywane jest kodowanie łańcucha elementów. Wykorzystuje słownik ciągów (utworzonych z sekwencji wejściowej) do kodowania nowych.

Algorytm LZ77 jako jeden z pierwszych używał słownika. N ostatnich już zakodowanych elementów sekwencji jest używanych jako słownik. Podczas kompresji podsekwencja słownika „przesuwa się” po nadchodzącej sekwencji. Łańcuch elementów na wyjściu jest kodowany w następujący sposób: pozycja pasującej części przetwarzanego łańcucha elementów w słowniku - przesunięcie (względem aktualnej pozycji), długość, pierwszy element po dopasowanej części łańcucha. Długość pasującego łańcucha jest ograniczona od góry liczbą n. W związku z tym zadaniem jest znalezienie największego ciągu ze słownika, który pasuje do przetwarzanej sekwencji. Jeśli nie ma dopasowań, zapisywane są przesunięcie zero, długość jeden i pierwszy element niezakodowanej sekwencji.

Opisany powyżej schemat kodowania prowadzi do koncepcji okna przesuwnego, które składa się z dwóch części:

Podsekwencja już zakodowanych elementów o długości N-słownik - bufor wyszukiwania;

Podsekwencja o długości n z łańcucha elementów, dla których zostanie podjęta próba znalezienia dopasowania, jest buforem wyprzedzającym.

Dekodowanie skompresowanej sekwencji jest dekodowaniem zarejestrowanych kodów: każdy wpis jest dopasowywany do ciągu ze słownika i jawnie zapisanego elementu, po czym słownik jest przesuwany. Słownik jest odtwarzany podczas działania algorytmu dekodowania.

Algorytm ten jest przodkiem całej rodziny algorytmów. Do jego zalet należy przyzwoity stopień kompresji na wystarczająco dużych sekwencjach oraz szybka dekompresja. Wady obejmują małą prędkość kompresji i niższy współczynnik kompresji niż alternatywne algorytmy.

Algorytm LZW. Słownik w tym algorytmie to tabela, która jest wypełniana łańcuchami elementów w trakcie działania algorytmu. Proces kompresji szuka najdłuższego łańcucha już zapisanego w słowniku. Za każdym razem, gdy w słowniku nie zostanie znaleziony nowy ciąg elementów, jest on dodawany do słownika i zapisywany jest kod ciągu. Teoretycznie nie ma ograniczeń co do rozmiaru tabeli, ale ograniczenie rozmiaru poprawia współczynnik kompresji, ponieważ gromadzą się niepotrzebne (nie występujące) łańcuchy. Im więcej wpisów ma tabela, tym więcej informacji trzeba przypisać do kodów sklepów.

Dekodowanie polega na bezpośrednim dekodowaniu kodów, tj. Konstruowaniu słownika i wyprowadzaniu odpowiednich łańcuchów. Słownik jest inicjowany w taki sam sposób jak w enkoderze. Do zalet algorytmu należy wysoki stopień kompresji oraz dość duża szybkość zarówno kompresji, jak i dekodowania.

Algorytmy kodowania entropijnego przypisać każdemu elementowi sekwencji kod tak, aby jego długość odpowiadała prawdopodobieństwu wystąpienia elementu. Kompresja polega na zastąpieniu elementów oryginalnej sekwencji, które mają tę samą długość (każdy element zajmuje taką samą liczbę bitów) elementami o różnej długości, proporcjonalnej do ujemnego logarytmu prawdopodobieństwa, tj. elementy, które występują częściej niż inne, mają kod o mniejszej długości.

Algorytm Huffmana wykorzystuje kod prefiksu o zmiennej długości, który ma specjalną właściwość: krótsze kody nie pasują do przedrostka (części początkowej) dłuższych. Taki kod pozwala na kodowanie jeden do jednego. Proces kompresji polega na zastąpieniu każdego elementu sekwencji wejściowej jego kodem. Konstrukcja zestawu kodów odbywa się zwykle za pomocą tzw drzewa kodu.

Algorytm Huffmana jest dwuprzebiegowy. Pierwsze przejście przez obraz tworzy tabelę wag elementów, a podczas drugiego przejścia następuje kodowanie. Istnieją implementacje algorytmu stałej tabeli. Często zdarza się, że rozkład prawdopodobieństwa a priori elementów alfabetu jest nieznany, ponieważ nie jest dostępna od razu cała sekwencja, a stosowane są adaptacyjne modyfikacje algorytmu Huffmana.

Stratna kompresja obrazu. Ilość informacji potrzebnych do przechowywania obrazów jest zwykle duża. Algorytmy klasyczne, jako algorytmy ogólnego przeznaczenia, nie uwzględniają, że kompresowana informacja jest obrazem – obiektem dwuwymiarowym i nie zapewniają odpowiedniego stopnia kompresji.

Kompresja stratna opiera się na cechach ludzkiego postrzegania obrazu: największej czułości w określonym zakresie fal kolorów, zdolności postrzegania obrazu jako całości, nie zauważania drobnych zniekształceń. Główną klasą obrazów, na których koncentrują się algorytmy kompresji stratnej, są fotografie, obrazy z płynnymi przejściami kolorów.

Szacowanie utraty obrazu. Istnieje wiele miar szacowania strat w obrazach po ich odtworzeniu (dekodowaniu) ze skompresowanych, jednak dla wszystkich można dobrać dwa obrazy tak, aby ich miara różnicy była na tyle duża, ale różnice będą prawie niezauważalne dla Oko. I na odwrót — możesz wychwycić obrazy, które różnią się znacznie na oko, ale mają niewielką różnicę.

Standardową numeryczną miarą strat jest zwykle odchylenie standardowe (RMS) wartości pikseli zrekonstruowanego obrazu od oryginału. Jednak najważniejszą „miarą” oceny strat jest opinia obserwatora. Im mniej różnic (lub lepiej ich brak) wykryje obserwator, tym wyższa jakość algorytmu kompresji. Algorytmy kompresji stratnej często pozwalają użytkownikowi wybrać ilość „utraconych” danych, czyli prawo wyboru między jakością a rozmiarem skompresowanego obrazu. Oczywiście im lepsza jakość wizualna przy wyższym współczynniku kompresji, tym lepszy algorytm.

Transformata Fouriera. W ogólnym przypadku obraz można rozpatrywać jako funkcję dwóch zmiennych, zdefiniowanych w punktach ostatecznego rastra. Zbiór takich funkcji na punktach stałego skończonego rastra tworzy skończenie wymiarową przestrzeń euklidesową i można do nich zastosować dyskretną transformatę Fouriera, czyli widmową reprezentację obrazu. To zapewnia:

Nieskorelowanie i niezależność współczynników widma, tj. dokładność reprezentacji jednego współczynnika nie zależy od żadnego innego.

- Zagęszczanie energii. Transformacja przechowuje podstawowe informacje w niewielkiej liczbie współczynników. Ta właściwość jest najbardziej widoczna w fotorealistycznych obrazach.

Współczynniki reprezentacji widmowej to amplitudy częstotliwości przestrzennych obrazu. W przypadku obrazów z płynnymi przejściami większość informacji zawarta jest w widmie niskich częstotliwości.

Algorytm kompresji używany w formacie JPG, opiera się na wykorzystaniu dyskretnej transformaty kosinusowej Fouriera. Schemat kompresji w algorytmie to potok, w którym ta transformacja jest tylko jednym z etapów, ale jednym z głównych. Algorytm zawiera następujące główne operacje:

1. Przenieś do przestrzeni kolorów YCbCr. Tutaj Y to składowa luminancji, Cb i Cr to składowe chrominancji. Ludzkie oko jest bardziej wrażliwe na jasność niż na kolor. Dlatego ważniejsze jest zachowanie większej dokładności podczas nadawania Y niż podczas nadawania Cb i Cr.

2. Dyskretna transformata kosinusowa (DCT). Obraz jest podzielony na bloki 8 × 8. Dyskretna transformata kosinusowa jest stosowana do każdego bloku (oddzielnie dla składowych Y, Cb i Cr).

3. Redukcja składowych wysokoczęstotliwościowych w matrycach DCT. Ludzkie oko prawie nie zauważa zmian w składowych wysokich częstotliwości, dlatego współczynniki odpowiedzialne za wysokie częstotliwości mogą być przechowywane z mniejszą dokładnością.

4. Zygzakowate uporządkowanie macierzy. Jest to specjalny przebieg matrycy do uzyskania sekwencji jednowymiarowej. Najpierw pojawia się element T00, następnie T01, T10, T1. Ponadto, dla typowych obrazów fotorealistycznych, najpierw będą niezerowe współczynniki odpowiadające składowym niskoczęstotliwościowym, a następnie dużo zer (składowe wysokoczęstotliwościowe).

5. Kompresja najpierw metodą RLE, a następnie metodą Huffmana.

Algorytm odzyskiwania obrazu działa w odwrotnej kolejności. Współczynnik kompresji wynosi od 5 do 100 lub więcej razy. Jednocześnie jakość wizualna większości fotorealistycznych obrazów pozostaje na dobrym poziomie nawet po 15-krotnej kompresji. Algorytm i format są najczęściej używane do przesyłania i przechowywania obrazów w pełnym kolorze.

Transformacja falkowa sygnałów jest uogólnieniem klasycznej transformaty Fouriera. Termin „falka” (falka) w tłumaczeniu z angielskiego oznacza „mała (krótka) fala”. Falki to ogólna nazwa rodzin funkcji matematycznych pewna forma, które są lokalne w czasie i częstotliwości, i w których wszystkie funkcje są uzyskiwane z jednej funkcji bazowej za pomocą jej przesunięć i rozwinięć wzdłuż osi czasu.

W algorytmach kompresji stratnej z reguły wszystkie operacje potoku kompresji z wymianą dyskretna transformacja Fouriera na dyskretnej transformacie falkowej. Transformaty falkowe mają bardzo dobrą lokalizację częstotliwościowo-przestrzenną i przewyższają tradycyjne transformaty Fouriera w tym wskaźniku. W takim przypadku możliwe staje się zastosowanie silniejszej kwantyzacji, poprawiającej właściwości sekwencji do późniejszej kompresji. Algorytmy kompresji obrazu oparte na tej transformacji, przy takim samym współczynniku kompresji, wykazują lepsze wyniki w zachowaniu jakości obrazu.

literatura

46. ​​i wsp. Szybkie algorytmy w cyfrowym przetwarzaniu obrazu. - M.: Radio i łączność, 1984. - 224 s.

47. Przetwarzanie obrazu Soyfera. Część 2. Metody i algorytmy. - Soros Educational Journal nr 3, 1996.

48. Szum chrząstki z obrazów opartych na algorytmach nieliniowych z wykorzystaniem statystyki rang. - Jarosławski Uniwersytet stanowy, 2007.

49. Systemy nadzoru telewizyjnego Andreev. Część druga. Arytmetyka - podstawy logiczne i algorytmy. Instruktaż. - St. Petersburg: St. Petersburg, GUITMO, 2005. - 88s.

51. Wprowadzenie do cyfrowego przetwarzania sygnałów (podstawy matematyczne) - M .: Moskiewski Uniwersytet Państwowy, Laboratorium Grafiki Komputerowej i Multimediów, 2002. - http://pv. *****/dsp/dspkurs. pdf, http://dsp-book. *****/dspkurs. djvu, http://geogin. *****/archiv/dsp/dsp4.pdf.

1i. i inne algorytmiczne podstawy grafiki rastrowej. – Internetowa Wyższa Szkoła Informatyki. – http://www. *****/goto/kurs/rastergraph/

2i. Lukin-Electronic Systems: Notatki z wykładów. ITMO, 2004. - Petersburg, ITMO IFF, 2004. - http://iff. *****/kons/oes/KL. htm

O zauważonych błędach i propozycjach uzupełnień: *****@***ru.

Prawo autorskie©2008DawydowA.V.

Szum cyfrowy to wada obrazu, czyli losowo rozmieszczone obszary, które są zbliżone do rozmiaru piksela i różnią się od oryginalnego obrazu jasnością lub kolorem. Redukcja szumów odgrywa ważną rolę w transmisji, przetwarzaniu i kompresji sekwencji wideo i obrazów.

Szum wideo może wystąpić z kilku powodów:

1. Niedoskonały sprzęt do przechwytywania wideo.

2. Złe warunki fotografowania - takie jak fotografowanie/filmowanie w nocy, fotografowanie przy złej pogodzie.

3. Zakłócenia podczas transmisji kanałami analogowymi - zakłócenia od źródeł pól elektromagnetycznych, szum wewnętrzny elementów aktywnych (wzmacniaczy) linii transmisyjnej. Przykładem jest sygnał telewizyjny.

4. Niedokładności filtrowania podczas wyodrębniania sygnałów luminancji i różnicy kolorów z analogowego sygnału kompozytowego itp.

Poziom szumu na obrazie może wahać się od prawie niezauważalnej plamki na zdjęciu cyfrowym wykonanym przy dobrym świetle, po zdjęcia astronomiczne, na których szum ukrywa większość przydatna informacja, które można uzyskać jedynie poprzez żmudną obróbkę obrazu.

Szum może być różnego rodzaju, w zależności od charakteru losowego rozkładu szumu na obrazie. W praktyce najczęściej występującymi typami są:

Biały szum gaussowski

Jednym z najczęściej spotykanych szumów jest addytywny szum gaussowski, który charakteryzuje się dodawaniem wartości o rozkładzie normalnym i zerowej średniej do każdego piksela obrazu. Termin „addytywny” oznacza, że ​​ten rodzaj szumu jest dodawany do sygnału użytecznego. Występuje, gdy warunki odbioru sygnału są złe.

szum cyfrowy

Przyczyna szumu cyfrowego najczęściej utożsamiana jest z cechami sprzętu używanego do fotografowania – zwykle z niedostateczną światłoczułością matrycy. Ten rodzaj szumu charakteryzuje się zastąpieniem niektórych pikseli w obrazie wartościami zmiennej stałej lub losowej. Jeśli jasność kropek jest w przybliżeniu równa, szum cyfrowy jest również nazywany „impulsywnym”. Jeśli intensywność kropek może zmieniać się z czarnego na biały, ten szum nazywany jest szumem soli i pieprzu.

Zazwyczaj ten rodzaj szumu wpływa tylko na niewielką liczbę pikseli obrazu.

Hałas złożony

Znacznie rzadziej zdarzają się przypadki, gdy obraz w równej głośności jest zaszumiony z szumem gaussowskim i losowymi impulsami. Ten zestaw nazywa się szumem złożonym.

Wady skanowania obrazu

Na obrazie mogą również pojawić się niepożądane efekty, takie jak pęknięcia, zadrapania, siniaki. Artefakty te nie mają jednorodnej struktury, określenie ich kształtu i lokalizacji jest w zasadzie poza analizą matematyczną. Defekty tego rodzaju można zwalczać jedynie za pomocą ręcznej obróbki obrazu, dlatego nie są one uwzględniane w niniejszym opracowaniu.

Algorytmy usuwania szumów

Istnieje wiele algorytmów usuwania szumów z obrazów, z których mogą korzystać nie tylko specjalne programy do przetwarzania, ale także niektóre aparaty fotograficzne i wideo. Mimo to wciąż nie ma uniwersalnego algorytmu filtrowania, ponieważ podczas przetwarzania obrazu zawsze istnieje konieczność wyboru między stopniem eliminacji niepożądanych efektów a zachowaniem drobnych szczegółów, które mają cechy zbliżone do szumu. Ponadto algorytm, który z łatwością radzi sobie z jednym rodzajem szumu, może zepsuć obraz tylko innym rodzajem szumu.

Rozważmy niektóre z najbardziej znanych algorytmów redukcji szumów obrazu.

Liniowe uśrednianie pikseli

Najprostszym pomysłem na usunięcie szumu jest uśrednienie wartości pikseli w przestrzennym sąsiedztwie. Ponieważ szum zmienia się niezależnie od piksela do piksela, szum sąsiednich pikseli zniesie się po zsumowaniu. Ustawiane jest prostokątne okno, które jest kolejno nakładane na każdy piksel obrazu. Wartość środkowego piksela jest obliczana na podstawie analizy wszystkich sąsiednich pikseli, które mieszczą się w obszarze okna. W związku z tym im większe zostanie zrobione okno, tym ostatecznie uzyskana zostanie bardziej średnia wartość, co prowadzi do silnego efektu rozmycia.

W najprostszej wersji analiza sąsiednich pikseli polega na znalezieniu ich średniej arytmetycznej. Aby zmniejszyć wpływ pikseli, które nie należą do tego samego obszaru, co rozważany (na przykład ciemny kontur na jasnym tle), możesz wprowadzić pewien próg liczbowy i wziąć pod uwagę przy obliczaniu tylko tych sąsiadów, których różnica od centralny piksel nie przekracza tego progu. Im większa wartość progowa, tym silniejsze będzie uśrednianie. Rozważany wariant można skomplikować wprowadzając współczynniki wagowe dla każdego sąsiedniego piksela, w zależności od ich odległości od środka rozpatrywanego obszaru.

Metodę tę można również zastosować w dziedzinie czasu, uśredniając każdy piksel z sąsiednich klatek strumienia wideo (każdy piksel zostanie uśredniony z pikseli znajdujących się w tej samej pozycji w sąsiednich klatkach).

Algorytm ten jest bardzo prosty, ale nie daje dobrych rezultatów, prowadząc jednocześnie do silnego rozmycia szczegółów obrazu.

Filtr Gaussa

Ma zasadę działania podobną do poprzedniej metody i również należy do grona filtrów antyaliasingowych. Redukcja szumów za pomocą liniowego filtra uśredniającego ma jednak istotną wadę: wszyscy sąsiedzi przetwarzanego piksela mają taki sam wpływ na wynik, niezależnie od ich odległości od niego. Filtr Gaussa uśrednia również środkowy piksel i jego sąsiadów w określonym obszarze, tyle że dzieje się to zgodnie z pewnym prawem, które jest ustalane przez funkcję Gaussa.

Gdzie parametr y określa stopień rozmycia, a parametr A zapewnia normalizację. W rezultacie centralny piksel rozpatrywanego obszaru będzie miał najwyższą wartość odpowiadającą szczytowi rozkładu Gaussa. Wartości pozostałych elementów będą miały coraz mniejszy wpływ w miarę oddalania się od centrum.

Filtr macierzowy obliczony według podanego wzoru jest nazywany filtrem Gaussa; im większy jego rozmiar, tym silniejsze rozmycie (dla ustalonego y). Ponieważ ten filtr jest rozdzielny, można go przedstawić jako:

Wynika z tego, że splot można wykonać sekwencyjnie w wierszach i kolumnach, co prowadzi do znacznego przyspieszenia metody dla dużych rozmiarów filtrów.

Algorytm 2Dcleaner

Zastępuje każdy piksel na obrazie średnią wartością sąsiednich pikseli, wykonanych na obszarze ograniczonym pewnym promieniem. W tym przypadku nie są brane pod uwagę wszystkie punkty, które mieszczą się w promieniu, ale tylko te, których wartość różni się od centralnego piksela nie więcej niż o pewną z góry określoną wartość (próg). Dzięki temu obszary o jednolitym kolorze są bardziej rozmyte niż ostre krawędzie obiektów. Zmniejsza to niski poziom szumów w obrazie, zachowując nienaruszone drobne szczegóły.

Filtrowanie medianowe

Algorytmy liniowe okazują się bardzo skuteczne w tłumieniu szumu gaussowskiego, gdy sąsiednie piksele, mimo że mają pewien losowy rozrzut wartości, nadal mieszczą się w pewnej wartości średniej charakterystycznej dla obszaru, do którego należą. Czasami jednak trzeba mieć do czynienia z obrazami zniekształconymi przez inne rodzaje zakłóceń. Przykładem takiej interferencji jest szum impulsowy, który objawia się obecnością losowo rozrzuconych punktów o przypadkowej jasności na obrazie. Uśrednianie w tym przypadku „rozmazuje” każdy taki punkt na sąsiednich pikselach, co prowadzi do pogorszenia jakości obrazu.

Filtrowanie medianowe to standardowy sposób tłumienia szumu impulsowego. Ta nieliniowa metoda przetwarzania obrazu eliminuje skoki, ale w przeciwieństwie do algorytmów uśredniania liniowego pozostawia nienaruszone monotonne sekwencje pikseli. Dzięki temu filtry medianowe są w stanie zachować bez zniekształceń kontury obiektów i różnice między obszarami o różnej jasności, jednocześnie skutecznie tłumiąc nieskorelowane szumy i drobne szczegóły.

Zasada filtracji: Ustawiane jest okno o nieparzystym rozmiarze, sekwencyjnie nakładane na każdy piksel obrazu. Wśród wszystkich pikseli, które mieszczą się w rozpatrywanym obszarze, w tym w centralnym, poszukiwana jest wartość mediany, która ostatecznie jest przypisywana do centralnego piksela obszaru. Mediana w tym przypadku jest środkowym elementem tablicy posortowanych wartości pikseli należących do obszaru. Nieparzysty rozmiar okna jest wybierany dokładnie tak, aby zapewnić istnienie środkowego piksela.

Możliwe jest również użycie filtra medianowego w celu wyeliminowania białego szumu gaussowskiego na obrazie. Jednak badanie tłumienia szumów za pomocą filtrowania medianowego pokazuje, że jego skuteczność w rozwiązywaniu tego problemu jest mniejsza niż w przypadku filtrowania liniowego.

Filtrowanie medianowe nie jest pozbawione wad właściwych dla większości filtrów redukcji szumów - zwiększenie rozmiaru maski w celu poprawy stopnia redukcji szumów powoduje zmniejszenie ostrości obrazu i rozmycie jego konturów. Negatywne skutki można jednak zminimalizować stosując filtrowanie medianowe z dynamicznym rozmiarem maski (addytywne filtrowanie medianowe) Zasada pozostaje ta sama, jedynie wielkość przesuwanego okna filtrowania może się zmieniać w zależności od jasności sąsiednich pikseli.

Wyostrzanie obrazu

Prawie wszystkie algorytmy redukcji szumów w obrazie prowadzą do jego rozmycia, w wyniku czego giną drobne szczegóły, a percepcja obrazu jest utrudniona. Aby częściowo zrekompensować ten negatywny efekt i przywrócić utracony kontrast konturu i przejścia kolorów, filtr wyostrzający obraz jest w stanie. Ostrość może też zależeć od wielu innych czynników - od jakości obiektywu, od zastosowanej przysłony, od grubości filtra antymorowego, który znajduje się na matrycach większości aparatów cyfrowych, który w różnym stopniu rozmywa obraz. Również ostrość obrazów często trzeba zwiększyć po zmniejszeniu ich rozmiaru, ponieważ w tym przypadku nieuchronnie traci się część informacji, a wraz z nią ostrość konturów.

Unsharp masking to technika, która poprzez zwiększenie kontrastu przejść między tonami w obrazie poprawia jego percepcję wizualną dzięki złudzeniu wyostrzenia. W rzeczywistości ostrość pozostaje na tym samym poziomie, ponieważ w zasadzie nie da się przywrócić utraconych szczegółów obrazu, ale poprawa kontrastu między obszarami o różnej jasności prowadzi do tego, że obraz jest odbierany jako wyraźniejszy.

Rysunek 5.1 - Ilustracja koncepcji „ostrości konturu”

Ostrość obrazu zależy od wielkości różnicy jasności między obszarami (W) tworzącymi jego kontury oraz od ostrości zmiany tej różnicy (H).

Technika maskowania nieostrego została po raz pierwszy zastosowana do obróbki fotografii filmowych. Metoda przystosowana do cyfrowej obróbki obrazu niewiele różni się od pierwotnej: od obrazu odejmuje się tzw. „maskę nieostrości” – jego rozmytą i odwróconą kopię. Rezultatem jest nowy obraz zawierający tylko jasne kontury oryginału. Ciemne kontury można uzyskać, po prostu odwracając wynik.

Jeśli dodatkowo odejmiesz ciemne krawędzie od oryginalnego obrazu i dodasz jasne krawędzie, uzyskasz znaczny wzrost kontrastu przy każdej różnicy jasności.

Dowolny filtr redukcji szumów, taki jak filtr Gaussa, może być użyty do rozmycia oryginału w celu uzyskania „maski nieostrości”.

Rysunek 5.2 — Rezultat zastosowania maskowania nieostrego

Operacja splotu jest dość często stosowana w przetwarzaniu obrazów. Oprócz wyostrzania służy do rozmywania, zwiększania jasności, rozjaśniania itp.

Konwolucja obrazu to operacja obliczenia nowej wartości danego piksela, która uwzględnia wartości otaczających go pikseli sąsiednich. W ogólnym znaczeniu termin ten oznacza pewną czynność wykonywaną na każdej części obrazu.

Głównym elementem splotu jest maska ​​splotu - jest to macierz (o dowolnym rozmiarze i proporcjach). Często taka maska ​​​​nazywana jest filtrem, rdzeniem, szablonem lub oknem. Wartości elementów macierzy są zwykle nazywane współczynnikami.

Najczęściej jako jądro splotu używana jest macierz kwadratowa.

Przetwarzanie obrazu za pomocą operacji splotu odbywa się w następujący sposób: Centralny element macierzy, zwany „kotwicą”, jest sukcesywnie nakładany na każdy piksel obrazu. Nowa wartość rozpatrywanego piksela jest obliczana jako suma wartości sąsiednich pikseli pomnożona przez ich odpowiednie współczynniki maski splotu.

Otrzymany efekt zależy od wybranego jądra splotu.

Jądro filtra podwyższającego ma wartość większą niż 1 w punkcie (0, 0), przy czym suma wszystkich wartości jest równa 1. Na przykład filtr podwyższający to filtry z jądrami podanymi przez macierze:

Efekt zwiększenia kontrastu uzyskuje się dzięki temu, że filtr uwydatnia różnicę między intensywnościami sąsiednich pikseli, usuwając te intensywności od siebie. Efekt ten będzie tym silniejszy, im większa będzie wartość członu centralnego jądra.

Liniowe filtrowanie ze zwiększonym kontrastem oparte na splotach może powodować widoczne kolorowe halo wokół krawędzi obrazu.

Kompensacja różnicy światła

Problemy z oświetleniem obrazu najczęściej pojawiają się, gdy w kadr wchodzą okna, słońce lub inne nieuregulowane źródła światła.

Taka sytuacja nazywana jest „nadmiarem światła” i prowadzi do tego, że z powodu zbyt jasnego oświetlenia przyporowego gubią się detale i kolory obiektów znajdujących się na tle obiektów zbyt jasnych, przez co stają się one trudne do rozróżnienia.

Często spotyka się również sytuację braku światła. Może to być spowodowane fotografowaniem w ciemnych pomieszczeniach o słabym oświetleniu, a także ograniczonym zakresem czułości sprzętu wideo.

Algorytm Retinex o pojedynczej skali

Podczas próby rozjaśnienia obrazu poprzez zwiększenie jasności każdego piksela o określoną stałą wartość początkowo jasne obszary mogą okazać się całkowicie prześwietlone.

W takich przypadkach wymagane jest zastosowanie „inteligentnej” korekcji kolorów, która byłaby w stanie wyrównać oświetlenie obrazu, przetwarzając obszary jasne w mniejszym stopniu niż ciemne.

Wymagania te spełnia algorytm Single Scale Retinex oparty na zasadach działania receptorów siatkówki. Głównym celem algorytmu jest podzielenie obrazu na składowe, które osobno odpowiadają za oświetlenie i detale. Ponieważ problemy w obrazie są związane z oświetleniem sceny, to po otrzymaniu komponentu odpowiedzialnego za oświetlenie, możliwe staje się jego przekształcenie w oderwaniu od obrazu, a tym samym znaczne podniesienie jego jakości.

Każdy obraz można przedstawić jako iloczyn sygnału o wysokiej częstotliwości (odbicie - R) i sygnału o niskiej częstotliwości (natężenie oświetlenia - I).

S(x,y) = I(x,y) * R(x,y)(5.6)


Rysunek 5.3 – Reprezentacja obrazu w algorytmie Retinex.

Przybliżony obraz oświetlenia można uzyskać stosując filtr dolnoprzepustowy – innymi słowy wystarczy rozmyć oryginalny obraz np. filtrem Gaussa.

gdzie G — filtr Gaussa

Ponieważ logarytm sygnału nie zmienia częstotliwości, a ze względu na właściwości funkcji logarytmicznej (logarytm iloczynu jest równy sumie logarytmów czynników), zadanie wydzielenia iloczynu sygnałów można uproszczone do problemu rozdzielania sumy sygnałów.

Następnie pozostaje tylko wziąć wykładnik z odebranego sygnału, aby przywrócić go do pierwotnej skali amplitudy. Powstały komponent o wysokiej częstotliwości można dodać do rozmytego i rozjaśnionego oryginalnego obrazu, który działa jak nowy model oświetlenia.

Efekt uzyskany z wyrównania światła może być zbyt silny (ciemne obszary będą miały taką samą jasność jak jasne). Aby zmniejszyć efekt, możesz po prostu wymieszać przetworzony obraz z oryginałem w określonej proporcji.

Korekcja gamma

Pierwotnym celem korekcji gamma jest kompensacja różnic w wyświetlanych kolorach na różnych urządzeniach wyjściowych, tak aby obraz wyglądał tak samo na różnych monitorach. Ze względu na nieliniowy charakter zastosowanej funkcji potęgowej, korekcja gamma umożliwia również zwiększenie kontrastu ciemnych obszarów obrazu bez podkreślania jasnych szczegółów i bez utraty widoczności granic obiektów obrazu.

Informacje o jasności w formie analogowej w telewizji, jak również w w formie cyfrowej w większości popularnych formatów graficznych, zapisanych w skali nieliniowej. Jasność piksela na ekranie monitora można uznać za proporcjonalną

gdzie I to jasność piksela na ekranie wyświetlacza (lub jasność składowych koloru, osobno czerwonego, zielonego i niebieskiego),

V to numeryczna wartość koloru od 0 do 1, oraz

r – wskaźnik korekcji gamma.

Jeśli r jest mniejsze niż 1, wówczas charakterystyka przenoszenia poziomu będzie wypukła, a wynikowy obraz będzie jaśniejszy niż oryginał. Jeśli r jest większe niż 1, wówczas charakterystyka przenoszenia poziomu będzie wklęsła, a wynikowy obraz będzie ciemniejszy niż oryginał.

Domyślnie parametr r wynosi 1, co odpowiada liniowej transmisji poziomów i braku korekcji gamma.

Wybór konturu obrazu

Analiza konturów może służyć do opisywania, rozpoznawania, porównywania i wyszukiwania obiektów graficznych reprezentowanych jako zewnętrzne kontury. Ponieważ użycie konturów wyklucza z rozważań punkty wewnętrzne obiektu, może to znacznie zmniejszyć złożoność obliczeniową i algorytmiczną tych operacji.

Rysunek 5.4 - Zmiana rodzaju funkcji mocy w zależności od parametru r

Kontur obiektu to lista kropek reprezentujących krzywą na obrazie oddzielającą obiekt od tła. Najczęściej następuje skok jasności lub koloru wzdłuż konturu.

Aby uprościć wyszukiwanie konturów na obrazie, możesz go wstępnie zbinaryzować.

Filtr Sobela wyróżnia krawędzie obiektów na podstawie ich jasności. Ponieważ składnik koloru nie jest brany pod uwagę, obrazy muszą najpierw zostać przekonwertowane na skalę szarości.

Filtr Sobela jest stosowany sekwencyjnie do każdego piksela, obliczając przybliżoną wartość jego gradientu jasności. Gradient dla każdego punktu obrazu (funkcja jasności) jest dwuwymiarowym wektorem, którego składowymi są poziome i pionowe pochodne jasności obrazu.

W każdym punkcie obrazu wektor gradientu jest zorientowany w kierunku największego wzrostu jasności, a jego długość odpowiada wielkości zmiany jasności. Dane te pozwalają przyjąć założenie o prawdopodobieństwie znalezienia rozpatrywanego punktu na granicy danego obiektu, a także o orientacji tej granicy.

To. wynikiem działania operatora Sobela w punkcie w obszarze stałej jasności będzie wektor zerowy, aw punkcie leżącym na granicy obszarów o różnej jasności wektor przecinający granicę w kierunku zwiększania jasności.

Aby obliczyć przybliżone wartości pochodnych w każdym punkcie obrazu, filtr Sobela wykorzystuje splot z macierzą 3×3.

Współczynniki macierzy Sobela:

Ostateczną wartość gradientu oblicza się w przybliżeniu według wzoru:

|G| = |Gx| + |Gy|

Wykrywacz granic Kenny'ego

Chociaż praca Kenny'ego została wykonana w początkach wizji komputerowej (1986), detektor krawędzi Kenny'ego jest nadal jednym z najlepszych detektorów dzisiaj. Metoda Kenny'ego jest algorytmem wieloetapowym i obejmuje następujące kroki:

1. Oczyszczanie obrazu z szumów i zbędnych detali.

2. Oczyszczenie obrazu z szumu i zbędnych detali.

3. Wyszukaj gradienty obrazu, na przykład za pomocą operatora Sobela.

4. Tłumienie niemaksimów. Jako granice zaznaczono tylko maksima lokalne.

5. Podwójne filtrowanie progowe. Potencjalne granice są określone przez progi.

6. Śledzenie ścieżek (Połącz krawędzie ze ścieżkami)

Ponieważ najmniejszy szum w obrazie może naruszyć integralność jego konturów, zaleca się filtrowanie obrazu przy użyciu dowolnej metody redukcji szumów przed rozpoczęciem wyszukiwania. Ze względu na dużą szybkość działania i łatwość implementacji najczęściej stosowany jest filtr Gaussa. Krawędzie obrazu mogą znajdować się w różnych kierunkach, więc algorytm Kenny'ego wykorzystuje cztery filtry do wykrywania krawędzi poziomych, pionowych i ukośnych. Za pomocą operatora wykrywania krawędzi (takiego jak operator Sobela) uzyskuje się wartość pierwszej pochodnej w kierunku poziomym (Gy) iw kierunku pionowym (Gx). Z tego gradientu możesz uzyskać kąt kierunku granicy:

Kąt kierunku obramowania jest zaokrąglany do jednego z czterech kątów reprezentujących pion, poziom i dwie przekątne (na przykład 0, 45, 90 i 135 stopni). Jako granice deklarowane są tylko te piksele, w których osiągnięto lokalne maksimum gradientu w kierunku wektora gradientu. Wartość kierunku musi być wielokrotnością 45°. Po stłumieniu non-maxima krawędzie stają się bardziej precyzyjne i cienkie.

W kolejnym kroku filtrowanie progowe określa dla każdego rozpatrywanego piksela, czy należy on do granic obrazu. Im wyższy próg, tym bardziej jednolite będą znalezione kontury, jednak słabe krawędzie można zignorować. Z drugiej strony zmniejszanie progu zwiększa podatność algorytmu na szum. Wykrywanie krawędzi Kenny'ego wykorzystuje dwa progi filtrowania: jeśli wartość piksela przekracza górną granicę, to trwa maksymalna wartość(granica jest uznawana za prawidłową), jeśli poniżej - piksel jest wygaszony, punkty o wartości mieszczącej się w przedziale między progami przyjmują stałą wartość średnią (zostaną one uszczegółowione w kolejnym kroku).

Ostatnim etapem obróbki obrazu jest łączenie poszczególnych krawędzi w jednolite kontury. Piksele, które otrzymały średnią wartość w poprzednim kroku, są albo tłumione (jeśli nie dotykają żadnej z już wykrytych krawędzi), albo dołączane do odpowiedniego konturu.

Segmentacja

Większość obrazów uzyskiwanych ze sprzętu fotograficznego i wideo to obrazy rastrowe, czyli składające się z kolorowych kropek ułożonych w prostokątną siatkę. Jednak ludzie postrzegają otaczający ich świat jako zbiór stałych obiektów, a nie matrycę kropek. Ludzki mózg jest w stanie połączyć odmienne szczegóły obrazu w jednorodne obszary, wyraźnie dzieląc go na obiekty na poziomie podświadomości. Proces ten nazywany jest segmentacją i może być zaimplementowany w oprogramowaniu przy rozwiązywaniu problemu komputerowej analizy obrazu i rozpoznawania wzorców. Segmentacja dokonywana jest w pierwszych etapach analizy, a jakość jej wykonania może mieć duży wpływ na jej szybkość i dokładność.

Metody segmentacji można podzielić na dwie klasy: automatyczne – niewymagające interakcji ze strony użytkownika oraz interaktywne – wykorzystujące dane wprowadzane przez użytkownika bezpośrednio w procesie.

W pierwszym przypadku nie wykorzystuje się żadnych informacji a priori o właściwościach regionów, ale nakłada się pewne warunki na samą partycję obrazu (na przykład wszystkie regiony muszą być jednolite pod względem koloru i tekstury). Ponieważ to sformułowanie problemu segmentacji nie wykorzystuje informacji a priori o przedstawionych obiektach, metody z tej grupy są uniwersalne i mają zastosowanie do dowolnych obrazów.

Aby z grubsza oszacować jakość metody w konkretnym zadaniu, zwykle ustala się kilka właściwości, które powinna mieć dobra segmentacja:

§ Jednorodność regionów (jednolitość koloru lub tekstury);

§ odmienność sąsiednich regionów;

§ gładkość granicy regionu;

§ niewielka liczba małych „dziur” w regionach;

Segmentacja progowa

Przetwarzanie progowe to najprostsza metoda zorientowana na przetwarzanie obrazu, którego poszczególne jednorodne obszary różnią się średnią jasnością. Jeśli jednak obraz jest nierównomiernie oświetlony, niektóre obiekty mogą pasować do intensywności tła, co spowoduje, że segmentacja progowa będzie nieskuteczna.

Najprostszym i jednocześnie często stosowanym typem segmentacji progowej jest segmentacja binarna, w której na obrazie rozróżniane są tylko dwa rodzaje jednorodnych obszarów.

W tym przypadku transformacja każdego punktu obrazu źródłowego na obraz wyjściowy odbywa się zgodnie z zasadą:

gdzie x0 jest jedynym parametrem przetwarzania zwanym progiem. Poziomy jasności wyjściowej y0 i y1 mogą być dowolne, pełnią jedynie funkcję znaczników, za pomocą których zaznacza się wynikową mapę - przypisując jej punkty odpowiednio do klas K1 lub K2. Jeśli otrzymany preparat jest przygotowany do percepcji wzrokowej, to często ich wartości odpowiadają poziomom czerni i bieli. Jeśli istnieją więcej niż dwie klasy, podczas progowania należy określić rodzinę progów, oddzielającą od siebie jasności różnych klas.

Segmentacja progowa dobrze nadaje się do wybierania niewielkiej liczby nie przecinających się obiektów na obrazie, które mają jednolitą strukturę i wyraźnie wyróżniają się na tle. Wraz ze wzrostem stopnia niejednorodności obrazu, a co za tym idzie liczby segmentów i ich złożoności, ten rodzaj segmentacji staje się nieefektywny.

Segmentacja oparta na partycjonowaniu grafu

Metody teorii grafów są jednym z najprężniej rozwijających się obszarów segmentacji obrazów.

Ogólna idea metod tej grupy jest następująca. Obraz jest reprezentowany jako wykres ważony z wierzchołkami w punktach obrazu. Waga krawędzi wykresu odzwierciedla w pewnym sensie podobieństwo punktów (odległość między punktami wzdłuż pewnej metryki). Podział obrazu jest modelowany przez cięcia grafów.

Zwykle w metodach teorii grafów wprowadza się funkcjonał cięcia „kosztu”, który odzwierciedla jakość wynikowej segmentacji. W ten sposób problem podziału obrazu na jednorodne obszary sprowadza się do problemu optymalizacji polegającego na znalezieniu minimalnego cięcia kosztów na wykresie. Takie podejście pozwala, oprócz jednolitości koloru i tekstury segmentów, kontrolować kształt segmentów, ich rozmiar, złożoność granic itp.

Aby znaleźć minimalną redukcję kosztów, stosuje się różne metody: algorytmy zachłanne (na każdym kroku wybierana jest krawędź tak, aby całkowity koszt cięcia był minimalny), metody programowania dynamicznego (gwarantuje się, że wybierając optymalną krawędź na każdym kroku, dojdziemy do optymalnej ścieżki), algorytm Dijkstra itp.

Interpolacja

W Grafika komputerowa metoda interpolacji jest często stosowana w procesie przeskalowania obrazów. Zmieniając liczbę pikseli obrazu, interpolacja pomaga uniknąć nadmiernej pikselizacji obrazu, gdy jest on powiększony, lub utraty ważnych szczegółów, gdy jest pomniejszany.

Podczas procesu interpolacji między pikselami obrazu wstawiane są dodatkowe punkty, których szacowany ton i kolor obliczany jest za pomocą specjalnego algorytmu opartego na analizie dostępnych danych z sąsiednich obszarów. Niestety, ponieważ każda interpolacja jest tylko przybliżeniem, obraz niezmiennie traci jakość za każdym razem, gdy jest interpolowany.

Interpolacja najbliższego sąsiada

Algorytm ten jest najprostszym rodzajem interpolacji, po prostu zwiększając każdy piksel obrazu do wymaganej skali. Wymaga najmniejszego czasu przetwarzania, ale prowadzi do najgorszych wyników.

Interpolacja dwuliniowa

Ten rodzaj interpolacji jest wykonywany dla każdej współrzędnej siatki dwuwymiarowej. Obraz traktowany jest jako płaszczyzna, kolor jako trzeci wymiar. Jeśli obraz jest kolorowy, interpolacja jest przeprowadzana osobno dla trzech kolorów. Dla każdego nieznanego punktu na nowym obrazie interpolacja dwuliniowa bierze pod uwagę otaczający go kwadrat czterech znanych pikseli. Średnia ważona tych czterech pikseli jest używana jako wartość interpolowana. W rezultacie obrazy wyglądają na znacznie gładsze niż wynik metody najbliższego sąsiada.

Interpolacja dwuliniowa dobrze sprawdza się przy całkowitych, dużych wartościach współczynników skalowania, jednak dość mocno rozmywa ostre krawędzie obrazu.

Interpolacja dwusześcienna idzie o krok dalej niż dwuliniowa, biorąc pod uwagę tablicę otaczających pikseli 4x4 – w sumie 16. Ponieważ są włączone różne odległości z nieznanego piksela, najbliższe piksele otrzymują większą wagę w obliczeniach. Interpolacja dwusześcienna daje znacznie ostrzejsze obrazy niż poprzednie dwie metody i jest prawdopodobnie najlepsza pod względem czasu przetwarzania i jakości wyjściowej. Z tego powodu stała się standardem w wielu programach do edycji obrazu (m.in. Adobe Photoshop), sterownikach drukarek oraz wbudowanej interpolacji aparatu.

Przeskalowany obraz może stać się znacznie mniej ostry. Algorytmy interpolacji, które lepiej zachowują ostrość, są również bardziej podatne na efekt mory, podczas gdy te, które eliminują efekt mory, zwykle dają bardziej miękkie rezultaty. Niestety, nie da się uniknąć tego skalowania kompromisu.

Jeden z najlepsze sposoby Aby temu zaradzić, natychmiast po skalowaniu zastosuj maskę wyostrzającą, nawet jeśli oryginał został już wyostrzony.

5.2 Uzasadnienie wyboru algorytmów zastosowanych w podsystemie

Głównym wymaganiem dla opracowanego pakietu oprogramowania było zminimalizowanie opóźnienia odtwarzania strumienia wideo podczas jego wstępnego przetwarzania na klastrze obliczeniowym. Ponadto strzelanie może odbywać się w każdych warunkach, co oznacza, że ​​w krótkim czasie konieczne było zaimplementowanie dużej liczby prostych filtrów neutralizujących różne negatywne efekty. Ponadto konieczne było zbadanie w krótkim czasie dużej liczby negatywnych czynników pojawiających się na filmie i wdrożenie prostych filtrów, aby je zneutralizować. Algorytmy spełniające przedstawione wymagania powinny być łatwo dostępne, dobrze zoptymalizowane, charakteryzować się wysoką niezawodnością, a jednocześnie być łatwe w implementacji. Funkcje biblioteki OpenCV mają takie właściwości, dlatego przy wyborze określonych metod implementacji filtrów przetwarzania strumienia wideo pierwszeństwo miały algorytmy zawarte w tej bibliotece w takiej czy innej formie.

Wszystkie algorytmy rozpatrywane w części teoretycznej końcowej pracy kwalifikacyjnej zostały zaimplementowane w formie testowej w celu porównania ich właściwości w praktyce. W szczególności preferowano kompromis między szybkością przetwarzania klatki strumienia wideo a jakością wyniku.

W rezultacie wybrano następujące algorytmy do implementacji filtrów przetwarzania strumienia wideo w klastrze obliczeniowym:

1. Wybrano algorytm Gaussa w celu usunięcia „dodatkowego białego szumu”. Jako najczęstsza metoda redukcji szumów jest bardzo dobrze zoptymalizowana i dzięki temu ma dużą prędkość.

2. Wybrano algorytm Gaussa w celu usunięcia „dodatkowego białego szumu”. Jako najpowszechniejsza metoda redukcji szumów jest bardzo dobrze zoptymalizowana, dzięki czemu charakteryzuje się dużą szybkością działania.

3. Wybrano filtrowanie medianowe w celu usunięcia szumu „impulsowego”. Ta metoda jest również dobrze zoptymalizowana i została specjalnie zaprojektowana w celu wyeliminowania szumu impulsywnego i soli z pieprzem.

4. Do wyostrzenia obrazu wybrano splot, który działa znacznie szybciej niż maskowanie nieostre, a jednocześnie daje akceptowalne rezultaty.

5. Biblioteka OpenCV nie zawiera algorytmów korekcji kolorów – w związku z tym postanowiono zaimplementować najpopularniejszy i dobrze udokumentowany algorytm Single Scale Retinex. Metoda ta charakteryzuje się bardzo dużą wydajnością, jednak wymaga optymalizacji w celu przyspieszenia pracy.

6. Jako metodę wykrywania krawędzi wybrano algorytm Kenny'ego, ponieważ daje on lepsze wyniki niż filtr Sobela.

7. Przedstawiony w bibliotece OpenCV algorytm segmentacji piramidalnej jest niezwykle powolny, dlatego zdecydowano się na zastosowanie wcześniej rozważanego algorytmu segmentacji na grafach.

8. interpolacja - wybrano metodę interpolacji dwusześciennej jako najrozsądniejszy kompromis pomiędzy szybkością pracy a jakością wyniku.

Instalacja i konfiguracja wykorzystywanego oprogramowania.

Użyty klaster obliczeniowy działał z systemem GNU Linux (Ubuntu)

Po zainstalowaniu systemu operacyjnego musisz zainstalować kilka bibliotek obsługujących odczyt i zapis plików graficznych, rysowanie na ekranie, pracę z wideo itp.

Instalowanie CMake'a

Projekt jest zbudowany przy użyciu CMake (wymaga wersji 2.6 lub wyższej). Możesz go zainstalować za pomocą polecenia:

apt-get zainstaluj cmake

Możesz także potrzebować następujących bibliotek:

build-essential libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev libeigen2-dev libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev

Instalowanie ffmpeg

Aby opencv poprawnie przetwarzał pliki wideo, musisz zainstalować bibliotekę ffmpeg. Odbywa się to za pomocą następujących poleceń:

1) Pobieranie kodów źródłowych biblioteki

wget http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz

2) Rozpakowanie archiwum z kodami źródłowymi

tar -xvzf ffmpeg-0.7-rc1.tar.gz

3) Konfiguracja biblioteki

skonfiguruj --enable-gpl --enable-version3 --enable-nonfree --enable-postproc

włącz-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb

Włącz-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab

Włącz-swscale --enable-shared

4) Budowanie i instalowanie biblioteki

Instalacja GTK

Wyświetlanie okien OpenCV wymaga zainstalowanego pakietu GTK+ 2.x lub nowszego, w tym pliki nagłówkowe(libgtk2.0-dev)

apt-get zainstaluj libgtk2.0-dev

Instalowanie Opencv

Po zainstalowaniu wszystkich powiązanych bibliotek instalacja opencv2.2 odbywa się za pomocą następujących poleceń:

1) Pobieranie kodów źródłowych biblioteki OpenCV

http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2

2) Rozpakowanie archiwum z kodami źródłowymi

tar -xvf OpenCV-2.2.0.tar.bz2

3) generowanie Makefile za pomocą CMake.

4) budowanie i instalowanie biblioteki OpenCV

5) Może być również konieczne ustawienie ścieżki do bibliotek

wyeksportuj LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Instalacja i kompilacja opracowanego pakietu oprogramowania

Trzeba skopiować kody źródłowe programów z dysku załączonego do niniejszej noty wyjaśniającej. Skopiuj plik wsadowy build_all.sh do tego samego folderu, a następnie uruchom go. Jeśli kompilator gcc jest zainstalowany w systemie, kompilacja odbędzie się automatycznie.

Istotą przetwarzania obrazu jest doprowadzenie oryginalnego obrazu sceny do postaci umożliwiającej rozwiązanie problemu rozpoznawania jej obiektów.

Ostatecznym celem przetwarzania obrazu w VS jest przygotowanie obiektów sceny do rozpoznania, tj. przypisywanie ich wizerunkom do określonych z góry klas. Pomimo różnorodności przedstawionych procedur konwersji informacji, w VS wyróżnia się zwykle trzy główne etapy przetwarzania:

1) wstępne przetwarzanie obrazu;

2) segmentacja;

3) opis.

Z kolei obróbka wstępna składa się z dwóch podstawowych etapów: tworzenia obrazu oraz jego kodowania (kompresji). Sekwencja kroków nie jest sztywna i zależy od konkretnego zadania.

Wstępne przetwarzanie obrazu

Wszystkie metody wstępnego przetwarzania obrazu w VS dzielą się na przestrzenne i częstotliwościowe. Metody przestrzenne to procedury działające bezpośrednio na pikselach obrazu. Jasność jest używana jako cecha obrazu. Y(x, y). Metody częstotliwościowe są związane z translacją obrazu na płaszczyznę zespoloną za pomocą transformaty Fouriera.

Rozważając procedury wstępnego przetwarzania, ograniczymy się tylko do metody przestrzenne, a oryginalny obraz zostanie uznany za obraz w skali szarości.

W pierwszym etapie wstępnej obróbki tworzenie obrazu. Tworzenie obrazu to procedura bezpośredniego uzyskiwania obrazu w postaci tablicy dyskretnych elementów znajdujących się w pamięci procesora wideo - pikseli tworzących matrycę lub kontur.

W STZ na etapie powstawania obrazu wybiera się próg jasności poprzez regulację oświetlenia i filtruje obraz.

Filtrowanie obraz jest najdłuższym i najbardziej złożonym etapem obróbki wstępnej. Ogólnie rzecz biorąc, filtrowanie rozwiązuje następujące główne zadania:

wygładzanie (tłumienie szumów o wysokiej częstotliwości, takich jak „śnieg”);

wzrost kontrastu;

wybór konturu.

Procedura wygładzania jest realizowana natychmiast po wybraniu progu jasności. Jego znaczenie polega na uśrednieniu według pewnej reguły wartości funkcji jasności Y(X, y) wewnątrz analizowanego fragmentu obrazu.

Filtr dolnoprzepustowy służy do eliminacji zakłóceń o wysokiej częstotliwości typu „śnieg”. niekorzyść filtrowanie dolnoprzepustowe oznacza pogorszenie kontrastu obrazu.

Segmentacja



W wyniku obróbki wstępnej obraz zawiera jedną lub więcej konturowych reprezentacji obiektów. Procedura rozdzielania tych konturów i łączenia ich z określonymi obiektami nazywa się segmentacja.

Jeżeli wiadomo a priori, że obraz zawiera kilka obiektów, procedura segmentacji przeprowadzana jest po ekstrakcji konturów przed etapem kodowania obrazu.

Algorytmy segmentacji z reguły opierają się na poszukiwaniu nieciągłości w konturze i podobieństwie obszarów. W pierwszym przypadku kontur zostaje znaleziony, a jego programowe obejście odbywa się zgodnie z ustaloną regułą. Jeśli kontur jest zamknięty, uważa się, że należy do obiektu. W drugim przypadku określane są obszary obrazu, które mają wspólne właściwości (na przykład taką samą jasność pikseli). Po znalezieniu takich obszarów są one przypisywane albo do tła, albo do obiektu.

Kodowanie obrazu

W przypadku systemów przetwarzających obrazy w skali szarości metodami przestrzennymi istnieją dwie główne metody kodowania:

· kodowanie samego obrazu metodą kodów długości serii;

· kodowanie konturu obrazu kodem łańcuchowym Freemana.

W obu przypadkach podczas kodowania następuje znaczne zmniejszenie ilości danych charakteryzujących obraz. Wydajność kodowania zależy od stopnia kompresji obrazu.

Istota kodowania metodą kodów długość serii, zaimplementowana przy użyciu algorytmu RLE, polega na reprezentowaniu obrazu jako jednorodnych segmentów linii skanowania, w których jasność i kolor pikseli są takie same. Ponadto każda seria charakteryzuje się odpowiednią wartością i długością serii (liczbą pikseli).

Aby zakodować bezpośrednio kontur obrazu, najczęściej stosuje się łańcuch. Kod Freemana(ryc. 6.22, B). W tym przypadku kontur obiektu, zaczynając od pewnego punktu, jest określony przez sekwencję wektorów, które przyjmują wartości dyskretne, przy czym moduł kąta nachylenia jest podzielny przez 45. Wartość modułu wynosi 2, jeśli kąt nachylenia wektora wynosi 45 , i 1, jeśli znajduje się w pozycji pionowej lub poziomej. Zmiana kierunku wektora podczas przejścia z jednego punktu krzywej do drugiego odzwierciedla charakter zmiany modelowanej krzywej.



Opis obrazu

Pod opis rozumie się definicję charakterystycznych parametrów obiektu - oznaki(dyskryminatorów) niezbędnych do jej wyboru spośród wszystkich, które tworzą scenę.

Ze względu na swój fizyczny charakter znaki dzielą się na globalne i lokalne. Funkcja globalna obrazy to cecha, którą można obliczyć dla dowolnego obrazu obiektu.

Znaki lokalne używany mniej; charakteryzują nie cały obraz, ale tylko jego część. Należą do nich kąt między dwiema warstwicami, liczba i parametry otworów w obrazie obiektu itp.

Rozpoznawanie obrazu

Uznanie to proces, w którym na podstawie zestawu cech określonego obrazu przedmiotu określa się jego przynależność do określonej klasy.

Rozpoznawanie realizuje funkcję wizualnej analizy obrazu.

Konwencjonalnie wszystkie metody rozpoznawania można podzielić na dwie grupy: teoretyczne i strukturalne. Najpowszechniejsze metody rozpoznania teoretycznego wykorzystują zasady teorii decyzji.

Niemożliwe jest określenie rzeczywistej wartości cech obiektu, ponieważ wartości różnią się przy każdym pomiarze. Dlatego zadanie rozpoznawania jest następujące: określenie prawdopodobieństwa przynależności obiektu do danej klasy.

Jeden z najciekawszych obszarów rozpoznawania wzorców w VS związany jest z rozwojem algorytmów rozpoznawania twarzy. Algorytm rozpoznawania (weryfikacji) jest zbliżony do algorytmu rejestracji. Cechy wyodrębnione z bieżącego obrazu są łączone w wektor cech, którego składowe są porównywane z odpowiadającymi im składowymi wszystkich wektorów znajdujących się w bazie danych.

Laboratorium nr 1

Algorytmy przetwarzania obrazu

Operacja splotu

Splot jest bardzo szerokim algorytmem, który może być wykorzystany zarówno do wstępnego przetwarzania obrazu, jak i do rozpoznawania i identyfikacji obiektów. Niech obraz będzie dany przez dwuwymiarową macierz jasności F" i macierz odpowiedzi impulsowej H. Matematycznie splot macierzy F z rdzeniem H można zdefiniować za pomocą następującego wzoru:

Gdzie M2xN2 - rozmiar macierzy jądra splotu. Rozmiar matrycy F równa się (M1+M2-1)x(N1+N2-1), gdzie M1xN1 - rozmiar oryginalnej matrycy F" . Matryca F otrzymuje się z oryginału poprzez dodawanie elementów na krawędziach matrycy według jakiejś reguły w celu doprowadzenia jej do wymaganego rozmiaru. Zwykle oryginalna matryca jest dopełniana zerami na krawędziach przez połowę szerokości matrycy. H w lewo iw prawo oraz odpowiednio o połowę wysokości w górę i tyle samo w dół. Następnie rozmiar wynikowej macierzy R będzie taki sam jak macierz F" .

Splot można obliczyć bezpośrednio, „przesuwając” jedną macierz po drugiej, jak już pokazano powyżej. na ryc. 1 pokazuje schemat obliczania splotu (rozmiar macierzy maski jest równy 3x3). Operator splotu można postrzegać jako macierz współczynników (masek), które są mnożone element po elemencie z wybranym fragmentem obrazu, a następnie sumowane w celu uzyskania nowej wartości przefiltrowanego elementu obrazu. Ta macierz może mieć dowolny rozmiar, niekoniecznie kwadratowy.

Ryż. 1. Implementacja operacji splotu.

Ćwiczenia

    Zaimplementuj algorytm wykonujący operację splotu oryginalnego obrazu z macierzą-maską.

    Rozmiar i rodzaj matrycy-maski ustala użytkownik.

    Użyj następujących macierzy masek, aby zaimplementować różne algorytmy przetwarzania obrazu:

    • do wygładzenia i stłumienia szumów na obrazie używana jest maska-matryca 3x3 o następującej postaci:

    aby podkreślić kontury, stosuje się maski matrycowe o następującej formie:

1/9*

    Do zaznaczania konturów służy maska ​​o następującej postaci:

4. Zaimplementuj filtr medianowy, który służy do tłumienia szumu punktowego i impulsowego. Piksel obrazu i jego sąsiedzi w rozpatrywanym obszarze są ułożeni w szeregi wariacyjne (w rosnących lub malejących wartościach pikseli), a środkowa wartość tego szeregu wariacyjnego jest wybierana jako nowa wartość piksela. Rezultatem filtrowania uśrednionego jest to, że wszelkie przypadkowe szumy zawarte w obrazie zostaną skutecznie wyeliminowane. Dzieje się tak, ponieważ każda przypadkowa nagła zmiana intensywności pikseli w rozważanym regionie zostanie posortowana, tj. zostanie umieszczony na górze lub na dole posortowanych wartości w tym regionie i nie będzie liczony, ponieważ dla nowej wartości elementu zawsze brana jest wartość środkowa.

5. Zaimplementuj algorytm wytłaczania. Wytłaczanie odbywa się w podobny sposób jak algorytmy uśredniania lub wzmacniania krawędzi. Każdy piksel na obrazie jest przetwarzany przez rdzeń wytłaczający 3x3 (matryca-maska). Na przykład jako rdzeń do wytłaczania możesz wziąć następującą matrycę maski:

Po przetworzeniu wartości piksela przez silnik embossingu dodaje się do niej 128. W ten sposób wartość pikseli tła stanie się średnią szarością (czerwony = 128, zielony = 128, niebieski = 128). Kwoty większe niż 255 można zaokrąglić w górę do 255.

W wytłoczonej wersji obrazu kontury wydają się być wytłoczone ponad powierzchnię. Kierunek podświetlania obrazu można zmienić, zmieniając pozycje 1 i -1 w jądrze. Jeśli na przykład wartości 1 i -1 zostaną zamienione, wówczas kierunek podświetlenia zostanie odwrócony.

6. Akwarela obrazu. Filtr akwareli przekształca obraz, a po przetworzeniu wygląda tak, jakby był napisany akwarelą:

    Pierwszym krokiem w zastosowaniu filtra akwareli jest wygładzenie kolorów na obrazie. Jednym ze sposobów wygładzenia jest zastosowanie średniego uśredniania kolorów w każdym punkcie. Wartość koloru każdego piksela i jego 24 sąsiadów (rozmiar maski-matrycy to 5x5) są ułożone w szeregu wariacyjnym w kolejności malejącej lub rosnącej. Środkowa (trzynasta) wartość koloru w serii wariacji jest przypisana do centralnego piksela.

    po wygładzeniu kolorów należy zastosować filtr poprawiający krawędzie, aby podkreślić krawędzie przejść kolorów.