error trying to read files
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
hasan alhussaini
am 2 Aug. 2017
Beantwortet: Walter Roberson
am 2 Aug. 2017
Hi
I'm struggling with the current code i'm translated from idl, basically I've got a list of darkfield images named dark1,dark2,dark3,dark4,dark5. and a list of flatfield images named flat1,flat2,flat3,flat4,flat5 i'm trying to create a loop on the darkfield images and flatfield images and calculate their average using the code below. i get an error when the code starts a loop for k = 1:ndark
filesAndFolders = dir(workdir);
filesInDir = filesAndFolders(~([filesAndFolders.isdir])); % Returns only the files in the directory
j=1;
for i=1:length(filesInDir)
if(strfind(filesInDir(i).name,'flat'))
flatlist{j} = filesInDir(i).name;
j=j+1;
end
end
nflat = numel(flatlist);
%darklist = file_search(workdir,'dark*')
j=1;
for i=1:length(filesInDir)
if(strfind(filesInDir(i).name,'dark'))
darklist{j} = filesInDir(i).name;
j=j+1;
end
end
ndark = numel(darklist);
dark = zeros(ysize,xsize);
flat = zeros(ysize,xsize);
for k = 1:ndark
imtemp = imread(darklist{k});
dark = dark+double(imtemp)./ndark;
% ;Average dark images
end
for k = 1:nflat
imtemp = imread(flatlist{k});
flat = flat+double(imtemp)./nflat;
%;Average flat image
end
flatsub = flat-dark;
flatsub(find(flatsub <= 0)) = 1;
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 2 Aug. 2017
flatinfo = dir( fullfile(workdir, 'flat*') );
flatlist = fullfile( workdir, {flatinfo.name} );
nflat = numel(flatlist);
darkinfo = dir( fullfile(workdir, 'dark*') );
darklist = fullfile( workdir, {darkinfo.name} );
ndark = numel(darklist);
flat = zeros(ysize,xsize);
for K = 1 : nflat
imtemp = imresize( imread(flatlist{k}), [ysize, xsize] );
flat = flat + double(imtemp);
end
flat = flat ./ nflat;
dark = zeros(ysize,xsize);
for K = 1 : ndark
imtemp = imresize( imread(darklist{k}), [ysize, xsize] );
dark = dark + double(imtemp);
end
dark = dark ./ ndark;
flatsub = flat - dark;
flatsub(flatsub <= 0) = 1;
But are you sure that you want to set the zero / negative areas to 1 and not to 0? To me it would make more sense to use
flatsub = max(0, flat - dark);
which would use 0 for places that would have been negative.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu File Operations 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!