https://github.com/Chaogan-Yan/REST
Raw File
Tip revision: 5f9de23b90b10fd5eca9e9bc1016bbde75d43ab6 authored by Chaogan-Yan on 16 June 2013, 16:06:36 UTC
Fixed a bug in temporal correlation of two groups of images in Image Calculator;The midline of VMHC results were set to zero.
Tip revision: 5f9de23
rest_ChangeOrigin.m
function rest_ChangeOrigin(ADataDir, ANewOrigin)
%Change the orgin of ANALYZE 7.5 
%-----------------------------------------------------------
%	Copyright(c) 2007~2010
%	State Key Laboratory of Cognitive Neuroscience and Learning in Beijing Normal University
%	Written by Xiao-Wei Song 
%	http://resting-fmri.sourceforge.net
%	Dawnwei.Song@gmail.com
%-----------------------------------------------------------
    theFileList = dir(ADataDir);	
	ImgFileList ={};
	for x = 3:size(struct2cell(theFileList),2)
	    if strcmpi(theFileList(x).name(end-3:end), '.hdr') 
	        if strcmpi(theFileList(x).name(1:end-4), theFileList(x+1).name(1:end-4))
				ImgFileList=[ImgFileList; {theFileList(x).name(1:end-4)}];
            else
                error('*.{hdr,img} should be pairwise. Please re-examin them.');
            end
	    end
	end
	clear theFileList;
	
	%read the normalized functional images 
	% -------------------------------------------------------------------------
	fprintf('\n\t Read 3D EPI functional images: "%s".', ADataDir);	
	for x = 1:size(ImgFileList,1),    		
		rest_waitbar(x/size(ImgFileList,1), ...
					ImgFileList{x}, ...
					'Reset origin','Child','NeedCancelBtn');
		theFilename = fullfile(ADataDir,ImgFileList{x});				
		% [theOneTimePoint VoxelSize, Origin] = rest_readfile(theFilename);
        
        %theNewFilename =fullfile(ADataDir,['x', ImgFileList{x}]);
        % rest_writefile(theOneTimePoint,theFilename,size(theOneTimePoint),VoxelSize',ANewOrigin,'int16')
		
		hdr_ChangeOrigin(theFilename, ANewOrigin);
		if ~mod(x,5)
			fprintf('.');		
		end
    end
    fprintf('\n\t Reset origin over: "%s".', ADataDir);	
    rest_waitbar;
	
	
function hdr_ChangeOrigin(AFilename, ANewOrigin)
	if length(AFilename)>4
		if strcmpi(AFilename(end-3:end), '.hdr')
		  AFilename = AFilename(1:end-4);
		end
		if strcmpi(AFilename(end-3:end), '.img')
		  AFilename = AFilename(1:end-4);
		end
	end

	% open .hdr file
	fid = fopen([AFilename,'.hdr'],'r+');
	if fid > 0
	fseek(fid,40,'bof');
	dim = fread(fid,8,'int16');
	byteswap = 'native';
	% byte swapping 
	if (dim(1) > 15 | dim(1) < 0)
		byteswap = 'ieee-be';
		fclose(fid);
		fid = fopen([AFilename,'.hdr'],'r','ieee-be');
		fseek(fid,40,'bof');
		dim = fread(fid,8,'int16');
		if (dim(1) > 15 | dim(1) < 0)
			byteswap = 'ieee-le';
			fclose(fid);
			fid = fopen([AFilename,'.hdr'],'r','ieee-le');
			fseek(fid,40,'bof');
			dim = fread(fid,8,'int16');
			if (dim(1) > 15 | dim(1) < 0)
				error('Error opening header file. Dimension error');end
		end
	end
	else error(sprintf('Error opening header file. Please check whether the %s.hdr file exist.',filename));end

	%Dawnsong added, 20070904, for ROI coordinate transformation
	fseek(fid,148+105,'bof');
	Origin = fread(fid,3,'int16');
	%fclose(fid);
	
	%fid = fopen([AFilename,'.hdr'],'r+');
	fseek(fid,148+105,'bof');
	fwrite(fid,[ANewOrigin,0,0],'int16');
	fclose(fid);
back to top