Skip to content
Snippets Groups Projects
Commit 87c44b0a authored by am0ebe's avatar am0ebe
Browse files

.

parent 79910079
Branches
No related tags found
No related merge requests found
Subproject commit 50f1bc23ad420cb0a36ed18cacdc36a68db7c3c4 Subproject commit 09360a19353558f2fb58580d08aedbb15713c655
############################### ###############################
## PART B ## PART B
############################### ###############################
V
git@gitlab.idiv.de:sugu/vimba.git git@gitlab.idiv.de:sugu/vimba.git
Does Does
> camera produces frames and timestamps > camera produces frames and stores them with timestamps
###############################
use opencv to convert raw cam images into JPEG pixel format
############################### ###############################
* camera sends the raw pictures to a storage server via a network (IP/UDP) connection * camera sends the raw pictures to a storage server via a network (IP/UDP) connection
* internal real time clock and delivers high precision time stamps, which were simultaneous recorded for every frame (use milliseconds) * internal real time clock and delivers high precision TIME STAMPS, which were simultaneous recorded for every frame (use milliseconds)
* compress frames as jpeg * compress frames as jpeg
used opencv version 3.2 imwrite() with parameter: used opencv version 3.2 imwrite() with parameter:
IMWRITE_JPEG_QUALITY 100; IMWRITE_JPEG_OPTIMIZE 1; IMWRITE_JPEG_RST_INTERVAL 4; IMWRITE_JPEG_QUALITY 100; IMWRITE_JPEG_OPTIMIZE 1; IMWRITE_JPEG_RST_INTERVAL 4;
...@@ -98,17 +98,20 @@ vimbasystem = api ...@@ -98,17 +98,20 @@ vimbasystem = api
> init / shutdown > init / shutdown
> access to cams and if's > access to cams and if's
cam api > cam > feature (settings like exposuretime or pixelformat)
interface cam > frames > img data
> ancillary data (cam settings at time of acquisition -> can be queried via feature access)
api > interface > settings/feature
frames = img data + ancillaryData frames = img data + ancillaryData
> create by api and queue in cam > create by api and queue in cam
> when image is rcv, frame will be filled -> notification > when image is rcv, frame will be filled -> notification
> process and re-enqueue1111 > process and re-enqueue at cam
GenICam - camera standard GenICam - camera standard
TL - Transport Layer - transports data from cam to sw TL - Transport Layer - transports data from cam to sw
Buffer management Buffer management
############################### ###############################
Every image acquisition requires allocating memory and handling frame buffers: Every image acquisition requires allocating memory and handling frame buffers:
...@@ -116,11 +119,33 @@ Every image acquisition requires allocating memory and handling frame buffers: ...@@ -116,11 +119,33 @@ Every image acquisition requires allocating memory and handling frame buffers:
2. Announce the buffer (this hands the frame buffer over to the API). 2. Announce the buffer (this hands the frame buffer over to the API).
3. Queue a frame (prepare buffer to be filled). 3. Queue a frame (prepare buffer to be filled).
4. Vimba fills the buffer with an image from the camera. 4. Vimba fills the buffer with an image from the camera.
5. Vimba returns the filled buffer (and hands it over to the user). 5. Vimba returns the filled buffer (and hands it over to the user -> notification).
6. Work with the image 6. Work with the image
> store as jpeg
> send to HPC
7. Requeue the frame to hand it over to the API 7. Requeue the frame to hand it over to the API
Img Capture and Acquisition C++
###############################
sync acquisition <> async acquisition sync acquisition <> async acquisition
Vimba API *captures* images <> camera *acquires* images
1. prepare img acquisition
cam.AnnounceFrame() # make vimba aware of buffer
cam.StartCapture() # start capture engine
cam.QueueFrame() # hand buffer to vimba
2. start img acquisition
AcquisitionStart()
3. image in callback func
cam.QueueFrame()
4. stop img acquisition
AcquisitionStop()
5. clean up
cam.EndCapture()
cam.FlushQueue()
cam.RevokeAllFrames()
>> conveninence funcs()
1 buffer | X buffers 1 buffer | X buffers
restrained fps | unrestrained fps restrained fps | unrestrained fps
| while working with img, the nxt img is acquired! | while working with img, the nxt img is acquired!
...@@ -131,14 +156,17 @@ Notifications ...@@ -131,14 +156,17 @@ Notifications
> register event handler > register event handler
> different thread -> !!caution! when using shared data > different thread -> !!caution! when using shared data
> ! Not all func from API can be called in event handler > ! Not all func from API can be called in event handler
> during event handler Vimba API might be blocked -> exit AFAP > during event handler Vimba API might be blocked -> exit AFA
> P>
difference? difference?
AcquisitionFrameRateAbs <> AcquisitionFrameRate AcquisitionFrameRateAbs <> AcquisitionFrameRate
-> cam feature? (== cam setting)
Frame: ## Frame:
getImage - img data getImage - img data
getBuffer - img data + ancillary data getBuffer - img data + ancillary data
GetAncillaryData - ancillary data [~ genicam chunk data] GetAncillaryData - ancillary data [~ genicam chunk data]
......
############################### ###############################
## PART C ## PART C
############################### ###############################
CT, bgs
git@gitlab.idiv.de:sugu/camtron.git git@gitlab.idiv.de:sugu/camtron.git
Does Does
......
########################### ###########################
## PART D ## PART D
########################### ###########################
CTD
git@gitlab.idiv.de:tb55xemi/itrackl-process-scripts.git git@gitlab.idiv.de:tb55xemi/itrackl-process-scripts.git
Does: Does:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment