Friday 22 December 2017

Przenoszenie filtrowanie filtr jądro


Lodes Computer Graphics Samouczek Filtrowanie obrazu Spis treści Wprowadzenie Filtrowanie obrazu umożliwia stosowanie różnych efektów na zdjęciach. Opisany tu rodzaj filtrowania obrazu wykorzystuje filtr 2D podobny do tego, który znajduje się w programie Paint Shop Pro jako filtr zdefiniowany przez użytkownika, a w programie Photoshop jako filtr niestandardowy. Konwersja Sztuczką w filtrowaniu obrazu jest posiadanie matrycy filtra 2D i obrazu 2D. Następnie, dla każdego piksela obrazu, weź sumę produktów. Każdy produkt jest wartością koloru bieżącego piksela lub sąsiada, z odpowiednią wartością macierzy filtra. Środek matrycy filtra należy pomnożyć z bieżącym pikselem, a pozostałe elementy macierzy filtra odpowiednimi sąsiednimi pikselami. Ta operacja, w której bierzesz sumę produktów elementów z dwóch funkcji 2D, w których jedna z dwóch funkcji przesuwa się po każdym elemencie innej funkcji, nazywa się Konwolucji lub Korelacji. Różnica między Konwolucją a Korelacją polega na tym, że w przypadku Konwolucji musisz odzwierciedlać matrycę filtra, ale zwykle jest ona symetryczna, więc nie ma różnicy. Filtry ze splotem są stosunkowo proste. Bardziej złożone filtry, które mogą korzystać z bardziej fantazyjnych funkcji, również istnieją i mogą robić o wiele bardziej skomplikowane rzeczy (na przykład filtr z kolorowym ołówkiem w Photoshopie), ale takie filtry nie są tutaj omawiane. Konwersja 2D wymaga 4-podwójnej pętli, więc nie jest zbyt szybka, chyba że używasz małych filtrów. Tutaj zwykle używa się filtrów 3x3 lub 5x5. Istnieje kilka reguł dotyczących filtra: jego rozmiar musi być nierównomierny, tak aby zawierał środek, na przykład 3x3, 5x5 i 7x7. Nie musi, ale suma wszystkich elementów filtru powinna wynosić 1, jeśli chcesz, aby wynikowy obraz miał taką samą jasność jak oryginał. Jeśli suma elementów jest większa niż 1, wynikiem będzie jaśniejszy obraz, a jeśli jest mniejszy niż 1, ciemniejszy obraz. Jeśli suma wynosi 0, wynikowy obraz nie musi być całkowicie czarny, ale będzie bardzo ciemny. Obraz ma skończone wymiary, a jeśli na przykład obliczasz piksel po lewej stronie, nie ma już pikseli po lewej stronie, podczas gdy są one wymagane do splotu. Możesz tutaj użyć wartości 0 lub zawinąć się na drugą stronę obrazu. W tym samouczku wybierane jest zawijanie, ponieważ można je łatwo wykonać za pomocą podziału modulo. Wynikowe wartości pikseli po zastosowaniu filtru mogą być ujemne lub większe niż 255, jeśli tak się stanie, można je obciąć, aby wartości mniejsze niż 0 były wartość 0 i wartości większe niż 255 są ustawione na 255. W przypadku wartości ujemnych można również użyć wartości bezwzględnej. W domenie Fouriera lub w domenie częstotliwości operacja splotu staje się zamiast niej mnożeniem, które jest szybsze. W domenie Fouriera można zastosować znacznie mocniejsze i większe filtry, szczególnie w przypadku szybkiej transformaty Fouriera. Więcej na ten temat znajduje się w artykule Transformacja Fouriera. W tym artykule przyjrzyjmy się kilku bardzo typowym małym filtrom, takim jak rozmycie, wykrywanie krawędzi i wytłoczenia. Filtry obrazu nie są jeszcze możliwe do zastosowania w aplikacjach i grach w czasie rzeczywistym, ale są przydatne w przetwarzaniu obrazów. Cyfrowe filtry audio i elektroniczne również działają w trybie splotu, ale w trybie 1D. Oto kod, który posłuży do wypróbowania różnych filtrów. Oprócz stosowania matrycy filtra ma ona również współczynnik mnożnikowy i odchylenie. Po zastosowaniu filtru współczynnik zostanie pomnożony przez wynik, a następnie dodany do niego błąd. Więc jeśli masz filtr z elementem 0.25, ale współczynnik jest ustawiony na 2, wszystkie elementy filtra są w teorii pomnożone przez dwa tak, że element 0.25 jest faktycznie 0.5. Odchylenie może być użyte, jeśli chcesz, aby wynikowy obraz był jaśniejszy. Wynik jednego piksela jest przechowywany w pływających kolorach czerwonym, zielonym i niebieskim, przed przekształceniem go w wartość całkowitą w buforze wyników. Samo obliczenie filtra to 4-podwójna pętla, która musi przejść przez każdy piksel obrazu, a następnie przez każdy element matrycy filtra. Obraz imageX i imageY są obliczane tak, że dla środkowego elementu filtra będzie to x, y, ale dla pozostałych elementów będzie to piksel z obrazu na lewo, na prawo, na górę lub dół x, y. Jego modulo jest podzielone przez szerokość (w) lub wysokość (h) obrazu, dzięki czemu piksele poza obrazem będą zawijane. Przed dzieleniem modulo dodawane są również w lub h, ponieważ podział modulo nie działa poprawnie dla wartości ujemnych. Teraz piksel (-1, -1) będzie poprawnie stał się pikselem (w-1, h-1). Jeśli chcesz wziąć bezwzględną wartość wartości mniejszych od zera, zamiast ją skracać, użyj tego kodu: Naukowiec i inżynier Przewodnik po cyfrowym przetwarzaniu sygnału Autor: Steven W. Smith, Ph. D. Rozdział 24: Liniowy przetwarzanie obrazu przez separację Jest to technika szybkiego splotu, o ile PSF można rozdzielić. Mówi się, że PSF można rozdzielić, jeśli można go podzielić na dwa jednowymiarowe sygnały: rzut pionowy i poziomy. Rysunek 24-5 pokazuje przykład oddzielnego obrazu, kwadratowy PSF. W szczególności wartość każdego piksela na obrazie jest równa odpowiadającemu punktowi w rzucie poziomym pomnożonemu przez odpowiedni punkt w rzucie pionowym. W postaci matematycznej: gdzie x r, c jest obrazem dwuwymiarowym, a vert r amp horz c są jednowymiarowymi projekcjami. Oczywiście większość obrazów nie spełnia tego wymogu. Na przykład pillbox nie jest możliwy do oddzielenia. Istnieje jednak nieskończona liczba rozdzielnych obrazów. Można to rozumieć przez generowanie arbitralnych rzutów poziomych i pionowych oraz znajdowanie odpowiadającego im obrazu. Na przykład, rys. 24-6 ilustruje to za pomocą profili, które są dwustronnymi wykładnikami. Obraz odpowiadający tym profilom znajduje się w równaniu Eq. 24-1. Po wyświetleniu obraz pojawia się jako kształt rombu, który wykładniczo maleje do zera wraz ze wzrostem odległości od początku. W większości zadań związanych z przetwarzaniem obrazu, idealny PSF jest kołowo symetryczny. takich jak pillbox. Chociaż zdigitalizowane obrazy są zwykle przechowywane i przetwarzane w prostokątnym formacie wierszy i kolumn, pożądane jest zmodyfikowanie obrazu tak samo we wszystkich kierunkach. Nasuwa się pytanie: czy istnieje PSF, który jest kołowo symetryczny i rozdzielny Odpowiedź brzmi: tak, ale jest tylko jedna, Gaussa. Jak pokazano na Fig. 24-7, dwuwymiarowy obraz Gaussa ma projekcje, które są również Gaussianami. Obraz i projekcja Gaussian mają takie samo odchylenie standardowe. Aby zawęzić obraz za pomocą oddzielnego jądra filtra, należy zawęzić każdy wiersz obrazu za pomocą projekcji poziomej. w wyniku czego powstaje obraz pośredni. Następnie zawiń każdą kolumnę tego obrazu pośredniego z rzutem pionowym PSF. Wynikowy obraz jest identyczny z bezpośrednim splotem oryginalnego obrazu i jądra filtra. Jeśli chcesz, zwiąż najpierw kolumny, a następnie wiersze, wynik jest taki sam. Splot obrazu N razy N z jądrem filtra M razy M wymaga czasu proporcjonalnego do N 2 M 2. Innymi słowy, każdy piksel na wyjściowym obrazie zależy od wszystkich pikseli w jądrze filtra. Dla porównania, splatanie przez separację wymaga czasu proporcjonalnego do N2M. W przypadku jądra filtra o szerokości setek pikseli technika ta skróci czas wykonania o setkę razy. Sprawy mogą być jeszcze lepsze. Jeśli chcesz użyć prostokątnego PSF (rys. 24-5) lub dwustronnego wykładniczego PSF (rys. 24-6), obliczenia są jeszcze bardziej efektywne. Dzieje się tak dlatego, że jednowymiarowe zwoje to filtr średniej ruchomej (rozdział 15) i dwukierunkowy filtr jednobiegunowy (rozdział 19), odpowiednio. Oba te jednowymiarowe filtry można szybko przeprowadzić przez rekursję. Powoduje to, że czas splotu obrazu jest proporcjonalny tylko do N2, całkowicie niezależny od rozmiaru PSF. Innymi słowy, obraz może być zawarty z tak dużym PSF, ile potrzeba, z tylko kilkoma operacjami całkowitymi na piksel. Na przykład splot obrazu 512 na 512 pikseli wymaga tylko kilkuset milisekund na komputerze osobistym. To szybko Nie podoba się kształt tych dwóch rdzeni filtrów. Przekonwertuj obraz z jednym z nich kilka razy, aby zbliżyć się do Gaussowskiego PSF (gwarantowanego przez Centralne Twierdzenie o Granicach, Rozdział 7). Są to świetne algorytmy, zdolne do wyłapywania sukcesów ze szczęk awarii. Warto je zapamiętać. Naukowiec i inżynier Przewodnik po cyfrowym przetwarzaniu sygnału Autor: Steven W. Smith, Ph. D. Rozdział 6: Konwolucja Podsumujmy ten sposób rozumienia, w jaki sposób system zmienia sygnał wejściowy na sygnał wyjściowy. Po pierwsze, sygnał wejściowy może zostać rozłożony na zbiór impulsów, z których każdy może być postrzegany jako skalowana i przesunięta funkcja delta. Po drugie, wyjście wynikające z każdego impulsu jest skalowaną i przesuniętą wersją odpowiedzi impulsowej. Po trzecie, całkowity sygnał wyjściowy można znaleźć, dodając te skalowane i przesunięte odpowiedzi impulsowe. Innymi słowy, jeśli znamy systemową odpowiedź impulsową, możemy obliczyć, jaki będzie wynik dla dowolnego możliwego sygnału wejściowego. Oznacza to, że wiemy wszystko o systemie. Nic więcej nie można się nauczyć o charakterystyce systemów liniowych. (Jednak w kolejnych rozdziałach pokażemy, że informacje te można przedstawić w różnych formach). W niektórych zastosowaniach odpowiedź impulsowa zmienia się pod inną nazwą. Jeśli rozważany system jest filtrem. odpowiedź impulsowa nazywana jest jądrem filtra. jądro splotu. lub po prostu jądro. W przetwarzaniu obrazu odpowiedź impulsowa nazywana jest funkcją rozproszenia punktu. Chociaż terminy te są używane w nieco inny sposób, wszystkie one oznaczają to samo, sygnał wytwarzany przez system, gdy wejście jest funkcją delta. Konwolucja jest formalną operacją matematyczną, podobnie jak mnożenie, dodawanie i integracja. Dodawanie zajmuje dwie liczby i daje trzecią liczbę. podczas gdy splot przyjmuje dwa sygnały i wytwarza trzeci sygnał. Konwolucji używa się w matematyce wielu dziedzin, takich jak prawdopodobieństwo i statystyki. W układach liniowych splot używany jest do opisania zależności między trzema interesującymi sygnałami: sygnałem wejściowym, odpowiedzią impulsową i sygnałem wyjściowym. Rysunek 6-2 pokazuje notację, kiedy splot jest używany w systemach liniowych. Sygnał wejściowy x n wchodzi do układu liniowego z odpowiedzią impulsową, h n, dając sygnał wyjściowy yn. W formie równania: x n h n y n. Wyrażone słowami sygnał wejściowy zwinięty z odpowiedzią impulsową jest równy sygnałowi wyjściowemu. Tak jak dodawanie jest reprezentowane przez plus,, i mnożenie przez krzyż, czas, splot jest reprezentowany przez gwiazdę,. To niefortunne, że większość języków programowania również używa gwiazdy, aby wskazać mnożenie. Gwiazda w programie komputerowym oznacza mnożenie, podczas gdy gwiazda w równaniu oznacza splot. Rysunek 6-3 pokazuje zastosowanie splotu do filtrowania dolnoprzepustowego i górnoprzepustowego. Przykładowy sygnał wejściowy jest sumą dwóch komponentów: trzech cykli fali sinusoidalnej (reprezentującej wysoką częstotliwość) oraz wolno rosnącej rampy (złożonej z niskich częstotliwości). W (a) odpowiedź impulsowa dla filtra dolnoprzepustowego jest gładkim łukiem, co powoduje, że tylko powoli zmieniająca się fala krzywej jest przekazywana do wyjścia. Podobnie filtr górnoprzepustowy (b) umożliwia przejście tylko szybciej zmieniającej się sinusoidy. Rysunek 6-4 ilustruje dwa dodatkowe przykłady wykorzystania splotu do przetwarzania sygnałów. Tłumik odwracający, (a), odwraca sygnał od góry do dołu i zmniejsza jego amplitudę. Dyskretna pochodna (zwana również pierwszą różnicą) pokazana w (b), daje sygnał wyjściowy związany ze nachyleniem sygnału wejściowego. Zwróć uwagę na długości sygnałów na ryc. 6-3 i 6-4. Sygnały wejściowe mają długość 81 próbek, a każda odpowiedź impulsowa składa się z 31 próbek. W większości aplikacji DSP sygnał wejściowy składa się z setek, tysięcy lub nawet milionów próbek. Reakcja impulsowa jest zwykle znacznie krótsza, powiedzmy, kilka punktów do kilkuset punktów. Matematyka za splotem nie ogranicza długości tych sygnałów. Określa jednak długość sygnału wyjściowego. Długość sygnału wyjściowego jest równa długości sygnału wejściowego i długości odpowiedzi impulsowej minus jeden. Dla sygnałów na Ryc. 6-3 i 6-4, każdy sygnał wyjściowy wynosi: 81 31 - 1 111 próbek. Sygnał wejściowy przebiega od próbki 0 do 80, odpowiedź impulsowa od próbki 0 do 30 i sygnał wyjściowy z próbki 0 do 110. Teraz dochodzimy do szczegółowej matematyki splotu. Użyte w Digital Signal Processing, splot można rozumieć na dwa różne sposoby. Pierwszy patrzy na splot z punktu widzenia sygnału wejściowego. Obejmuje to analizowanie, w jaki sposób każda próbka w sygnale wejściowym przyczynia się do wielu punktów w sygnale wyjściowym. Drugi sposób patrzy na splot z punktu widzenia sygnału wyjściowego. To bada, w jaki sposób każda próbka w sygnale wyjściowym otrzymała informacje z wielu punktów w sygnale wejściowym. Należy pamiętać, że te dwie perspektywy to różne sposoby myślenia o tej samej matematycznej operacji. Pierwszy punkt widzenia jest ważny, ponieważ zapewnia konceptualne zrozumienie, w jaki sposób splot dotyczy DSP. Drugi punkt widzenia opisuje matematykę splotu. To typuje jedno z najtrudniejszych zadań, jakie napotkasz w DSP: sprawić, by twoje konceptualne zrozumienie pasowało do zbieraniny matematyki używanej do przekazywania pomysłów.

No comments:

Post a Comment