WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Pixelbearbeitung über Simulink

 

Nowak89
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 25.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2015, 09:33     Titel: Pixelbearbeitung über Simulink
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 01.10.2015, 09:36     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Nowak89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 25.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2015, 12:05     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 04.10.2015, 10:08     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Nowak89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 25.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2015, 07:49     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Nowak89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 25.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2015, 12:26     Titel:
  Antworten mit Zitat      
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):
Code:
Breite = obj.Width;

Hoehe = obj.Height;


Für die Ausgabe habe ich ein struct vorbelegt, wie man es in der Matlab Hilfe für Videos findet.
Code:
vid = struct('cdata', zeros(Hoehe, Breite, 3, 'double'),...
     'colormap',[]);


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
Code:
while hasFrame(obj)
vid(k).cdata = readFrame(obj);
...
end


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
Code:
[j,i] = meshgrid(1:Breite, 1:Hoehe);[

gemacht. Funktioniert auch nicht, da der Kompiler wiederum eine Skalar erwartet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.