Moving Average Use Matlab


Ein einfacher (ad hoc) Weg ist, nur einen gewichteten Durchschnitt (abstimmbar durch Alpha) an jedem Punkt mit seinen Nachbarn zu nehmen: oder eine Variation davon. Ja, um anspruchsvoller zu sein, können Sie Fourier Ihre Daten zuerst umwandeln und dann die hohen Frequenzen abschneiden. Etwas wie: Das schneidet die höchsten 20 Frequenzen aus. Sei vorsichtig, sie symmetrisch auszuschneiden, sonst ist die inverse Transformation nicht mehr real. Sie müssen sorgfältig wählen Sie die Cutoff-Frequenz für die richtige Ebene der Glättung. Dies ist eine sehr einfache Art der Filterung (Kastenfilterung im Frequenzbereich), so dass Sie versuchen können, die Frequenzen hoher Ordnung vorsichtig abzuschwächen, wenn die Verzerrung inakzeptabel ist. Antwortete 4. Oktober 09 um 9:16 FFT ist nicht eine schlechte Idee, aber seine wahrscheinlich übertreiben hier. Laufen oder bewegte Durchschnitte geben generell schlechte Ergebnisse und sollten für irgendetwas neben späten Hausaufgaben (und weißem Rauschen) vermieden werden. Id verwenden Savitzky-Golay Filterung (in Matlab sgolayfilt (.)). Dies gibt Ihnen die besten Ergebnisse für das, was Sie suchen - einige lokale Glättung unter Beibehaltung der Form der Kurve. Dieses Tutorial diskutiert, wie man MATLAB für die Bildverarbeitung verwenden. Manche Vertrautheit mit MATLAB wird angenommen (man sollte wissen, wie man Matrizen benutzt und eine M-Datei schreibt). Es ist hilfreich, die MATLAB Image Processing Toolbox zu haben, aber zum Glück sind für die meisten Operationen keine Toolboxen erforderlich. Befehle, die die Image Toolbox benötigen, werden mit der Image Toolbox angezeigt. Bilddarstellung In MATLAB gibt es fünf Arten von Bildern. Graustufen. Ein Graustufenbild M Pixel groß und N Pixel breit wird als Matrix aus doppeltem Datentyp der Größe M N dargestellt. Elementwerte (z. B. MyImage (m, n)) bezeichnen die Pixel-Graustufenintensitäten in 0,1 mit 0black und 1weiß. 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, zum Beispiel sind die Farbkomponenten von Pixel (m, n) 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 Farbmatrix der Größe K 3 dargestellt. Die Farbkarte enthält alle Farben, die im Bild verwendet werden, und die Indexmatrix repräsentiert die Pixel, indem sie auf Farben in der Farbkarte verweisen. Zum Beispiel, wenn die 22. Farbe magenta MyColormap (22, :) 1,0,1 ist. Dann ist MyImage (m, n) 22 ein magentafarbenes Pixel. Binär. Ein binäres Bild wird durch eine logarische M N-Matrix dargestellt, wobei die Pixelwerte 1 (wahr) oder 0 (falsch).uint8 sind. Dieser Typ verwendet weniger Speicher und einige Operationen berechnen schneller als mit Doppel-Typen. Aus Gründen der Einfachheit, dieses Tutorial nicht diskutieren uint8 weiter. Graustufen ist in der Regel das bevorzugte Format für die Bildverarbeitung. In Fällen, die Farbe benötigen, kann ein RGB-Farbbild zerlegt und als drei getrennte Graustufenbilder behandelt werden. Indizierte Bilder müssen für die meisten Operationen in Graustufen oder RGB umgewandelt werden. Im Folgenden finden Sie einige allgemeine Manipulationen und Umbauten. Ein paar Befehle erfordern die Image Toolbox und sind mit Image Toolbox gekennzeichnet. 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 wird, 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, die vor dem Gebrauch in doppelte und wieder skaliert werden müssen. Also, anstatt direkt aufzurufen, 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 das Bild baboon. png im aktuellen Verzeichnis (oder irgendwo im MATLAB-Suchpfad) ist, kannst du es mit MyImage getimage (baboon. png) lesen. Sie können auch Teilpfade verwenden, zB wenn das Bild im aktuellen Verzeichnis gtimages mit getimage (imagesbaboon. png) ist. Um ein Graustufen - oder RGB-Bild zu schreiben, Achten Sie darauf, dass MyImage eine Doppelmatrix mit Elementen in 0,1if falsch skaliert ist, wird die gespeicherte Datei wahrscheinlich leer sein. Beim Schreiben von Bilddateien empfehle ich das 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 Unten sind einige grundlegende Operationen auf einem Graustufenbild u. Befehle, die die Image Toolbox benötigen, werden mit der Image Toolbox angezeigt. (Anmerkung: Für jedes Array ist die Syntax u (:) bedeutet, dass du dich in einen Spaltenvektor lenkt, zum Beispiel wenn du 1,50,2 ist, dann ist u (:) 1052.) Beispielsweise wird die Bildsignalleistung verwendet Berechnen des Signal-Rausch-Verhältnisses (SNR) und des Peak-Signal-Rausch-Verhältnisses (PSNR). Angesichts sauberes Bild uclean und Lärm-kontaminiertes Bild du, sei vorsichtig mit Norm. Das Verhalten ist norm (v) auf Vektor v berechnet sqrt (sum (v.2)). Aber die Norm (A) auf der Matrix A berechnet die induzierte L 2 - Matrix-Norm, also ist die Norm (A) sicher nicht sqrt (Summe (A (:) 2)). Es ist doch ein einfacher Fehler, die Norm (A) zu benutzen, wo es Norm sein sollte (A (:)). Lineare Filter Lineare Filterung ist die Ecksteintechnik der Signalverarbeitung. Um kurz einzuführen, ist ein linearer Filter ein Vorgang, bei dem an jedem Pixel x m, n eines Bildes eine lineare Funktion auf dem Pixel und seinen Nachbarn ausgewertet wird, um einen neuen Pixelwert y m, n zu berechnen. Ein linearer Filter in zwei Dimensionen hat die allgemeine Form, wobei x der Eingang ist, y der Ausgang ist und h die Filterimpulsantwort ist. Verschiedene Entscheidungen von h führen zu Filtern, die glatt, schärfen und Kanten erkennen, um einige Anwendungen zu nennen. Die rechte Seite der obigen Gleichung wird präzise als h x bezeichnet und heißt die Faltung von h und x. Räumliche Domänenfilterung Die zweidimensionale lineare Filterung wird in MATLAB mit conv2 implementiert. Leider kann conv2 nur die Filterung in der Nähe der Bildgrenzen durch Nullpolsterung behandeln, was bedeutet, dass Filterergebnisse für Pixel nahe der Grenze normalerweise ungeeignet sind. 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 tut dies. Klicken Sie mit der rechten Maustaste und speichern Sie 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 zu passieren. Wie oben für das gleitende Mittelfenster und den Gaußschen Filter getan wird. In der Tat sind die Sobel-Filter hx und hy auch trennbar, was h1 und h2 ist. Fourier-Domain-Filterung Die räumliche Domain-Filterung mit conv2 ist leicht ein kompliziert teurer Vorgang. Für ein K K-Filter auf einem M N-Bild kostet conv2 O (MNK 2) Additionen und Multiplikationen oder O (N 4) mit M N K. Bei großen Filtern ist die Filterung in der Fourier-Domäne schneller, da die Rechenkosten auf O (N 2 log N) reduziert werden. Unter Verwendung der Faltungs-Multiplikationseigenschaft der Fourier-Transformation wird die Faltung äquivalent berechnet durch Das Ergebnis ist gleichbedeutend mit konv2padded (x, h), außer in der Nähe der Grenze, wobei die obige Berechnung eine periodische Grenzerweiterung verwendet. Die Fourier-basierte Filterung kann auch mit symmetrischer Grenzerweiterung durchgeführt werden, indem der Eingang in jede Richtung reflektiert wird: (Hinweis: Eine noch effizientere Methode ist die FFT-Overlap-Add-Filterung. Die Signal Processing Toolbox implementiert die FFT-Überlappung in one-dimension in fftfilt .) Nichtlineare Filter Ein nichtlineares Filter ist eine Operation, bei der jedes gefilterte Pixel ym, n eine nichtlineare Funktion von xm, n und seinen Nachbarn ist. Hier diskutieren wir kurz einige Arten von nichtlinearen Filtern. Bestellen von Statistikfiltern Wenn Sie die Image-Toolbox haben, können Sie mit den Ordfilt2 und medfilt2 statistische Filter bestellen. Ein Auftragsstatistikfilter sortiert die Pixelwerte über eine 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 Skelett. Es gibt auch Befehle für die Morphologie auf Graustufenbildern: Imerode. Imdilat und imtophat unter anderen. Erstellen Sie Ihren eigenen Filter Gelegentlich möchten wir einen neuen Filter verwenden, den MATLAB nicht hat. Der untenstehende Code ist eine Vorlage für die Implementierung von Filtern. (Anmerkung: Eine häufige fehlgeleitete Behauptung ist, dass Schleifen in MATLAB sind langsam und sollte vermieden werden. Dies war einmal wahr, wieder in MATLAB 5 und früher, aber Schleifen in modernen Versionen sind recht schnell.) Zum Beispiel, die Alpha-getrimmten 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 mittleren Filter. Der alpha-getrimmte Mittelfilter kann in der Vorlage implementiert werden. Als weiteres Beispiel verwendet der bilaterale FilterSlideshare Cookies, um Funktionalität und Leistung zu verbessern und Ihnen relevante Werbung zu bieten. Wenn Sie die Seite weiter durchsuchen, stimmen Sie der Verwendung von Cookies auf dieser Website zu. Siehe unsere Benutzervereinbarung und Datenschutzbestimmungen. Slideshare verwendet Cookies, um Funktionalität und Leistung zu verbessern und Ihnen relevante Werbung zu bieten. Wenn Sie die Seite weiter durchsuchen, stimmen Sie der Verwendung von Cookies auf dieser Website zu. Weitere Informationen finden Sie in unserer Datenschutzerklärung und Benutzervereinbarung. Entdecken Sie alle Ihre Lieblingsthemen in der SlideShare App Holen Sie sich die SlideShare App, um für später zu speichern, auch offline Weiter zur mobilen Website Upload Login Signup Doppelte Tap zum Verkleinern Basic Matlab Programme Teilen Sie diese SlideShare LinkedIn Corporation Kopie 2017

Comments

Popular Posts