Read run-length encoding data from a table
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
I have the attached table where the second column (EncodedPixels) contains the run-length encoding of bounding box masks.
I wonder how to transform each row in the column EncodedPixels into double for subsequent manipulation.
Thanks,
Jacopo
0 comentarios
Respuestas (2)
dpb
el 9 de Jul. de 2022
Not sure what the next step(s) are, but to convert each row use something like
data=reshape(str2double(split(tT.EncodedPixels(i)).'),2,[]).';
where i=1:height(test_table)
You can probably avoid the above step by reading the data in in proper format as numeric from the beginning, though; I presume these came from some other input file? Show us the format for it and we can probably read directly into numeric array.
Jan
el 10 de Jul. de 2022
Editada: Jan
el 10 de Jul. de 2022
This is one of the files I would not import with readtable, but manually:
[fid, msg] = fopen(FileName, 'r');
assert(fid > 0, 'Cannot read file: %s', msg);
k = 0;
Header = fgetl(fid);
while ~feof(fid)
S = fgetl(fid);
if ~isempty(S)
k = k + 1;
[File, Value] = strtok(S, ',')
Data(k).File = File;
Num = sscanf(Value(2:end), '%g');
% Decode run-length encoded values:
Data(k).Value = repelem(Num(1:2:end), Num(2:2:end));
% Or maybe:
% ??? Data(k).Value = repelem(Num(2:2:end), Num(1:2:end));
end
end
fclose(fid);
0 comentarios
Ver también
Categorías
Más información sobre Data Import and Export en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!