| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | function [change,error_handle]=dicomrt_sortct(filelist,xlocation,ylocation,zlocation,filename)% dicomrt_sortct(filelist,xlocation,ylocation,zlocation,filename)%% Sort CT data set specified in filename. %% See also dicomrt_loaddose, dicomrt_loadct, dicomrt_loadctlist%% Copyright (C) 2002 Emiliano Spezi (emiliano.spezi@physics.org) % Set parameterscounter=0;error_handle=0;match=0;% sort ct slices with respect to their z location[zlocation_sorted,sorted_index]=sort(zlocation);% Progress barh = waitbar(0,['Sorting progress:']);set(h,'Name','dicomrt_sortct: sorting CT images');diff_location=dicomrt_mmdigit(zlocation_sorted-zlocation,6);if find(diff_location) % ct slices are not sorted    disp('Message: slices are not sorted!');    change=1;    % sort filelist accordingly    filelist_sorted=' ';    for i=1:length(sorted_index)        counter=counter+1;        filelist_sorted=char(filelist_sorted,filelist(sorted_index(i),:));        xlocation_sorted(i)=xlocation(sorted_index(i));        ylocation_sorted(i)=ylocation(sorted_index(i));        waitbar(i/length(sorted_index),h);    end        xlocation_sorted=xlocation_sorted';    ylocation_sorted=ylocation_sorted';    filelist_sorted(1,:)=[];    disp('Message: ct slices are now sorted!');    % finds duplicates    duplicate_index=0;    [duplicate]=diff(zlocation_sorted);    [duplicate_index]=find(duplicate==0);    if length(duplicate_index)~=0        warning('dicomrt_sortct: Images with the same zlocation were found. You can exit now or proceed to delete duplicates.');        leaveoption=input('Exit now ? (Y/N) [N]','s');        if leaveoption == 'Y' | leaveoption == 'y';            disp('OK. Check your file list and try again. ');            error_handle=1;return;        else            duplicates_name=' ';            filelist_sorted_scrub=' ';            for i=1:length(duplicate_index)                duplicates_name=char(duplicates_name,filelist_sorted(duplicate_index(i),:));                filelist_sorted(duplicate_index(i),1:10)='duplicate-'; % mark duplicates                xlocation_sorted(duplicate_index(i))=pi;                ylocation_sorted(duplicate_index(i))=pi;            end            for i=1:length(filelist_sorted)                if isequal(filelist_sorted(i,1:10),'duplicate-')~=1                    filelist_sorted_scrub=char(filelist_sorted_scrub,filelist_sorted(i,:));                else                end            end % at this point duplicates are deleted in new filelist                        filelist_sorted_scrub(1,:)=[];            disp('The following duplicates has been deleted from file list:');            duplicates_name(1,:)=[];            duplicates_name            %            % now sorting xlocation and ylocation accordingly to what done before            % (prepare for scout images identification)            %            for i=1:length(xlocation_sorted)                if xlocation_sorted(i)~=pi                    xlocation_sorted_scrub=xlocation_sorted(i);                end            end            for i=1:length(ylocation_sorted)                if ylocation_sorted(i)~=pi                    ylocation_sorted_scrub=ylocation_sorted(i);                end            end        end    else        filelist_sorted_scrub=filelist_sorted;    end        % Export sorted/scrubed filelist    newfilename=[filename,'.sort.txt'];    newfile=fopen(newfilename,'w');        for i=1:size(filelist_sorted_scrub,1)        fprintf(newfile,'%s',filelist_sorted_scrub(i,:)); fprintf(newfile,'\n');    end        fclose(newfile);    disp(['A new file list has been written by dicomrt_sortct with name: ',newfilename]);    disp('This file will be used to import ct data instead');    else % ct slices are already sorted    change=0;end% Close progress barclose(h);
 |