Sunday 26 February 2017

Moving Average Filter Matlab Bild

Erstellt am Mittwoch, den 08. Oktober 2008 um 20:04 Uhr Zuletzt aktualisiert am Donnerstag, den 14. März 2013 um 01:29 Uhr Geschrieben von: Batuhan Osmanoglu Zugriffe: 41188 Moving Average In Matlab Oft finde ich mich in der Notwendigkeit der Mittelung der Daten, die ich habe, um das Rauschen ein wenig zu reduzieren Bit. Ich schrieb paar Funktionen, um genau das tun, was ich will, aber Matlabs in Filter-Funktion gebaut funktioniert auch ziemlich gut. Hier schreibe ich über 1D und 2D Mittelung von Daten. 1D-Filter kann mit der Filterfunktion realisiert werden. Die Filterfunktion erfordert mindestens drei Eingangsparameter: den Zählerkoeffizienten für den Filter (b), den Nennerkoeffizienten für den Filter (a) und natürlich die Daten (X). Ein laufender Mittelwertfilter kann einfach definiert werden: Für 2D-Daten können wir die Funktion Matlabs filter2 verwenden. Für weitere Informationen, wie der Filter funktioniert, können Sie eingeben: Hier ist eine schnelle und schmutzige Implementierung eines 16 von 16 gleitenden durchschnittlichen Filters. Zuerst müssen wir den Filter definieren. Da alles, was wir wollen, gleicher Beitrag aller Nachbarn ist, können wir einfach die Funktion verwenden. Wir teilen alles mit 256 (1616), da wir nicht den allgemeinen Pegel (Amplitude) des Signals ändern wollen. Zur Anwendung des Filters können wir einfach sagen, die folgenden Unten sind die Ergebnisse für die Phase eines SAR-Interferogramms. In diesem Fall ist der Bereich in der Y-Achse und der Azimut auf der X-Achse abgebildet. Der Filter war 4 Pixel breit in Reichweite und 16 Pixel breit in Azimuth. Hi, ich brauche etwas Hilfe beim Schreiben eines Codes für die gleitenden Durchschnitt Filter aber ohne Verwendung einer der bestehenden Matlab-Funktionen. Es wird auf Schwarz-Weiß-Bilder, 256x256 Pixel, mit N Zeilen und M Spalten angewendet werden: Wenn die Funktion auf jede der Zeilen des Bildes angewendet wird, durch das Array: Und mit dem entsprechenden Ausfahrt-Array: Wie zu lösen Um das gleitende durchschnittliche Filter zu erzeugen: (und um sicherzustellen, dass die Länge der Arrays die gleiche ist, g1 f1 e gM fM) Wählen Sie Ihr LandDieses Tutorial behandelt die Verwendung von MATLAB für die Bildverarbeitung. Manche Vertrautheit mit MATLAB wird vorausgesetzt (Sie sollten wissen, wie Matrizen zu verwenden und schreiben Sie eine M-Datei). Es ist hilfreich, die MATLAB Image Processing Toolbox haben, aber zum Glück sind keine Toolboxes für die meisten Operationen erforderlich. Befehle, die die Bild-Toolbox erfordern, werden mit Image Toolbox angezeigt. Bilddarstellung Es gibt fünf Arten von Bildern in MATLAB. Graustufen. Ein Graustufenbild M Pixel hoch und N Pixel breit wird als eine Matrix des doppelten Datentyps der Größe M N dargestellt. Elementwerte (z. B. MyImage (m, n)) bezeichnen die Pixel-Graustufen-Intensitäten in 0,1 mit 0black und 1white. Truecolor RGB. Ein truecolor rot-grün-blaues (RGB) Bild wird als dreidimensionale M N 3 Doppelmatrix dargestellt. Jedes Pixel hat rote, grüne, blaue Komponenten entlang der dritten Dimension mit Werten in 0,1, beispielsweise die Farbkomponenten von Pixel (m, n) sind MyImage (m, n, 1) rot, MyImage (m, n, 2) grün, MyImage (m, n, 3) blue. Indexed. Indizierte (palettierte) Bilder werden mit einer Indexmatrix der Größe M N und einer Farbmapmatrix der Größe K 3 dargestellt. Die Farbpalette enthält alle Farben, die in dem Bild verwendet werden, und die Indexmatrix stellt die Pixel dar, indem auf Farben in der Farbzuordnung Bezug genommen wird. Zum Beispiel, wenn die 22. Farbe ist Magenta MyColormap (22, :) 1,0,1. Dann ist MyImage (m, n) 22 ein magentafarbenes Pixel. Ein binäres Bild wird durch eine M N logische Matrix dargestellt, wobei die Pixelwerte 1 (wahr) oder 0 (falsch).uint8 sind. Dieser Typ verwendet weniger Speicher und einige Operationen berechnen schneller als bei doppelten Typen. Zur Vereinfachung dieses Tutorials diskutiert uint8 nicht weiter. Graustufen ist in der Regel das bevorzugte Format für die Bildverarbeitung. In Fällen, die Farbe erfordern, kann ein RGB-Farbbild abgebaut und als drei separate Graustufenbilder behandelt werden. Indizierte Bilder müssen für die meisten Vorgänge in Graustufen oder RGB konvertiert werden. Im Folgenden sind einige gemeinsame Manipulationen und Conversions. Einige Befehle erfordern die Image Toolbox und werden mit Image Toolbox angezeigt. Lesen und Schreiben von Bilddateien MATLAB kann Bilder mit den Imread - und Imwrite-Befehlen lesen und schreiben. Obwohl eine angemessene Anzahl von Dateiformaten unterstützt werden, sind einige nicht. Verwenden Sie Imformate, um zu sehen, was Ihre Installation unterstützt: Beim Lesen von Bildern ist ein unglückliches Problem, dass imread die Bilddaten im uint8-Datentyp zurückgibt, der vor dem Gebrauch in double und rescaled umgewandelt werden muss. Also anstatt direkt im Text zu schreiben, verwende ich die folgende M-Datei-Funktion zum Lesen und Konvertieren von Bildern: Klicken Sie mit der rechten Maustaste und speichern Sie getimage. m, um diese M-Funktion zu verwenden. Wenn image baboon. png im aktuellen Verzeichnis (oder irgendwo im MATLAB-Suchpfad) ist, können Sie es mit MyImage getimage (baboon. png) lesen. Sie können auch partielle Pfade verwenden, z. B. wenn sich das Bild im aktuellen Verzeichnis gtimages mit getimage (imagesbaboon. png) befindet. Um ein Graustufen - oder RGB-Bild zu schreiben, verwenden Sie Achten Sie darauf, dass MyImage eine doppelte Matrix mit Elementen in 0,1if ist, die nicht ordnungsgemäß skaliert ist, wird die gespeicherte Datei wahrscheinlich leer sein. Beim Schreiben von Bilddateien, empfehle ich mit dem PNG-Dateiformat. Dieses Format ist eine zuverlässige Wahl, da es verlustfrei ist, unterstützt truecolor RGB, und komprimiert ziemlich gut. Verwenden Sie andere Formate mit Vorsicht. Grundlegende Operationen Im Folgenden finden Sie einige grundlegende Operationen auf einem Graustufenbild u. Befehle, die die Bild-Toolbox erfordern, werden mit Image Toolbox angezeigt. (Hinweis: Für ein beliebiges Array bedeutet die Syntax u (:), dass u in einen Spaltenvektor entrollt wird, zB wenn u 1,50,2, dann u (:) 1052 ist.) Zum Beispiel wird die Bildsignalleistung verwendet (SNR) und dem Spitzen-Signal-Rausch-Verhältnis (PSNR). Gegebenes sauberes Bild uclean und Geräusch-kontaminiertes Bild u, seien Sie vorsichtig mit Norm. Das Verhalten ist Norm (v) auf Vektor v berechnet sqrt (sum (v.2)). Aber Norm (A) auf Matrix A berechnet die induzierte L 2 - Matrix-Norm, so Norm (A) ist sicherlich nicht sqrt (sum (A ())). Es ist dennoch ein einfacher Fehler, die Norm (A) zu verwenden, wo sie Norm (A (:)) sein sollte. Lineare Filter Die lineare Filterung ist die Eckpfeilertechnik der Signalverarbeitung. Um kurz einzuführen, ist ein Linearfilter ein Vorgang, bei dem bei jedem Pixel xm, n eines Bildes eine lineare Funktion auf dem Pixel und seinen Nachbarn ausgewertet wird, um einen neuen Pixelwert ym, n zu berechnen. Ein lineares Filter in zwei Dimensionen hat die allgemeine Form, wobei x die Eingabe, y die Ausgabe und h die Filterimpulsantwort ist. Verschiedene Auswahlmöglichkeiten von h führen zu Filtern, die Kanten glätten, schärfen und erkennen, um nur einige Anwendungen zu nennen. Die rechte Seite der obigen Gleichung wird prägnant als h x bezeichnet und heißt die Faltung von h und x. Spatial-Domain-Filterung Eine zweidimensionale lineare Filterung wird in MATLAB mit conv2 implementiert. Leider kann conv2 nur filtern in der Nähe der Bildgrenzen durch Null-padding, was bedeutet, dass Filter-Ergebnisse sind in der Regel ungeeignet für Pixel in der Nähe der Grenze. Um dies zu umgehen, können wir das Eingabebild auffüllen und die gültige Option beim Aufruf von conv2 verwenden. Die folgende M-Funktion macht dies. Klicken Sie mit der rechten Maustaste und speichern Sie die Datei conv2padded. m, um diese M-Funktion zu verwenden. Hier sind einige Beispiele: Ein 2D-Filter h soll trennbar sein, wenn es als das äußere Produkt von zwei 1D-Filtern h1 und h2 ausgedrückt werden kann. Das heißt, h h1 (:) h2 (:). Es ist schneller, h1 und h2 als h durchzulassen. Wie oben für das gleitende Mittelfenster und das Gaußsche Filter getan wird. In der Tat sind die Sobel-Filter hx und hy auch trennbar, was h1 und h2 ist. Fourier-Domain-Filterung Die Spatial-Domain-Filterung mit conv2 ist einfach ein rechenintensiver Vorgang. Für ein K K - Filter auf einem M N-Bild kostet conv2 O (MNK 2) Additionen und Multiplikationen oder O (N 4) unter der Annahme von M N K. Für große Filter ist die Filterung in der Fourier-Domäne schneller, da die Rechenkosten auf O reduziert werden (N 2 log N). Unter Verwendung der Faltungsmultiplikationseigenschaft der Fourier-Transformation wird die Faltung äquivalent berechnet. Das Ergebnis ist äquivalent zu conv2padded (x, h), außer in der Nähe der Grenze, wobei die obige Berechnung eine periodische Grenzerweiterung verwendet. Eine Fourier-basierte Filterung kann auch mit symmetrischer Grenzerweiterung durchgeführt werden, indem der Eingang in jede Richtung reflektiert wird: (Anmerkung: Eine noch effizientere Methode ist die FFT-Überlappungsfilterung.) Die Signal Processing Toolbox implementiert FFT-Overlap-Add in Eindimension in fftfilt .) Nichtlineare Filter Ein nichtlineares Filter ist ein Vorgang, bei dem jedes gefilterte Pixel ym, n eine nichtlineare Funktion von xm, n und seinen Nachbarn ist. Hier werden kurz einige Arten von nichtlinearen Filtern diskutiert. Statistische Filter bestellen Wenn Sie die Image Toolbox haben, können Sie mit statfilt2 und medfilt2 statistische Filter bestellen. Ein Auftragsstatistikfilter sortiert die Pixelwerte über einer Nachbarschaft und wählt den k-ten größten Wert aus. Die Min-, Max - und Medianfilter sind Sonderfälle. Morphologische Filter Wenn Sie die Image Toolbox haben, implementiert bwmorph verschiedene morphologische Operationen auf binären Bildern, wie Erosion, Dilatation, Open, Close und Skeleton. Es gibt auch Befehle für Morphologie auf Graustufenbilder: imerode. Imdilate und imtophat. unter anderen. Eigenen Filter erstellen Gelegentlich wollen wir einen neuen Filter verwenden, den MATLAB nicht hat. Der nachfolgende Code ist eine Vorlage für die Implementierung von Filtern. (Anmerkung: Häufig fehlgeleitete Behauptung ist, dass Schleifen in MATLAB langsam sind und vermieden werden sollten.) Dies war einst wahr, zurück in MATLAB 5 und früher, aber Schleifen in modernen Versionen sind relativ schnell.) Beispiel: Der alpha-trimmte Mittelfilter Ignoriert die d 2 niedrigsten und d 2 höchsten Werte im Fenster und mittelt die verbleibenden (2 r 1) 2 d Werte. Der Filter ist ein Gleichgewicht zwischen einem Medianfilter und einem Mittelfilter. Das alpha-trimmte Mittelfilter kann in der Schablone als ein anderes Beispiel implementiert werden, wobei das zweiseitige Filter ist


No comments:

Post a Comment