• Co je to diskrétní obraz? a jaké je hardwarové rozlišení? Fourierovo zpracování digitálního obrazu

    digitální fotografie nebo jinak bitmapa je pole čísel zachycených snímači úrovně jasu ve dvourozměrné rovině. S vědomím, že z matematického hlediska tenká čočka provádí Fourierovu transformaci obrazů umístěných v ohniskových rovinách, je možné vytvořit algoritmy zpracování obrazu, které jsou analogické zpracování obrazu v klasickém optickém systému.

    Vzorec takových algoritmů bude vypadat takto:

    1. Z=FFT(X) – přímá dvourozměrná Fourierova transformace
    2. Z′=T(Z) – aplikace funkce nebo průhlednosti na Fourierův obraz obrázku
    3. Y=BFT(Z′) – inverzní dvourozměrná Fourierova transformace
    K výpočtu Fourierovy transformace se používají rychlé algoritmy. diskrétní transformace Fourier. Optický systém čoček sice provádí Fourierovu transformaci na spojitém rozsahu argumentu a pro spojité spektrum, ale při přechodu na digitální zpracování dat, vzorce Fourierovy transformace mohou být nahrazeny vzorcem pro diskrétní Fourierovu transformaci.

    Příklady implementace

    • Algoritmus rozostření obrazu
    Implementované algoritmy jsou součástí open source knihovny. zdrojový kód FFTTools. Internetová adresa: github.com/dprotopopov/FFTTools

    Algoritmus rozostření obrazu

    V optických systémech je clona umístěná v ohniskové rovině jednoduchým otvorem v obrazovce. V důsledku procházení světelný tok přes membránu procházejí vysokofrekvenční vlny (s kratšími vlnovými délkami) překážkou a vlny nízké frekvence(s delšími vlnovými délkami) jsou oříznuty obrazovkou. Tím se zlepší ostrost výsledného obrazu. Pokud díru v obrazovce nahradíme překážkou v obrazovce, pak bude výsledek rozmazaný obraz, protože bude tvořen z frekvencí vln velkých délek.

    Algoritmus:

    1. Vypočítejte pole Z′=T(Z), kde T je vynulování řádků a sloupců umístěných v daných vnitřních oblastech matice-argument odpovídající vysokým frekvencím 5. (tj. vynulování Fourierových expanzních koeficientů odpovídajících na vysoké frekvence)

    Algoritmus ostření obrazu

    V optických systémech je clona umístěná v ohniskové rovině jednoduchým otvorem v obrazovce. V důsledku průchodu světelného toku přes clonu procházejí vysokofrekvenční vlny (s kratšími vlnovými délkami) překážkou a nízkofrekvenční vlny (s delšími vlnovými délkami) jsou stíněním odříznuty. Tím se zlepší ostrost výsledného obrazu.

    Algoritmus:

    1. Nechť X(N1,N2) je pole jasů obrazových bodů.
    2. Vypočítejte Px = střední (efektivní) jas pixelů v poli X
    3. Vypočítat pole Z=FT(X) - přímá dvourozměrná diskrétní Fourierova transformace
    4. Uložte hodnotu L=Z(0,0) - odpovídající průměrnému jasu pixelů v původním obrázku
    5. Vypočítejte pole Z′=T(Z), kde T je vynulování řádků a sloupců umístěných v daných vnějších oblastech matice argumentů odpovídajících nízkým 6. frekvencím (tj. vynulování koeficientů Fourierovy expanze odpovídající nízké frekvence)
    6. Obnovte hodnotu Z'(0,0)=L - odpovídající průměrnému jasu pixelů původního obrázku
    7. Vypočítat pole Y=RFT(Z′) – inverzní 2D diskrétní Fourierova transformace
    8. Vypočítejte Py = střední (efektivní) jas pixelů v poli Y
    9. Normalizujte pole Y(N1,N2) podle průměrné úrovně jasu Px/Py

    Algoritmus změny velikosti obrazu

    V optických systémech je světelný tok v ohniskové rovině systému Fourierovou transformací původního obrazu. Výstupní velikost optický systém obraz je určen poměrem ohniskových vzdáleností čočky a okuláru.

    Algoritmus:

    1. Nechť X(N1,N2) je pole jasů obrazových bodů.
    2. Vypočítejte Px = střední (efektivní) jas pixelů v poli X
    3. Vypočítat pole Z=FT(X) - přímá dvourozměrná diskrétní Fourierova transformace
    4. Vypočítejte pole Z′=T(Z), kde T buď sečte nula řádků a sloupců matice odpovídající vysokým frekvencím, nebo vymaže řádky a sloupce matice odpovídající vysokým frekvencím, abyste získali požadovanou velikost konečného obrázku.
    5. Vypočítat pole Y=RFT(Z′) – inverzní 2D diskrétní Fourierova transformace
    6. Vypočítejte Py = střední (efektivní) jas pixelů v poli Y
    7. Normalizujte pole Y(M1,M2) podle průměrné úrovně jasu Px/Py
    Použitý software
    • Microsoft vizuální studio 2013 C# - prostředí a programovací jazyk
    • EmguCV/OpenCV - C + + knihovna struktur a algoritmů pro zpracování obrazu
    • FFTWSharp/FFTW – C++ knihovna implementující rychlé diskrétní algoritmy Fourierovy transformace

    Algoritmus rozostření obrazu

    Kód algoritmu

    ///

    /// Vymazat vnitřní oblast pole /// /// Pole hodnot /// Velikost oblasti vnitřní slepé private static void Blind(Complex[,] data, Size size) ( int n0 = data.GetLength(0); int n1 = data.GetLength(1); int n2 = data.GetLength(2); int s0 = Math. Max(0, (n0 - velikost.Výška)/2); int s1 = Math.Max(0, (n1 - velikost.Šířka)/2); int e0 = Math.Min((n0 + velikost.Výška)/ 2, n0); int e1 = Math.Min((n1 + velikost.Šířka)/2, n1); for (int i = s0; i< e0; i++) { Array.Clear(data, i*n1*n2, n1*n2); } for (int i = 0; i < s0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } } /// /// Rozostření bitmapy s nejrychlejší Fourierovou transformací /// /// Rozmazaná bitmapa public Bitmap Blur (Bitmap bitmap) ( pomocí (var image = new Image (bitmapa)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double));double power = Math.Sqrt(doubles.Average(x => x*x));var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, vstup, výstup, fftw_direction. Forward, fftw_flags.Estimate).Execute(); komplexní komplex= output.GetData_Complex(); var data = new Complex; varbuffer = nový dvojitý; GCHandle complexHandle = GCHandle.Alloc(komplex, GCHandleType.Pinned); GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, dataPtr, buffer.Length); Blind(data, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); input.SetData(komplex); fftw_plan.dft_3d(n0, n1, n2, vstup, výstup, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(pole2.Average(x => x*x)); doubles = pole2.Select(x =>

    Algoritmus ostření obrazu

    Kód algoritmu

    ///

    /// Vymazat externí oblast pole /// /// Pole hodnot /// Velikost vnější slepé oblasti private static void Blind(Complex[,] data, Size size) ( int n0 = data.GetLength(0); int n1 = data.GetLength(1); int n2 = data.GetLength(2); int s0 = Math. Max(0, (n0 - velikost.Výška)/2); int s1 = Math.Max(0, (n1 - velikost.Šířka)/2); int e0 = Math.Min((n0 + velikost.Výška)/ 2, n0); int e1 = Math.Min((n1 + velikost.Šířka)/2, n1); for (int i = 0; i< s0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } } /// /// Ostrá bitmapa s nejrychlejší Fourierovou transformací /// /// zaostřená bitmapa public Bitmap Sharp (bitmapa bitmap) ( pomocí (var image = nový obrázek (bitmapa)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double));double power = Math.Sqrt(doubles.Average(x => x*x));var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, vstup, výstup, fftw_direction. Forward, fftw_flags.Estimate).Execute(); Complex complex = output.GetData_Complex(); Complex level = complex; var data = new Complex; var buffer = new double; GCHandle complexHandle = GCHandle.Alloc(komplex, GCHandleType.Pinned) ; GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, bufferL, 0); Copy(buffer, 0, dataPtr, buffer.Length); Blind(data, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); komplex = úroveň; input.SetData(komplex); fftw_plan.dft_3d(n0, n1, n2, vstup, výstup, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(pole2.Average(x => x*x)); doubles = pole2.Select(x => x*výkon/výkon2).ToArray(); Buffer.BlockCopy(doubles, 0, image.Data, 0, length*sizeof (double)); vrátit obrázek.Bitmapa; ))

    Algoritmus změny velikosti obrazu

    Kód algoritmu

    ///

    /// Kopírovat pole /// /// vstupní pole /// výstupní pole private static void Copy(Complex[,] input, Complex[,] output) ( int n0 = input.GetLength(0); int n1 = input.GetLength(1); int n2 = input.GetLength(2); int m0 = output.GetLength(0);int m1 = output.GetLength(1);int m2 = output.GetLength(2);int ex0 = Math.Min(n0, m0)/2;int ex1 = Math.Min(n1 , m1)/2;int ex2 = Math.Min(n2, m2);Debug.Assert(n2 == m2);for (int k = 0;k< ex2; k++) { for (int i = 0; i <= ex0; i++) { for (int j = 0; j <= ex1; j++) { int ni = n0 - i - 1; int nj = n1 - j - 1; int mi = m0 - i - 1; int mj = m1 - j - 1; output = input; output = input; output = input; output = input; } } } } /// /// Změna velikosti bitmapy pomocí nejrychlejší Fourierovy transformace /// /// Změněná velikost bitmapy public Bitmap Stretch (bitmapa bitmap) ( pomocí (var image = nový obrázek (bitmapa)) ( int length = image.Data.Length; int n0 = image.Data.GetLength(0); int n1 = image.Data.GetLength(1); int n2 = image.Data.GetLength(2); var doubles = new double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (double));double power = Math.Sqrt(doubles.Average(x => x*x));var input = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray()); var output = new fftw_complexarray(length); fftw_plan.dft_3d(n0, n1, n2, vstup, výstup, fftw_direction. Forward, fftw_flags.Estimate).Execute(); Komplexní komplex = výstup.GetData_Complex(); pomocí (var image2 = nový obrázek (_newSize)) ( int length2 = image2.Data.Length; int m0 ​​​​= image2.Data.GetLength(0); int m1 = image2.Data.GetLength(1); int m2 = image2.Data.GetLength(2 ); var complex2 = nový komplex; var data = nový komplex; var data2 = nový komplex; var buffer = new double; GCHandle complexHandle = GCHandle.Alloc(komplex, GCHandleType.Pinned); GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType .Pinned ); IntPtr complexPtr = complexHandle.AddrOfPinnedObject(); IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, dataPtr, buffer.Leng ); complexHandle.Free(); dataHandle.Free(); Copy(data, data2); buffer = new double; complexHandle = GCHandle.Alloc(complex2, GCHandleType.Pinned); dataHandle = GCHandle.Alloc(data2, GCHandleType.Pinned ); complexPtr = complexHandle.AddrOfPinnedObject(); dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); complexHandle.Free(); dataHandle.Free(); var input2 = new fftw_complexarray(complex2); var output2 = new fftw_complexarray(length2); fftw_plan.dft_3d(m0, m1, m2, vstup2, výstup2, fftw_direction.Backward, fftw_flags.Estimate).Execute(); double array2 = output2.GetData_Complex().Select(x => x.Magnitude).ToArray(); double power2 = Math.Sqrt(pole2.Average(x => x*x)); double doubles2 = pole2.Select(x => x*výkon/výkon2).ToArray(); Buffer.BlockCopy(doubles2, 0, image2.Data, 0, length2*sizeof (double)); return image2.Bitmap; )))

    Obrazy sestávající z diskrétních prvků, z nichž každý může mít pouze konečný počet rozlišitelných hodnot, které se mění v konečném čase, se nazývají diskrétní. Je třeba zdůraznit, že prvky diskrétního obrazu mohou mít obecně nestejnou plochu a každý z nich může mít nestejný počet rozlišitelných gradací.

    Jak bylo ukázáno v první kapitole, sítnice přenáší diskrétní obrazy do vyšších částí vizuálního analyzátoru.

    Jejich zdánlivá kontinuita je pouze jednou z iluzí oka. Toto „kvantování“ původně spojitých obrazů není určeno omezeními spojenými s rozlišovací schopností optického systému oka, a dokonce ani morfologickými strukturními prvky zrakového systému, ale funkční organizací nervových sítí.

    Obraz je rozdělen na diskrétní prvky pomocí receptivních polí, která kombinují jeden nebo jiný počet fotoreceptorů. Přijímací pole vytvářejí primární výběr užitečných světelný signál prostorovým a časovým sčítáním.

    Centrální část sítnice (foveu) zaujímají pouze čípky, na periferii mimo foveu jsou čípky i tyčinky. V podmínkách nočního vidění mají kuželová pole ve střední části sítnice přibližně stejnou velikost (asi 5 "v úhlové míře). Počet takových polí ve fovee, jejíž úhlové rozměry jsou asi 90", je asi 200. Hlavní roli v podmínkách nočního vidění hrají tyčová pole, která zabírají zbytek povrchu sítnice. Mají úhlovou velikost asi 1° po celém povrchu sítnice. Počet takových polí na sítnici je asi 3 000. Nejen detekci, ale i zkoumání slabě osvětlených předmětů za těchto podmínek provádějí periferní oblasti sítnice.

    S nárůstem osvětlení začíná hrát hlavní roli další systém zásobních buněk, kuželová receptivní pole. Ve fovee způsobuje zvýšení osvětlení postupné snižování efektivní intenzity pole, až se při jasu asi 100 asb sníží na jeden kužel. Na periferii se s rostoucím osvětlením postupně vypínají (zpomalují) tyčová pole a vstupují do činnosti kuželová pole. Kuželová pole na periferii, stejně jako foveální, mají schopnost klesat v závislosti na světelné energii dopadající na ně. Největší početčípků, které mohou mít čípková receptivní pole s rostoucím osvětlením, roste od středu k okrajům sítnice a v úhlové vzdálenosti 50-60° od středu dosahuje přibližně 90.

    Lze spočítat, že za podmínek dobrého denního světla dosahuje počet receptivních polí asi 800 tis.. Tato hodnota přibližně odpovídá počtu vláken v lidském zrakovém nervu. Rozlišování (rozlišování) objektů v denním vidění se provádí především ve fovee, kde lze receptivní pole redukovat na jeden čípek a samotné čípky jsou umístěny nejhustěji.

    Zatímco počet zásobních buněk v sítnici lze určit s uspokojivou aproximací, stále není dostatek údajů pro určení počtu možných stavů receptivních polí. Na základě studia diferenciálních prahů receptivních polí lze provést pouze některé odhady. Prahový kontrast ve foveálních receptivních polích v určitém provozním rozsahu osvětlení je řádově 1. V tomto případě je počet rozlišitelných gradací malý. V celém rozsahu přeskupení čípkového foveálního receptivního pole se liší 8-9 gradací.

    Doba akumulace v receptivním poli - tzv. kritické trvání - je určena v průměru hodnotou řádově 0,1 sec., ale při vysoké úrovně osvětlení může být zjevně výrazně sníženo.

    Ve skutečnosti model popisující diskrétní strukturu přenášené obrázky, by mělo být ještě obtížnější. Bylo by nutné vzít v úvahu vztah mezi dimenzemi receptivního pole, prahy a kritickou dobou trvání, stejně jako statistickou povahu zrakových prahů. Zatím to ale není nutné. Stačí si představit jako obrazový model soubor plošně shodných prvků, jejichž úhlové rozměry jsou menší než úhlové rozměry nejmenšího detailu rozlišitelného okem, jejichž počet rozlišitelných stavů je větší než maximální počet rozlišitelné gradace jasu, přičemž doba diskrétní změny je kratší než perioda blikání při kritické frekvenci fúze blikání.

    Pokud jsou obrazy skutečných spojitých objektů vnějšího světa nahrazeny takovými diskrétními obrazy, oko si substituce nevšimne.* Proto diskrétní obrazy tohoto druhu obsahují alespoň tolik informací, kolik vnímá zrakový systém. **

    * Barevné a objemové obrázky lze také nahradit diskrétním modelem.
    ** Problém nahrazování spojitých obrazů diskrétními je pro filmovou a televizní techniku ​​velmi důležitý. Kvantování času je jádrem této techniky. V systémech pulzně kódované televize je obraz také rozdělen na diskrétní prvky a kvantován podle jasu.

    V předchozí kapitole jsme studovali lineární prostorově invariantní systémy ve spojité dvourozměrné doméně. V praxi máme co do činění s obrázky, které mají omezené rozměry a zároveň se počítají v diskrétní sadě bodů. Dosud vyvinuté metody je proto potřeba přizpůsobit, rozšířit a upravit tak, aby je bylo možné v této oblasti aplikovat. Existuje také několik nových bodů, které vyžadují pečlivé zvážení.

    Vzorkovací teorém říká, za jakých podmínek lze spojitý obraz přesně obnovit z diskrétní sady hodnot. Dozvíme se také, co se stane, když nejsou splněny podmínky pro jeho použitelnost. To vše přímo souvisí s vývojem zrakových systémů.

    Techniky, které vyžadují přechod do frekvenční oblasti, se staly populární částečně díky algoritmům pro rychlý výpočet diskrétní Fourierovy transformace. Je však třeba dávat pozor, protože tyto metody zahrnují periodický signál. Probereme, jak lze tento požadavek splnit a jaké důsledky může mít jeho porušení.

    7.1. Limit velikosti obrázku

    V praxi mají obrázky vždy konečné rozměry. Uvažujme obdélníkový obrázek o šířce a výšce R. Nyní není potřeba brát integrály ve Fourierově transformaci v nekonečných mezích:

    Zajímavé je, že k obnovení funkce nepotřebujeme znát všechny frekvence. Vědět, co v je těžké omezení. Jinými slovy, funkce, která je nenulová pouze v omezené oblasti obrazové roviny, obsahuje mnohem méně informací než funkce, která tuto vlastnost nemá.

    Chcete-li to ověřit, představte si, že rovina obrazovky je pokryta kopiemi daný obrázek. Jinými slovy, rozšiřujeme náš obraz na funkci, která je periodická v obou směrech

    Zde je největší celé číslo menší než x. Fourierova transformace takto znásobeného obrazu má tvar

    Používáním vhodně vybrané faktory konvergence v ex. 7.1 je dokázáno, že

    Proto,

    odkud vidíme, že se rovná nule všude kromě diskrétní množiny frekvencí, takže k jejímu nalezení nám stačí vědět v těchto bodech. Funkce se však získá jednoduchým oříznutím části, pro kterou . K obnově tedy stačí, abychom věděli jen pro každého.To je spočetná množina čísel.

    Všimněte si, že transformace periodické funkce se ukáže jako diskrétní. Inverzní transformace může být reprezentována jako řada, protože

    Lze provést nahrazení souvislého obrázku diskrétním různé způsoby. Je možné například zvolit nějaký systém ortogonálních funkcí a po výpočtu koeficientů zobrazení obrazu pro tento systém (pro tento základ) jimi obraz nahradit. Rozmanitost základů umožňuje vytvářet různé diskrétní reprezentace spojitého obrazu. Nejčastěji se však používá periodické vzorkování, konkrétně, jak již bylo zmíněno výše, vzorkování obdélníkového rastru. Tuto diskretizační metodu lze považovat za jednu z možností využití ortogonální báze, která jako své prvky využívá posunuté -funkce. Dále, především, podrobně zvážíme hlavní rysy pravoúhlé diskretizace.

    Nechť je spojitý obraz a nechť je odpovídající diskrétní obraz získaný ze spojitého pomocí pravoúhlé diskretizace. To znamená, že vztah mezi nimi je určen výrazem:

    kde jsou vertikální a horizontální kroky nebo intervaly vzorkování. Obrázek 1.1 znázorňuje umístění odečtů v rovině s pravoúhlou diskretizací.

    Hlavní otázkou, která vyvstává při nahrazení souvislého obrazu diskrétním, je určení podmínek, za kterých je taková náhrada úplná, tzn. není doprovázeno ztrátou informace obsažené v nepřetržitém signálu. Nejsou žádné ztráty, pokud, mít diskrétní signál, můžete obnovit plynule. Z matematického hlediska jde tedy o to rekonstruovat spojitý signál ve dvourozměrných mezerách mezi uzly, kde jsou známé jeho hodnoty, nebo jinými slovy provést dvourozměrnou interpolaci. Tuto otázku lze zodpovědět analýzou spektrálních vlastností spojitých a diskrétních obrazů.

    Dvourozměrné spojité frekvenční spektrum spojitého signálu je určeno dvourozměrnou přímou Fourierovou transformací:

    což odpovídá dvourozměrné inverzní kontinuální transformace Fourier:

    Poslední vztah platí pro všechny hodnoty , včetně uzlů pravoúhlé mřížky . Proto pro hodnoty signálu v uzlech, s přihlédnutím k (1.1), lze vztah (1.3) zapsat jako:

    Pro stručnost označte obdélníkovou oblastí ve dvourozměrné frekvenční doméně . Výpočet integrálu v (1.4) přes celou frekvenční oblast lze nahradit integrací přes samostatné sekce a shrnutí výsledků:

    Provedením změny proměnných podle pravidla dosáhneme nezávislosti integračního oboru na číslech a :

    S tím se zde počítá pro libovolné celočíselné hodnoty a . Tento výraz je ve své podobě velmi blízký inverzní Fourierově transformaci. Jediný rozdíl je ve špatném tvaru exponenciálního faktoru. Abychom mu dali požadovaný tvar, zavedeme normalizované frekvence a v souladu s tím provedeme změnu proměnných. V důsledku toho získáme:

    Nyní má výraz (1.5) tvar inverzní Fourierovy transformace, tedy funkce pod znaménkem integrálu

    (1.6)

    je dvourozměrné spektrum diskrétního obrazu. V rovině nenormalizovaných frekvencí má výraz (1.6) tvar:

    (1.7)

    Z (1.7) vyplývá, že dvourozměrné spektrum diskrétního obrazu je pravoúhle periodické s periodami a podél frekvenčních os resp. Spektrum diskrétního obrazu vzniká jako výsledek sečtení nekonečného počtu spekter spojitého obrazu, které se od sebe liší frekvenčními posuny a . Obr.1.2 kvalitativně ukazuje vztah mezi dvourozměrnými spektry spojitých (obr.1.2.a) a diskrétních (obr.1.2.b) snímků.

    Rýže. 1.2. Frekvenční spektra spojité a diskrétní obrazy

    Samotný výsledek součtu v podstatě závisí na hodnotách těchto frekvenčních posunů, nebo jinými slovy na volbě vzorkovacích intervalů. Předpokládejme, že spektrum spojitého obrazu je v nějaké dvourozměrné oblasti v okolí nulové frekvence odlišné od nuly, tedy je popsáno dvourozměrnou konečnou funkcí. Pokud jsou navíc intervaly vzorkování zvoleny tak, aby pro , , pak nedojde k překrývání jednotlivých větví při tvorbě součtu (1.7). V důsledku toho se v každém obdélníkovém úseku bude od nuly lišit pouze jeden člen. Konkrétně máme:

    na , . (1,8)

    V rámci frekvenční oblasti se tedy spektra spojitých a diskrétních obrazů shodují až do konstantního faktoru. V tomto případě obsahuje spektrum diskrétního obrazu v této frekvenční oblasti úplné informace o spektru spojitého obrazu. Zdůrazňujeme, že k této koincidenci dochází pouze za specifikovaných podmínek určených dobrou volbou vzorkovacích intervalů. Všimněte si, že splnění těchto podmínek podle (1.8) je dosaženo pro dostatečně malé hodnoty vzorkovacích intervalů, které musí splňovat požadavky:

    kde jsou hraniční frekvence dvojrozměrného spektra.

    Vztah (1.8) určuje metodu získání spojitého obrazu z diskrétního. K tomu stačí provést dvourozměrnou filtraci diskrétního obrazu pomocí nízkoprůchodového filtru s frekvenční odezva

    Spektrum obrazu na svém výstupu obsahuje nenulové složky pouze ve frekvenční oblasti a podle (1.8) se rovná spektru spojitého obrazu . To znamená, že výstupní obraz ideálního dolního propusti je stejný jako .

    Ideální interpolační rekonstrukce spojitého obrazu se tedy provádí pomocí dvourozměrného filtru s obdélníkovou frekvenční charakteristikou (1.10). Je snadné zapsat v explicitní formě algoritmus pro obnovení spojitého obrazu. 2D impulsní odezva obnovovací filtr, který lze snadno získat pomocí inverzní Fourierovy transformace z (1.10), má tvar:

    .

    Produkt filtru lze určit pomocí dvourozměrné konvoluce vstupního obrazu a dané impulsní odezvy. Prezentace vstupní obrázek jako dvourozměrná posloupnost -funkcí

    po konvoluci najdeme:

    Výsledný vztah naznačuje způsob přesné interpolační rekonstrukce spojitého obrazu ze známé sekvence jeho dvourozměrných vzorků. Podle tohoto výrazu by pro přesnou obnovu měly být jako interpolační funkce použity dvourozměrné funkce formuláře. Relace (1.11) je dvourozměrná verze Kotel'nikovovy-Nyquistovy věty.

    Ještě jednou zdůrazňujeme, že tyto výsledky jsou platné, pokud je dvourozměrné spektrum signálu konečné a vzorkovací intervaly dostatečně malé. Platnost vyvozených závěrů je porušena, pokud není splněna alespoň jedna z těchto podmínek. Skutečné obrazy mají zřídka spektra s výraznými mezními frekvencemi. Jedním z důvodů vedoucích k neohraničenosti spektra je omezená velikost obrazu. Z tohoto důvodu sumarizace v (1.7) v každém z pásem ukazuje působení členů ze sousedních spektrálních pásem. V tomto případě je přesné obnovení souvislého obrazu obecně nemožné. Zejména použití filtru s pravoúhlou frekvenční charakteristikou nevede k přesné obnově.

    Charakteristickým rysem optimální rekonstrukce obrazu v intervalech mezi vzorky je použití všech vzorků diskrétního obrazu, jak předepisuje postup (1.11). To není vždy vhodné, často je nutné obnovit signál v místní oblasti na základě malého počtu dostupných diskrétních hodnot. V těchto případech je vhodné použít kvazi-optimální zotavení pomocí různých interpolačních funkcí. Tento druh problému vzniká například při řešení problému propojení dvou obrazů, kdy v důsledku geometrických neshod těchto obrazů mohou dostupné hodnoty jednoho z nich odpovídat některým bodům umístěným v mezerách mezi uzly obrazu. jiný. Řešení tohoto problému je podrobněji rozebráno v následujících částech této příručky.

    Rýže. 1.3. Vliv intervalu vzorkování na obnovu obrazu

    "otisk prstu"

    Rýže. 1.3 ukazuje vliv vzorkovacích intervalů na obnovu obrazu. Původní obrázek, který je otiskem prstu, je znázorněn na obr. 1.3, a, a jeden z úseků jeho normalizovaného spektra je na Obr. 1,3, b. Tento obrázek je diskrétní a hodnota se používá jako mezní frekvence. Jak vyplývá z Obr. 1.3b je hodnota spektra na této frekvenci zanedbatelně malá, což zaručuje kvalitní rekonstrukci. Ve skutečnosti, jak je vidět na Obr. 1.3.a je obraz výsledkem obnovy spojitého obrazu a roli obnovovacího filtru plní vizualizační zařízení - monitor nebo tiskárna. V tomto smyslu je obrázek na Obr. 1.3.a lze považovat za kontinuální.

    Rýže. 1.3, c, d ukazují důsledky špatného výběru intervalů vzorkování. Když byly získány, byla provedena „diskretizace spojitého“ obrazu (obr. 2). 1.3.a ztenčením jeho odečtů. Rýže. 1.3, c odpovídá zvýšení kroku vzorkování pro každou souřadnici o tři, a Obr. 1,3, d - čtyřikrát. To by bylo přijatelné, pokud by hodnoty mezních frekvencí byly o stejný počet nižší. Ve skutečnosti, jak je vidět z Obr. 1.3, b, jsou porušeny požadavky (1.9), zvláště hrubé, když jsou vzorky čtyřikrát ztenčovány. Obrazy rekonstruované pomocí algoritmu (1.11) jsou tedy nejen rozostřené, ale také silně deformují texturu otisku.

    Rýže. 1.4. Vliv intervalu vzorkování na obnovu snímku "Portrét".

    Na Obr. 1.4 ukazuje podobnou sérii výsledků získaných pro snímek typu „na výšku“. Důsledky silnějšího ztenčení (čtyřnásobek na obr. 1.4.c a šestnásobek na obr. 1.4.d) se projevují především ve ztrátě přehlednosti. Subjektivně se zdá, že ztráta kvality je méně výrazná než na Obr. 1.3. To se vysvětluje mnohem menší šířkou spektra než u obrázku otisku prstu. Diskretizace původního obrazu odpovídá mezní frekvenci. Jak je patrné z Obr. 1.4.b, tato hodnota je mnohem vyšší než skutečná hodnota . Proto nárůst vzorkovacího intervalu, znázorněný na Obr. 1.3, c, d, i když to zhoršuje obraz, stále to nevede k tak ničivým následkům jako v předchozím příkladu.

    Kompaktní algoritmus, který poskytuje velmi vysoká kvalita obrázky s poměrem komprese dat větším než 25:1. Plně barevný 24bitový 640 x 480 pixelů (standard VGA) obvykle vyžaduje video RAM pro uložení ... ...

    Diskrétní Wavelet Transform- Příklad 1. úrovně transformace diskrétního vlnkového obrazu. Nahoře je původní plnobarevný obrázek, uprostřed je vlnková transformace provedená horizontálně na původním obrázku (pouze jasový kanál), dole je vlnka ... ... Wikipedia

    RASTER - rastr- diskrétní obraz, reprezentovaný jako matice [z] pixelů ... E-Business Slovník

    počítačová grafika- vizualizace obrazu informací na obrazovce displeje (monitoru). Na rozdíl od reprodukce obrazu na papíře nebo jiném médiu lze obraz vytvořený na obrazovce téměř okamžitě vymazat a/nebo opravit, zmenšit nebo roztáhnout,… … encyklopedický slovník

    rastr- Samostatný obrázek prezentovaný jako matice pixelů na obrazovce nebo papíru. Rastr je charakterizován rozlišením, počtem pixelů na jednotku délky, velikostí, barevnou hloubkou atd. Příklady kombinací: hustota ... ... Technická příručka překladatele

    stůl- ▲ pole dvourozměrná tabulka dvourozměrné pole; diskrétní reprezentace funkce dvou proměnných; informační mřížka. matice. vysvědčení. | tabelování. čára. čára. sloupec. sloupec. sloupec. graf. graf. degrafovat. ▼ graf… Ideografický slovník ruského jazyka

    Laplaceova transformace- Laplaceova transformace je integrální transformace, která spojuje funkci komplexní proměnné (obrazu) s funkcí reálné proměnné (originálu). Slouží ke zkoumání vlastností dynamické systémy a rozhodnout ... ... Wikipedie

    Laplaceova transformace

    Inverzní Laplaceova transformace- Laplaceova transformace je integrální transformace, která dává do vztahu funkci komplexní proměnné (obrazu) k funkci reálné proměnné (originálu). S jeho pomocí jsou zkoumány vlastnosti dynamických systémů a diferenciální a ... Wikipedie

    GOST R 52210-2004: Vysílání digitální televize. Termíny a definice- Terminologie GOST R 52210 2004: Vysílání digitální televize. Termíny a definice původní dokument: 90 (televizní) demultiplexer: Zařízení určené k oddělení kombinovaných digitálních televizních datových toků ... ... Slovník-příručka termínů normativní a technické dokumentace

    Komprese videa- (angl. Video komprese) snížení množství dat použitých k reprezentaci video streamu. Komprese videa umožňuje efektivně snížit tok potřebný k přenosu videa přes vysílané kanály, zmenšit prostor, ... ... Wikipedia