Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Live-Verarbeitung von zusammengesetzten Bildern aus Einzelbildern aus zwei Kameras klappt nicht
Autor
Universität/Hochschule Live-Verarbeitung von zusammengesetzten Bildern aus Einzelbildern aus zwei Kameras klappt nicht
pieee
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2013
Mitteilungen: 206
  Themenstart: 2017-07-19

Guten Tag, ich verzweifel hier langsam an einer Programmierung, da mir bisher auch niemand anderes helfen konnte. 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. \sourceon matlab 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) \sourceoff 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: \sourceon matlab 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 \sourceoff 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


   Profil
pieee
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2013
Mitteilungen: 206
  Beitrag No.1, vom Themenstarter, eingetragen 2017-07-19

push


   Profil
pieee
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2013
Mitteilungen: 206
  Beitrag No.2, vom Themenstarter, eingetragen 2017-07-20

hat keiner eine Idee? Ich bin für jeden Tipp dankbar. Kann auch gern ein anderer Ansatz werden, den ich selber vielleicht noch nicht bedacht habe. Grüße Pieee


   Profil

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]