Clear Filters
Clear Filters

Read run-length encoding data from a table

4 views (last 30 days)
Jacopo Biasetti
Jacopo Biasetti on 9 Jul 2022
Edited: Jan on 10 Jul 2022
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

Answers (2)

dpb
dpb on 9 Jul 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
Jan on 10 Jul 2022
Edited: Jan on 10 Jul 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);

Categories

Find more on Data Import and Export in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!