speeding up fread for true 12bit data
Mostrar comentarios más antiguos
I'm using fread to load 12bit data files (raw files from a high-speed camera). The relevant part of the code is here:
precision='ubit12=>uint16'; % convert 12bit to 16bit on reading
machinefmt='b';
fseek(mraw_file, 0, 'bof');
vid_segments=fread(mraw_file,inf,precision,machinefmt);
N = [im_width im_height length(frames)];
im=permute(reshape(vid_segments,N),[2 1 3]);
The code is working smoothly, however I've noticed that it is about 10x slower than if I use the same code to read other data stored as 16bit data using:
precision='*uint16';
I'm guessing this is because of how Matlab deals with data that isn't formatted as multiples of 1 byte? Is there any way I can read in the 12bit data files faster, using 8bit or 16bit precision and then converting to 12 bit?
For reference, the data is true 12bit so 2 x 12 bits of data = 3 bytes. It's not padded with zeros or random numbers so that 1 x 12bit of data = 2 bytes (which would simplify things).
Any help would be greatly appreciated!
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Parallel Computing en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!