-
Notifications
You must be signed in to change notification settings - Fork 0
/
read_dovi_c.m
89 lines (78 loc) · 2.17 KB
/
read_dovi_c.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
function data = read_dovi_c(file_name)
% Copyright DoseOptics LLC 2017
%
% Reads DOVI data format into Matlab
% @param file_name - File name/location of DOVI file (e.g. 'test.dovi')
% @param data - Output data in Matlab
data = [];
% check inputs
if (length(file_name) < 5)
return;
end
if (exist(fullfile(pwd, file_name), 'file'))
file_name = fullfile(pwd, file_name);
end
% load header (dovi)
fs = fopen(file_name);
contents = textscan(fs,'%s');
fclose(fs);
x = 800;
y = 600;
z = 1;
compressed = 0;
cmp_size = 0;
ucmp_size = 0;
scalar_bytes = 2;
block = 0;
for i=1:length(contents{1})
if (length(contents{1}{i}) > 5)
if (contents{1}{i}(1:5) == 'dims0')
x = str2num(contents{1}{i}(7:end));
end
if (contents{1}{i}(1:5) == 'dims1')
y = str2num(contents{1}{i}(7:end));
end
if (contents{1}{i}(1:5) == 'dims2')
z = str2num(contents{1}{i}(7:end));
end
if (contents{1}{i}(1:5) == 'block')
block = str2num(contents{1}{i}(7:end));
end
if (length(contents{1}{i}) > 11)
if (contents{1}{i}(1:11) == 'compressed=')
compressed = str2num(contents{1}{i}(12));
end
end
if (length(contents{1}{i}) > 15)
if (contents{1}{i}(1:15) == 'compressed_size')
cmp_size = str2num(contents{1}{i}(17:end));
end
end
if (length(contents{1}{i}) > 17)
if (contents{1}{i}(1:17) == 'uncompressed_size')
ucmp_size = str2num(contents{1}{i}(19:end));
end
end
if (length(contents{1}{i}) > 12)
if (contents{1}{i}(1:12) == 'scalar_bytes')
scalar_bytes = str2num(contents{1}{i}(14:end));
end
end
end
end
z=1;
compressed = false;
fn_new = [file_name(1:end-5) '_c.raw'];
% load data
if (~exist(fn_new, 'file'))
return;
end
fs = fopen(fn_new);
data = fread(fs, [x,y], 'uint32');
fclose(fs);
data = uint32(reshape(data, x, y, 1));
data = permute(data, [2 1 3]);
% cleanup
% if (compressed)
% delete(fn_new);
% end