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

Livebilder von 2 kameras zusammenführen & bearbeiten

 

pieee
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2017, 12:19     Titel: Livebilder von 2 kameras zusammenführen & bearbeiten
  Antworten mit Zitat      
Guten Tag,

den Beitrag habe ich nicht(!) in die Bildverarbeitungsecke des Forums geschrieben, da es mir hier nicht um die Bildverarbeitung ansich geht, sondern um folgendes:



Es geht darum, dass ich mit zwei Kameras ein Objekt beobachte.
Dafür werden zunächst

1.die Kameras mittels je eines Referenzbildes pro Kamera kalibriert, Verdrehung und Verkippung berechnet und diese Daten auf die einzelnen Referenzbilder angewandt.

2. Die Einzelbilder werden zu einem Gesamtbild zusammengeführt und das abgebildete Objekt analysiert. Im Grunde werden hier weitere Kalibrierdaten ermittelt.

3. Die Kameras werden im Anschluss getriggert und die fortlaufende Bildaufnahme gestartet.

4.Diese Livebilder sollen mit den kalibrierdaten der einzelnen Kameras, die in 1. ermittelt wurden, korrigiert werden und dann wie in 2. zusammengeführt und das zugehörige Diagramm für das ausgewertete Merkmal fortlaufend aktualisiert für die aktuell eingezogenen Bilder angezeigt werden.
Das Diagramm soll jedoch für das zusammengesetzte Bild ausgegeben werden!

Der algorithmus soll also mit den Kalibrierdaten die Livebilder zusammenführen und dann im Anschluss das Merkmal analysieren und als Diagramm ausgeben.


"Offline", also mit Bildern, die zuvor manuell aufgenommen wurden, funktioniert das soweit auch, aber "live" nicht.


Code:
clc,clear all ,imaqreset
 
% Access an image acquisition device.
cam = [videoinput('gige', 1),videoinput('gige', 2)];
cam1=cam(1);
cam2=cam(2);
dimension1 = get(cam1,'VideoResolution');
dimension2 = get(cam2,'VideoResolution');
bands1= get(cam1,'NumberOfBands');
bands2= get(cam2,'NumberOFBands');
 
% Initializing
triggerconfig(cam1, 'manual')
triggerconfig(cam2, 'manual')
src1 = getselectedsource(cam1);
src2 = getselectedsource(cam2);
src1.PacketSize = 9014;
src2.PacketSize = 9014;
cam1.LoggingMode = 'memory';
cam2.LoggingMode = 'memory';
src1.ExposureTimeAbs=50000;
src2.ExposureTimeAbs=50000;
cam.FramesPerTrigger = 1;
 
 
% Initiate the acquisition.
start(cam)
% % Verify no frames have been logged.
frameslogged_cam1 = cam1.FramesAcquired
frameslogged_cam2 = cam2.FramesAcquired
 
%Trigger the acquisition.
trigger(cam)
%Wait for the acquisition to end.
wait(cam);
% Determine the number frames acquired.
frameslogged_cam = cam.FramesAcquired
 
%Bilder für Kalibrierung wurden gemacht und werden im Anschluss an die Funktionen für die Kalibrierung übergeben
 
[variable1]=kalibrierung(cam1,cam2);
[variable2]=kalibrierung2(variable1);
 
%variable 1 & 2 sind lediglich Platzhalter an diese Stelle und dienen der Anschaulichkeit
 
%nun wird der Livebildeinzug initialisiert
 
cam.FramesPerTrigger = inf;
start(cam);
trigger(cam);
 
hImage = image(zeros(dimension1(1), dimension1(2), bands1));
 
 
 
setappdata(hImage,'calib',{variable})
 
setappdata(hImage, 'UpdatePreviewWindowFcn', @adjust_function)
 
%adjust_function verarbeitet die Livebilder und ermittelt das das Diagramm zum betrachteten Merkmal, welches fortlaufend aktualisiert wird
 
%livebild wird ausgegeben
 
figure(31)
%subplot(1,2,1)
preview(cam1,hImage)



Das Problem ist jetzt, wie man sicher oben sieht: es wird nur das Livebild einer Kamera mit den kalibrierdaten verarbeitet und ausgegeben. Ich möchte aber an adjust_function beide Kamerabilder inklusive der kalibrierdaten übergeben, die Bilder zusammenführen und dann das Merkmal analysieren.

setappdata funktioniert nur, wenn ein image handle, hier himage übergeben wird. Wie kriege ich es jetzt hin, dass an adjust_function die Bilder beider Kameras übergeben werden?


adjust_function ist folgendermaßen aufgebaut:

Code:
function adjust_function(~,event,hImage)
 
data = getappdata(hImage,'calib');
 
[variable] = data{:};
 
 
%Bildeinzug
imgl=(event.Data); %Bild der linken Kamera wird eingezogen
hImage.CData = imgl;
 
%% hier soll das bild der rechten kamera ebenfalls eingezogen werden
%% kalibrierdaten der einzelnen kameras auf die einzelnen Bilder %%angewendet werden
%% diese Bilder zusammengeführt zu einem großen Bild werden
%% Merkmal betrachtet und als Diagramm ausgegeben werden
 
 
 
figure(30)
 plot('platzhalter')
 
 
 
end
 
 



Wie gesagt, das kalibrieren, zusammenführen und ausgeben steh als algorithmus. Mir geht es jetzt nur darum, die Bilder beider Kameras zusammenzuführen.

Die Kameras sind über Ethernet angeschlossen. Ich habe schon diverses probiert, aber nichts davon führte zum Ziel.

Unter anderem habe ich hImage als struct definiert und wollte es an adjust_function so übergeben, aber das funktioniert nicht, da setappdate nur mit handle arbeiten kann.

Gruß
pieee
Private Nachricht senden Benutzer-Profile anzeigen


pieee
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2017, 08:38     Titel:
  Antworten mit Zitat      
push
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.07.2017, 10:00     Titel: Re: Livebilder von 2 kameras zusammenführen & bearbeite
  Antworten mit Zitat      
Hallo pieee,

Ich verstehe die Frage nicht. Sie enthält eine Menge Details, ide eventuell für das eigentliche Problem gar nicht relevant sind, oder?

Zitat:
Das Problem ist jetzt, wie man sicher oben sieht:

Ich kann den Code nicht laufen lassen und ich "sehe" das Problem nicht im Code.

Zitat:
setappdata funktioniert nur, wenn ein image handle, hier himage übergeben wird.

Wieso? setappdata funktioniert natürlich auch in allen anderen Fällen. Wo ist also genau das Problem?

"setappdata(hImage,'calib',{variable})" sagt mir nicht wirklich etwas. Oben drüber finde ich "variable1" und "variable2". aber was ist "variable"? Das mit den "Platzhaltern" ist eher verwirrend.

Zitat:
Wie gesagt, das kalibrieren, zusammenführen und ausgeben steh als algorithmus. Mir geht es jetzt nur darum, die Bilder beider Kameras zusammenzuführen.

Und das ist noch zu abstrakt.

Zitat:
Ich habe schon diverses probiert, aber nichts davon führte zum Ziel.

Dann poste, was Du versucht hast und erklären, woran es noch scheitert.

Gruß, Jan
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.