Read run-length encoding data from a table

조회 수: 2 (최근 30일)
Jacopo Biasetti
Jacopo Biasetti 2022년 7월 9일
편집: Jan 2022년 7월 10일
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

답변 (2개)

dpb
dpb 2022년 7월 9일
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.
  댓글 수: 1
Jacopo Biasetti
Jacopo Biasetti 2022년 7월 10일
Thanks for your reply.
Here is the original file, it comes in csv format.

댓글을 달려면 로그인하십시오.


Jan
Jan 2022년 7월 10일
편집: Jan 2022년 7월 10일
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);

카테고리

Help CenterFile Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by