Image Data Buffer for ALP memory

1 vue (au cours des 30 derniers jours)
Peer Blumido
Peer Blumido le 20 Fév 2020
Commenté : Peer Blumido le 27 Fév 2020
Hello,
i'm trying to find a solution to load multiple pictures into the memory of a Digital Micromirror Device.
% This works fine for only one picture
PicOffset = int32(0);
PicLoad = int32(0); % Change for number of pictures, pic = 1 -> int32(0)
assignin('base','PicOffset',PicOffset);
assignin('base','PicLoad',PicLoad);
pic = imread('test.jpg'); % Picture
pic = rgb2gray(pic);
pic = fliplr(pic);
imwrite(pic,'pic.png');
UserArray = uint8(pic); % UserArray for memory
UserArrayPtr = libpointer('voidPtr',UserArray); % Pointer for UserArray
[STATUS_ALP_SEQ_PUT, ~] = calllib('alp4395','AlpSeqPut', ALP_ID, SequenceID, PicOffset, PicLoad, UserArrayPtr); % UserArray will be loaded into memory
I tried to execute the DLL function multiple times for different pictures but this didnt work. All pictures have to be connected to the same SequenceID.
All what i've got about this function is "UserArrayPtr - pointer to the user data to be loaded" and "pointer to a readable image data buffer".
How can i create a image data buffer or how does this looks like in this case?
Thanks a lot for any suggestions!
  4 commentaires
Guillaume
Guillaume le 26 Fév 2020
By format I meant memory layout, e.g. it could be row or column major, if the type is more than 8-bit (yours isn't it looks like) it could be little or big endian, if there's more than one colour channel, they could be interlaced or plane by plane, or you could even have one of the many bayer encoding. Some 12-bit monochrome camera sensors pack 4 pixels in 3 bytes, etc. Each device has its own way of storing the image pixels.
However, it doesn't sound that it's what you're after. But similarly, the C library documentation should specify how the image sequence should be stored and what you need to pass to the function. Possibly, you just put all the images one after the other in memory and pass a pointer to the first image as well as an image count. This should be documented by your library.
Peer Blumido
Peer Blumido le 27 Fév 2020
Hey Guillaume,
the problem is solved. The image data buffer has not be a matrix, it has to be an array and it seems the hardware rebuild these rows to an image.
I have to seperate every row (1:1080) and put them to only one long row (1920*1080 = 2.073.600 values).
When i select multipe pictures my array increases to n*2.073.600.
Thanks for your help again! :)

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Image Processing and Computer Vision dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by