Ich bin derzeit an meiner Dipl.-Arbeit und führe eine Energiebilanzierung an einem Dieselmotor durch. Um die Strahlung und Konvektion zu berechnen, verwenden wir eine Infrarotkamera, um die Oberflächentemperatur aufzunehmen.
D.h. die Kamera ist statisch und ich erstelle für bestimmte Betriebszustände ein Bild. Einige Teile des Motors werden durch einfach geometrische Körper aproximiert und diesen Körpern weise ich durch die Aufnahmen danach die Temperatur zu.
Da die Punkte immer an der selben Stelle im Bild liegen, quasi immer die gleichen Pixel, möchte ich das gerne automatisieren.
Eigentlich ist das sehr simpel:
- Bilder einlesen
- RGB Werte von definierten Pixeln in einem (Excel)Tabelle schreiben-> (pro Bild eine Zeile, pro Punkt 3 spalten (RGB) nebeneinander)
- Mit einer vorher angegebenen Temperatur/Farb-Beziehung vergleichen
- Temperatur der Punkte in eine Tabelle schreiben (pro bild 1 Zeile, pro Pixel eine Spalte)
Leider muss ich zu meiner Schande gestehen dass ich absolut keine Ahnung von Matlab-Programmierung habe Ich weiß dass ich bilder einlesen kann mit "imread" und mir Pixelwerte mit "pixel1" ausgeben lassen kann. Allerdings hab ich keine Ahnung wie ich das programmiertechnisch umsetzen muss und erst recht nicht, wie ich das als Schleife etc. automatisiere ;(
Habt ihr Tipps? Wäre soooo gut denn ich werde ca. 480 Bilder haben und pro Bild 10 - 20 Pixel. Das per Hand zu machen wird OVerkill
Es kommt keine Fehlermeldung mehr, aber es passiert auch nichts Müssten jetzt die Bilder nicht irgendwie im Workspace auftauchen?
Wie bekomme ich das hin, dass ich von allen Bildern die RGB-Werte einer Koordinate/eines Pixels in eine Matrix schreibe?
eine Funktion hat einen eigenen Workspace / Arbeitsbereich. Nach Abschluss der Funktion sind (von globalen oder statischen Variablen mal abgesehen) nur die Informationen verfügbar, die als Ausgabeargumente zurückgegeben werden.
Da du keine Ausgabeargumente angibst, ist auch nichts verfügbar.
Zitat:
Wie bekomme ich das hin, dass ich von allen Bildern die RGB-Werte einer Koordinate/eines Pixels in eine Matrix schreibe?
Wenn die Bilder alle die gleiche Größe haben, würde ich sie in einem 4D-Array statt einem Cell Array ablegen. Dann kannst du das problemlos durch Indizierung machen.
Grüße,
Harald
radi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.02.2013, 12:45
Titel:
Vielen Dank schonmal!
Ok, das mit dem Workspace hab ich verstanden, nur wie schreibe ich das nach außen? Wenn ich das richtig verstanden habe, muss ich die Pixel innerhalb der Funktion definieren und in ein Array schreiben, da sonst quasi die geladenen Bilder nicht mehr verfügbar sind.
(btw. ich habe keine Ahnung was der Unterschied von einem Cell-Array zu einem 4D-Array ist )
% fpath ist Pfad zu den Bildern
imglist=dir([fpath '*.jpg']); % Speichern der Namen aller jpegs
Tab=zeros(length(imglist),size(xy_positionen,1)*3);
for k=1:length(imglist)
bild=imread([fpath imglist(k).name]);
ind = sub2ind(size(bild),xy_positionen(:,2),xy_positionen(:,1));
bild = reshape(bild, [], 3);
Tab(k,:)= reshape(bild(ind,:), 1, []);
end
Sehr cool! Ja hab mir schon gedacht, dass man die Richtung einfach ändern muss, aber ich habe die Schritte des Codes nicht 100% verstanden, da ich die ganzen Befehle nicht kenne.
Vielen Dank für eure Mühe!
stubenfliege
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.07.2014, 10:56
Titel:
Hallo,
ich arbeite gerade an einem ähnlichen Problem.
Ich würde gerne wissen, wie dass mit dem Einbauen der Farbskala und dem Vergleichen mit den Referenzwerten funktionieren kann.
Vielen Dank schon mal für eure Hilfe.
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
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.