source: trunk/src/binread_rdv.m @ 804

Last change on this file since 804 was 784, checked in by sommeria, 10 years ago

adpat uvmat to reading data from rdvision

File size: 2.1 KB
Line 
1function [imgs,timestamps,nb_frames]=binread_rdv(filename,frame_idx)
2% BINREAD_RDV Permet de lire les fichiers bin générés par Hiris à partir du
3% fichier seq associé.
4%   [IMGS,TIMESTAMPS,NB_FRAMES] = BINREAD_RDV(FILENAME,FRAME_IDX) lit
5%   l'image d'indice FRAME_IDX de la séquence FILENAME.
6%
7%   Entrées
8%   -------
9%   FILENAME  : Nom du fichier séquence (.seq).
10%   FRAME_IDX : Indice de l'image à lire. Si FRAME_IDX vaut -1 alors la
11%   séquence est entièrement lue. Si FRAME_IDX est un tableau d'indices
12%   alors toutes les images d'incides correspondant sont lues. Si FRAME_IDX
13%   est un tableau vide alors aucune image n'est lue mais le nombre
14%   d'images et tous les timestamps sont renvoyés. Les indices commencent à
15%   1 et se termines à NB_FRAMES.
16%
17%   Sorties
18%   -------
19%   IMGS        : Images de sortie.
20%   TIMESTAMPS  : Timestaps des images lues.
21%   NB_FRAMES   : Nombres d'images dans la séquence.
22
23
24
25if nargin<2
26   frame_idx=-1;
27end
28
29s=ini2struct(filename);
30
31w=str2double(s.sequenceSettings.width);
32h=str2double(s.sequenceSettings.height);
33bpp=str2double(s.sequenceSettings.bytesperpixel);
34bin_file=s.sequenceSettings.binfile;
35nb_frames=str2double(s.sequenceSettings.numberoffiles);
36
37[p,f]=fileparts(filename);
38
39%bin_dir=s.sequenceSettings.bindirectory;
40%if isempty(bin_dir)
41   bin_dir=p;
42%end
43
44sqb_file=fullfile(p,[f '.sqb']);
45m = memmapfile(sqb_file,'Format', { 'uint32' [1 1] 'offset'; ...
46   'uint32' [1 1] 'garbage1';...
47   'double' [1 1] 'timestamp';...
48   'uint32' [1 1] 'file_idx';...
49   'uint32' [1 1] 'garbage2' },'Repeat',nb_frames);
50
51data=m.Data;
52off=[data.offset];
53timestamps=[data.timestamp];
54file_idx=[data.file_idx];
55
56if frame_idx==-1
57   frame_idx=1:nb_frames;
58end
59
60classname=sprintf('uint%d',bpp*8);
61imgs=zeros([h,w,length(frame_idx)],classname);
62
63classname=['*' classname];
64
65for i=1:length(frame_idx)
66   ii=frame_idx(i);
67   f=fullfile(bin_dir,sprintf('%s%.5d.bin',bin_file,file_idx(ii)));
68   fid=fopen(f,'rb');
69   fseek(fid,off(ii),-1);   
70   imgs(:,:,i)=reshape(fread(fid,w*h,classname),w,h)';
71   fclose(fid);
72end
73
74if ~isempty(frame_idx)
75   timestamps=timestamps(frame_idx);
76end
Note: See TracBrowser for help on using the repository browser.