want to order and group files
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
sesilia maidelin
am 12 Jul. 2021
Kommentiert: sesilia maidelin
am 21 Jul. 2021
hi there! so I have folders containing dicom files and bitmap files of the dicom data. the dicom files have names that corresponds with the bitmap files, with one dicom files corresponding to many bitmap files so for exampe, the dicom name is 00022.dcm while the corresponding bitmap files would be 2015220700022_Frame20.bmp, 2015220700022_Frame21.bmp and so on, the number after the frame marks which frame of the dicom sequence the bitmap picture is.
the bitmap files and dicom files are in different folders, and the dicom files are located in the subfolder while the input is in a different main folder but both are still in the same path.
what i want to do is to pair the dicom files with its corresponding bitmap in a new folder, a folder for each dicom name ( so eg. folder 00022 contains dicom file 00022.dcm and the bitmap sequences. I have tried a lot of the examples posted here to no avail please help!
trying to apply dir to dicom
% dicom files
mainfolder = 'Users/smn/Downloads/summer project/CL2 Dicom/Daniel';
subfolders = dir(fullfile(mainfolder, 'P*'));
subfolder_list = {subfolders(:).name}; % relevant filenames in folders
for i = 1 : length(subfolder_list)
mkdir( dicomname ) % dicom name hasnt been implemented yet
end
%for input
input = 'Users/smn/Downloads/summer project/input';
if ~isdir(input)
errmsg = sprintf('Error: The following folder does not exist:\n%s', input);
return;
end
seq = '*'; %sequence of bitmap file ( 1,2,34, etc)
I = dir( fullfile( input, '*_Frameseq.bmp')) % i want to group the files based on the asterisk in this %line
I = natsortfiles(I);
for k = 1: numel(I);
mkdir(F)
F = fullfile(input, I(k).name) % grouping bitmap files based on three digits before _,
end
0 Kommentare
Akzeptierte Antwort
Ive J
am 13 Jul. 2021
You can try regexp or pattern:
dcm = "00022.dcm";
bmp = ["2015220700022_Frame20.bmp", "2015220700023_Frame20.bmp", "2015220700022_Frame23.bmp"];
% with pattern
ptt = digitsPattern + regexprep(dcm, '.dcm$', '') + "_";
matchedIdx = contains(bmp, ptt)
% with regexp
matchedIdx = ~cellfun(@isempty, regexp(bmp, "\d+" + regexprep(dcm, '.dcm$','') + "_"))
6 Kommentare
Ive J
am 21 Jul. 2021
@sesilia maidelin can you set a breakpoint before your loop and save workspace to a mat file and upload it here?
save('mywdData.mat', 'dcmlist', 'bmplist', 'nufolderpath') % then upload mywdData.mat here
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu DICOM Format finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!