|
|
Pixelbearbeitung über Simulink |
|
Nowak89 |
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 25.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.10.2015, 09:33
Titel: Pixelbearbeitung über Simulink
|
|
Hallo,
ich bin ein Neuling in Matlab und Simulink und würde gerne ein Bild in Simulink einladen, bearbeiten und ausgeben. Hierzu muss ich auf jedes Pixel einzeln zugreifen und dieses neu berechnen. Ein funktionierendes m-File habe ich bereits.
Bisher habe ich das Bild einlesen und auslesen können. Die Frage ist hierbei, wie kann ich auf die einzelnen Pixel zugreifen, diese neu berechnen und wieder als komplettes Bild ausgeben?
Die Berechnungsformel in meinem Matlab Script sieht wie folgt aus:
r=sqrt(x.^2+y.^2);
x = x.*(1+k1*r.^2 + k2*r.^4 ) + 2*p1.*x.*y + p2*(r + 2*x.^2);
y = y.*(1+k1*r.^2 + k2*r.^4) + 2*p2.*x.*y + p1*(r + 2*y.^2);
Oder gibt es eine einfachere Methode, mein m-File einzuladen, ohne großartig anpassen zu müssen?
Vielen Dank für Eure Hilfe.
Grüße
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 01.10.2015, 09:36
Titel:
|
|
Die einfachste Methode wäre den MATLAB Code in Simulink einzubetten. Die grosse Frage ist jedoch warum es in Simulink umgesetzt werden soll? Von der Antwort hängt nämlich die Empehlung ab.
Andreas
|
|
|
Nowak89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 25.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.10.2015, 12:05
Titel:
|
|
Hallo Andreas,
danke für deine Schnelle Antwort. Letztendlich soll ein Video Stream in Simulink eingebunden werden, die Einzelbilder neu berechnet werden und anschließend wieder ausgegeben werden. Es soll ein ganzes Modell gebildet werden.
Ich habe mal das Stichwort Look Up Table gelesen. Wenn ich das richtig verstanden habe, kann ich doch auch damit von meinem Eingabebild die Pixel nehmen, und an eine andere Stelle schreiben. Also eine Verzeichnung (obige Formel) erzeugen? Wenn das so richtig ist, wie erstelle ich so eine Tabelle und wie wende ich die Formel auf die einzelnen Einträge an?
Dankeschön!
Grüße
Marc
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 04.10.2015, 10:08
Titel:
|
|
Also generell sollte man für diese Applikation die Computer Vision System Tbx einsetzen. Für den speziellen Fall: Die Lookup-Tables werden üblicherweise dann eingesetzt wenn ein etwas rechenintensivererer Algorythmus (wie hier) linearisiert werden kann und dadurch viel schnelle ausgeführt werden kann . Ich würde wirklich erst mal mit MATLAB Code einbetten anfangen.
Andreas
|
|
|
Nowak89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 25.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.10.2015, 07:49
Titel:
|
|
Hallo
d.h. ich soll eine Malab Function einfügen und da den Code reinschreiben?
Was für Anpassungen muss ich den alles vornehmen?
Funktionen wie "meshgrid" oder "...=size(image)" kann ich so belassen oder muss ich die in irgendeiner Weise anpassen?
Grüße
Marc
|
|
|
Nowak89 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 25.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.10.2015, 12:26
Titel:
|
|
|
|
|
Mein bisheriges Vorgehen kurz erläutert.
Mein Code funktioniert als m-file, und diesen würde ich gerne als Matlab Function einlesen. Mein Video lade ich über ein"From Multimedia File". Von diesem File benötige ich nun die Video Höhe und Breite, was ich wie folgt versucht habe (obj ist die Variable, die ich meinem M-Fcn Block zuführe, also meine Video Frames):
Für die Ausgabe habe ich ein struct vorbelegt, wie man es in der Matlab Hilfe für Videos findet.
Hier ist schon das erste Problem: Der Kompiler erwartet für die Hoehe (ebenso Breite) ein "scalar numeric value". Wenn ich dies richtig deute, konnten die Höhe und Breite nicht durch den obigen Code den Variablen Hoehe und Breite übergeben werden.
Im nächsten Schritt wollte ich mit
die einzelnen Frames lesen und bearbeiten, wobei er die Befehle "hasFrame" und "readFrame" nicht kennt. Benötige ich dies nicht, da eventuell mein "From Multimedia File" mir meine Frames einzeln ausgibt? Wenn ja, wo und wie muss ich die Frames bearbeiten (z.B. allen Pixel 80 Graustufen addieren), bzw. wie werden die einzelnen Frames wieder zu einem Video zusammen gesetzt? Über den "Video Viewer" Block?
Ich hoffe ich habe meine Probleme einigermaßen verständlich beschrieben und ihr wisst eine Lösung dafür.
Herzlichen Dank!
Marc
Edit:
für meine Pixeldurchläufe (Schleifen) muss ich meine Vaiablen i,j definieren. Dies habe ich im Code über
gemacht. Funktioniert auch nicht, da der Kompiler wiederum eine Skalar erwartet.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|