Parametry filtra dolnoprzepustowego dla próbkowania obrazu w dół


11

Muszę przeskalować obraz ze współczynnikiem poziomie i pionie ( , < ).s y s x s y 1sxsysxsy1

Chcę użyć skończonego filtra dolnoprzepustowego przed próbkowaniem w dół.n×m

Jak powinienem określić parametry filtra dolnoprzepustowego ( i Gaussian ), aby uzyskać go jako funkcję i ?σ s x s yn,mσsxsy

Szczególnie interesuje mnie przypadek, w którym .sx=sy=1/2


pytanie dotyczące [tego
zadanego

1
Dzięki, ale to pytanie nie dotyczy tego, jak określić parametry filtru jako funkcję współczynnika skalowania w dół.
Ben-Uri,

Ile chcesz filtrować? Jaki jest Twój cel?

1
Chcę użyć filtra dolnoprzepustowego przed próbkowaniem w dół, aby uniknąć aliasingu. Chcę zachować jak najwięcej informacji bez aliasu.
Ben-Uri,

1
Musisz spojrzeć na transformatę Fouriera filtra, aby dowiedzieć się, jak dobrze obniży on częstotliwości aliasingu, jednocześnie utrzymując częstotliwości poniżej limitu Nyquista próbkowanego wyniku. Transformacja gaussa jest kolejnym gaussowskim, co oznacza, że ​​nie ma ostrego odcięcia. Prawie zawsze jest lepszy wybór.
Mark Ransom,

Odpowiedzi:


4

Musisz pomyśleć o zmianie częstotliwości Nyquista między obydwoma obrazami. Jeśli częstotliwość Nyquista oryginalnego obrazu wynosi N, obraz o zmniejszonej próbce będzie miał niższą częstotliwość Nyquist, xN, gdzie x jest związany ze stosunkiem rozmiarów między końcowym obrazem a początkowym. Trzeba będzie usunąć te częstotliwości przestrzenne, które są wyższe niż xN na oryginalnym obrazie przed próbkowaniem go w dół.

Spektrum mocy Gaussa w przestrzeni obrazu jest również Gaussa w przestrzeni częstotliwości. Jeśli przez chwilę zignorujemy drugi wymiar, Gaussa w przestrzeni obrazu jest zdefiniowany jako exp (-x ^ 2 / s ^ 2), gdzie x reprezentuje twoje piksele. Jest to mapowane do przestrzeni częstotliwości jako exp (-w ^ 2 * s ^ 2), gdzie w jest częstotliwością. Parametr (y) sigma pokazuje, że szeroki Gaussian w przestrzeni obrazu odpowiada wąskiemu Gaussowi w przestrzeni częstotliwości.

Chciałbyś wybrać parametr sigma, który daje bardzo niską wartość w przestrzeni częstotliwości przy częstotliwości, która odpowiada częstotliwości Nyquista obrazu próbkowanego w dół.


Racja, ale jak mam to przełożyć na dyskretne jądro splotu? (to było pytanie)
Ben-Uri

zobacz edytuj
proszę

Dzięki, ale czy nadal istnieje wzór na znalezienie sigmy w funkcji maksymalnej częstotliwości, która powinna znajdować się w wyniku wyjściowym?
Ben-Uri,

nie znam żadnych formuł.
NoNameNo

1

nmσ

σσ23.37


0

Jeśli robisz duże zmniejszenie (np. 2x, 3x, 4x), możesz wykonać uśrednianie pikseli, aby uzyskać dobre wygładzanie krawędzi. Właśnie dlatego anty-aliasing wykorzystuje wiele dodatkowych procesorów / GPU, aby gry wyglądały ostrzej.

Ponieważ przechodzisz z obrazu 1000x1000 do obrazu 707x707 (tylko przykład współczynnika skali) masz rację, że aliasing może być problemem.

Na szczęście jest to problem, na który wpadło już wiele osób i wykonało sporo pracy, aby je rozwiązać. W wielu przypadkach dwukierunkowa interpolacja jest właściwą drogą. Oto kilka przykładów tego, jak wyglądają różne metody interpolacji:

http://www.compuphase.com/graphic/scale.htm

Zmiana rozmiaru OpenCV ma kilka wbudowanych metod:

http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize

Jeśli korzystałeś już z kilku metod interpolacji i nie działają one dobrze, opublikuj przykładowy obraz źródłowy i przykładowy obraz pokazujący niedobór. Będziemy tego potrzebować, aby zdiagnozować problem i spróbować znaleźć dobre rozwiązanie.


zauważ, że chociaż jest szybki, uśrednianie pikseli nie jest idealnym rozwiązaniem dla jakości. uśrednianie pikseli skutecznie stosuje filtr prostokątny. w przestrzeni częstotliwości odpowiada to pomnożeniu przez funkcję sinusa, która oscyluje z zerowymi przecięciami w harmonicznych Nyquista. ma to dwa problemy: 1. tłumi wysoką częstotliwość, ale nie aż tak bardzo 2. odwraca fazę na każdym drugim płacie bocznym. Zarówno (1), jak i (2) mogą przyczyniać się do aliasingu.
dniu

0

Naprawdę nie mam dla ciebie dobrej odpowiedzi, ale oto dwie opcje, które możesz wypróbować:

  • σ3σ
  • jeśli chcesz wykonać dokładne obliczenia próbkowania sygnału, to dlaczego nie zastosować transformacji Fouriera? Weź FFT obrazu, zachowaj tylko tę podczęść, która odpowiada rozmiarowi docelowemu i odwróć transformację. Spowoduje to zastosowanie filtra antyaliasingowego w twoim spektrum. Jeśli masz za dużo artefaktów (zmarszczki, dzwonienie), zastosuj spektrum filtra Gaussa, którego szerokość odpowiada docelowemu rozmiarowi.

0

s=1/2

[1,2,1]T[1,2,1]

Mylisz się. Czy zapomniałeś współczynnik skali 0,25? ... a jeśli tak, to jest to powszechny wybór dla s = 1/2, a nie 1 / sqrt (0,5).
Ben-Uri,

Jakiś komentarz na temat ujęcia Ben-Uri? System zaznacza ten post jako niskiej jakości z powodu jego długości. Proszę rozważyć zmianę lub usunięcie go.
Peter K.

1
ss2

ssσσsx,sy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.