Thursday 9 November 2017

Moving Average Matlab Code


In diesem Tutorial wird die Verwendung von MATLAB für die Bildverarbeitung beschrieben. 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 Schablone implementiert werden. Als ein anderes Beispiel ist der bilaterale Filter ein einfacher (ad hoc) Weg, um 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. Advanced Source Code. Com 31.10.2015 Matlab-Quellcode für die biometrische Erkennung wurde aktualisiert. Reduzierte Kosten. Alle Software ist mit großen Rabatten ausgestattet, viele Codes werden kostenlos angeboten. Bessere Aufführungen. Einige kleinere Fehler wurden behoben. Verbesserte Softwarefähigkeiten. Viele Codes wurden in Bezug auf Geschwindigkeit und Speicherverwaltung verbessert. Folgen Sie uns auf Twitter Folgen Sie uns auf FaceBook Folgen Sie uns auf YouTube Folgen Sie uns auf LinkedIn Real-Time Hilfe. Verbinde uns jetzt mit WhatsApp 393207214179 Video Tutorial. Software ist intuitiv, leicht verständlich und gut dokumentiert. Für die meisten Codes wurden viele Video-Tutorials auf unserem YouTube-Kanal veröffentlicht. Wir entwickeln auch Software on-Demand. Für irgendeine Frage bitte mailen Sie uns. Verbinden Sie uns21.06.2005 Ein biometrisches System kann als Mustererkennungssystem betrachtet werden, das aus drei Hauptmodulen besteht: dem Sensormodul, dem Feature-Extraktionsmodul und dem Feature-Matching-Modul. Der Entwurf eines solchen Systems wird im Kontext vieler häufig eingesetzter biometrischer Modalitäten untersucht - Fingerabdruck, Gesicht, Sprache, Hand, Iris. Verschiedene Algorithmen, die für jede dieser Modalitäten entwickelt wurden, werden vorgestellt. 16.05.2006 Ein neuronales Netzwerk ist eine zusammenhängende Gruppe biologischer Neuronen. Im modernen Gebrauch kann sich der Begriff auch auf künstliche neuronale Netze beziehen, die aus künstlichen Neuronen bestehen. So bezeichnet der Begriff Neuronales Netzwerk zwei verschiedene Konzepte: - Ein biologisches neuronales Netzwerk ist ein Plexus von verbundenen oder funktionell verwandten Neuronen im peripheren Nervensystem oder im zentralen Nervensystem. - Im Bereich der Neurowissenschaften handelt es sich meist um eine Gruppe von Neuronen aus einem Nervensystem, die für die Laboranalyse geeignet sind. Künstliche neuronale Netze wurden entworfen, um einige Eigenschaften von biologischen neuronalen Netzwerken zu modellieren, obwohl die meisten Anwendungen technischer Natur im Gegensatz zu kognitiven Modellen sind. Neuronale Netze bestehen aus Einheiten, die oft als einfach in dem Sinne angenommen werden, dass ihr Zustand durch einzelne Zahlen, ihre Aktivierungswerte beschrieben werden kann. Jede Einheit erzeugt aufgrund ihrer Aktivierung ein Ausgangssignal. Einheiten sind sehr spezifisch miteinander verbunden, wobei jede Verbindung ein individuelles Gewicht hat (wiederum durch eine einzige Zahl beschrieben). Jede Einheit sendet ihren Ausgangswert an alle anderen Einheiten, an die sie eine ausgehende Verbindung haben. Durch diese Verbindungen kann die Ausgabe eines Gerätes die Aktivierungen anderer Einheiten beeinflussen. Die Einheit, die die Verbindungen empfängt, berechnet ihre Aktivierung, indem sie eine gewichtete Summe der Eingangssignale annimmt (d. h. sie multipliziert jedes Eingangssignal mit dem Gewicht, das dieser Verbindung entspricht und diese Produkte addiert). Die Ausgabe wird durch die Aktivierungsfunktion auf der Grundlage dieser Aktivierung bestimmt (z. B. erzeugt die Einheit eine Ausgabe oder Brände, wenn die Aktivierung über einem Schwellenwert liegt). Netzwerke lernen, indem sie die Gewichte der Verbindungen ändern. Im Allgemeinen besteht ein neuronales Netzwerk aus einer Gruppe oder Gruppen von physikalisch verbundenen oder funktionell assoziierten Neuronen. Ein einziges Neuron kann mit vielen anderen Neuronen verbunden sein und die Gesamtzahl der Neuronen und Verbindungen in einem Netzwerk kann extrem groß sein. Verbindungen, sogenannte Synapsen, werden gewöhnlich aus Axonen zu Dendriten gebildet, obwohl dendrodentritische Mikroschaltungen und andere Verbindungen möglich sind. Neben der elektrischen Signalisierung gibt es noch andere Signalarten, die sich aus der Neurotransmitter-Diffusion ergeben, die sich auf die elektrische Signalisierung auswirken. So sind wie andere biologische Netzwerke auch neuronale Netze äußerst komplex. Während eine detaillierte Beschreibung der neuronalen Systeme derzeit unerreichbar erscheint, werden Fortschritte in Richtung eines besseren Verständnisses der grundlegenden Mechanismen gemacht. Künstliche Intelligenz und kognitive Modellierung versuchen, einige Eigenschaften von neuronalen Netzwerken zu simulieren. Während sie in ihren Techniken ähnlich sind, hat das erstere das Ziel, bestimmte Aufgaben zu lösen, während es darum geht, mathematische Modelle biologischer neuronaler Systeme aufzubauen. Im künstlichen Intelligenzfeld wurden künstliche neuronale Netze erfolgreich auf Spracherkennung, Bildanalyse und adaptive Steuerung angewendet, um Software-Agenten (in Computer - und Videospielen) oder autonomen Robotern zu konstruieren. Die meisten der derzeit eingesetzten künstlichen neuronalen Netze für künstliche Intelligenz basieren auf statistischer Schätzung, Optimierung und Kontrolle Theorie. Das kognitive Modellierungsfeld ist die physikalische oder mathematische Modellierung des Verhaltens von neuronalen Systemen, die von der individuellen neuronalen Ebene abhängen (z. B. Modellierung der Spike-Response-Kurven von Neuronen zu einem Reiz), durch die neuronale Cluster-Ebene (zB Modellierung der Freisetzung und Wirkungen von Dopamin In den Basalganglien) zum vollständigen Organismus (zB Verhaltensmodellierung der Organismen Antwort auf Reize). 11.06.2007 Genetische Algorithmen bilden eine Klasse von Such-, Anpassungs - und Optimierungstechniken, die auf den Prinzipien der natürlichen Evolution basieren. Genetische Algorithmen wurden von Holland entwickelt. Andere evolutionäre Algorithmen umfassen Evolutionsstrategien, evolutionäre Programmierung, Klassifizierungssysteme und genetische Programmierung. Ein evolutionärer Algorithmus behält eine Population von Lösungskandidaten bei und bewertet die Qualität jedes Lösungskandidaten nach einer problemspezifischen Fitnessfunktion, die die Umgebung für die Evolution definiert. Neue Lösungskandidaten werden durch die Auswahl von relativ passenden Mitgliedern der Bevölkerung geschaffen und rekombinieren sie durch verschiedene Betreiber. Spezifische evolutionäre Algorithmen dier in der Darstellung von Lösungen, der Auswahlmechanismus und die Details der Rekombinationsoperatoren. In einem genetischen Algorithmus werden Lösungskandidaten als Zeichenfolgen aus einem gegebenen (oft binären) Alphabet dargestellt. In einem besonderen Problem muss eine Abbildung zwischen diesen genetischen Strukturen und dem ursprünglichen Lösungsraum entwickelt und eine Fitnessfunktion definiert werden. Die Fitness-Funktion misst die Qualität der Lösung, die einer genetischen Struktur entspricht. Bei einem Optimierungsproblem berechnet die Fitnessfunktion einfach den Wert der Zielfunktion. Bei anderen Problemen könnte die Eignung durch eine coevolutionäre Umgebung bestimmt werden, die aus anderen genetischen Strukturen besteht. Zum Beispiel könnte man die Gleichgewichtseigenschaften von spieltheoretischen Problemen untersuchen, wobei sich eine Population von Strategien mit der Eignung jeder Strategie entwickelt, die als die durchschnittliche Auszahlung gegenüber den anderen Mitgliedern der Bevölkerung definiert ist. Ein genetischer Algorithmus beginnt mit einer Population von zufällig generierten Lösungskandidaten. Die nächste Generation entsteht durch die Rekrutierung vielversprechender Kandidaten. Die Rekombination umfasst zwei Eltern, die zufällig aus der Population ausgewählt werden, wobei die Selektionswahrscheinlichkeiten zugunsten der relativ passenden Kandidaten voreingenommen sind. Die Eltern werden durch einen Crossover-Operator rekombiniert, der die beiden genetischen Strukturen an zufällig ausgewählten Orten aufteilt und sich ein Stück von jedem Elternteil verbindet, um einen Nachkommen zu schaffen (als Schutz vor dem Verlust der genetischen Vielfalt werden zufällige Mutationen gelegentlich in die Nachwuchs). Der Algorithmus wertet die Fitness des Nachkommens aus und ersetzt eines der relativ ungeeigneten Mitglieder der Bevölkerung. Neue genetische Strukturen werden produziert, bis die Generation abgeschlossen ist. Aufeinanderfolgende Generationen werden in gleicher Weise erstellt, bis ein klar definiertes Kündigungskriterium erfüllt ist. Die endgültige Bevölkerung bietet eine Sammlung von Lösungskandidaten, von denen eine oder mehrere auf das ursprüngliche Problem angewendet werden können. Obwohl evolutionäre Algorithmen nicht garantiert werden, um das globale Optimum zu finden, können sie eine akzeptable Lösung relativ schnell in einem breiten Spektrum von Problemen finden. Evolutionäre Algorithmen wurden auf eine Vielzahl von Problemen in der Ingenieur-, Informatik-, Kognitionswissenschaft, Wirtschaft, Management-Wissenschaft und anderen Bereichen angewendet. Die Zahl der praktischen Anwendungen ist seit den späten 1980er Jahren stetig gestiegen. Typische Geschäftsanwendungen beinhalten Produktionsplanung, Job-Shop-Scheduling und andere schwierige kombinatorische Probleme. Genetische Algorithmen wurden auch auf theoretische Fragen in Wirtschaftsmärkten, auf Zeitreihenprognosen und auf ökonometrische Schätzungen angewendet. String-basierte genetische Algorithmen wurden angewendet, um Markt-Timing-Strategien auf der Grundlage fundamentaler Daten für Aktien - und Anleihemärkte zu finden. 23.04.2006 Eine Liste der Matrix-basierten Programmiersprachen: Scilab - Scilab ist ein wissenschaftliches Softwarepaket für numerische Berechnungen, das eine leistungsfähige offene Computerumgebung für Engineering und wissenschaftliche Anwendungen bietet. Seit 1990 von den Forschern aus INRIA und ENPC entwickelt, wird sie seit ihrer Gründung im Mai 2003 von Scilab Consortium gepflegt und weiterentwickelt. Das R Project for Statistical Computing - R ist eine freie Softwareumgebung für statistisches Rechnen und Grafiken. Es kompiliert und läuft auf einer Vielzahl von UNIX-Plattformen, Windows und MacOS. Octave - Octave ist eine hochrangige Sprache, die in erster Linie für numerische Berechnungen gedacht ist. Es bietet eine bequeme Befehlszeilenschnittstelle zum Lösen von linearen und nichtlinearen Problemen numerisch und zur Durchführung anderer numerischer Experimente unter Verwendung einer Sprache, die meistens mit Matlab kompatibel ist. Es kann auch als Batch-orientierte Sprache verwendet werden. Python - Python ist eine dynamische objektorientierte Programmiersprache, die für viele Arten von Software-Entwicklung verwendet werden kann. Es bietet eine starke Unterstützung für die Integration mit anderen Sprachen und Werkzeugen, kommt mit umfangreichen Standardbibliotheken und kann in wenigen Tagen gelernt werden. Viele Python-Programmierer berichten über erhebliche Produktivitätsgewinne und spüren die Sprache fördert die Entwicklung von höherer Qualität, mehr Wartungscode.

No comments:

Post a Comment