126 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
| clear all ; close all
 | |
| % Load dicom
 | |
| 
 | |
| 
 | |
| name = 'Ronald' ; 
 | |
| 
 | |
| if strcmp(name, 'Ronald')
 | |
|     path_all = [
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Ronald/FH/DICOM/IM_0001',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Ronald/AP/DICOM/IM_0001',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Ronald/RL/DICOM/IM_0001'
 | |
|         ] ; 
 | |
| end
 | |
| 
 | |
| if strcmp(name, 'Jeremias')
 | |
|     path_all = [
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Jeremias/FH/DICOM/IM_0001',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Jeremias/AP/DICOM/IM_0001',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190909_Jeremias/RL/DICOM/IM_0001'
 | |
|         ] ; 
 | |
| end
 | |
| 
 | |
| if strcmp(name, 'Hugo')
 | |
|     path_all = [
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Hugo/Dicom/DICOM/IM_0013',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Hugo/Dicom/DICOM/IM_0009',
 | |
|         '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Hugo/Dicom/DICOM/IM_0005'
 | |
|         ] ; 
 | |
| end
 | |
| 
 | |
| for i=1:3
 | |
| 
 | |
|     if i==1
 | |
|         %path = '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Paloma/Dicom/DICOM/IM_0013'
 | |
|         disp('Reading the FH component from ...')
 | |
|         path = path_all(1,:)
 | |
|     end
 | |
|     
 | |
|     if i==2
 | |
|         %path = '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Paloma/Dicom/DICOM/IM_0009' ;
 | |
|         disp('Reading the AP component from ...')
 | |
|         path = path_all(2,:)
 | |
|     end
 | |
|     
 | |
|     if i==3
 | |
|         %path = '/home/yeye/Desktop/PhD/MEDICAL_DATA/DatosSEPT2019/20190924_Paloma/Dicom/DICOM/IM_0005' ;
 | |
|         disp('Reading the RL component from ...')
 | |
|         path = path_all(3,:)
 | |
|     end
 | |
|  
 | |
| 
 | |
| I_info = dicominfo(path);
 | |
| I = double(dicomread(path));
 | |
| VENC = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_1.MRVelocityEncodingSequence.Item_1.VelocityEncodingMaximumValue']) ;
 | |
| heart_rate = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_1.Private_2005_140f.Item_1.HeartRate']);
 | |
| 
 | |
| 
 | |
| MAG = zeros(size(I,1),size(I,2),I_info.Private_2001_1018,I_info.Private_2001_1017);
 | |
| PHASE = zeros(size(I,1),size(I,2),I_info.Private_2001_1018,I_info.Private_2001_1017);
 | |
| 
 | |
| for n=1:size(I,4)
 | |
|     
 | |
|     RI = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_',num2str(n),'.Private_2005_140f.Item_1.RescaleIntercept']); % intercept
 | |
|     RS = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_',num2str(n),'.Private_2005_140f.Item_1.RescaleSlope']); % slope
 | |
|     cp = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_',num2str(n),'.Private_2005_140f.Item_1.Private_2001_1008']); %cp
 | |
|     slc = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_',num2str(n),'.Private_2005_140f.Item_1.Private_2001_100a']); %scl
 | |
|     id = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_',num2str(n),'.Private_2005_140f.Item_1.Private_2005_106e']); % PCA o FFE
 | |
|     
 | |
|     if strcmp(id,'FFE')==1
 | |
|         MAG(:,:,slc,cp) = I(:,:,1,n)*RS + RI;
 | |
|     else
 | |
|         PHASE(:,:,slc,cp) = I(:,:,1,n)*RS + RI;
 | |
|     end 
 | |
|     
 | |
| end
 | |
| 
 | |
| 
 | |
| MASK = double(abs((PHASE==PHASE(1,1,1,1))-1));
 | |
| PHASE = PHASE.*MASK;
 | |
| 
 | |
| 
 | |
| if i==1
 | |
|     MR_FFE_FH = MAG;
 | |
|     MR_PCA_FH = VENC*PHASE/pi/100;
 | |
| end
 | |
| 
 | |
| if i==2
 | |
|     MR_FFE_AP = MAG;
 | |
|     MR_PCA_AP = VENC*PHASE/pi/100;
 | |
| end
 | |
| if i==3
 | |
|     MR_FFE_RL = MAG;
 | |
|     MR_PCA_RL = VENC*PHASE/pi/100;
 | |
| end
 | |
| 
 | |
| 
 | |
| end
 | |
| 
 | |
| 
 | |
| disp('Saving the data ...')
 | |
| 
 | |
| spaceslices = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_1.PixelMeasuresSequence.Item_1.SpacingBetweenSlices']);
 | |
| pixelspacing = eval(['I_info.PerFrameFunctionalGroupsSequence.Item_1.PixelMeasuresSequence.Item_1.PixelSpacing']);
 | |
| 
 | |
| disp('voxel-size recognized:')
 | |
| voxel_MR = [pixelspacing(1),pixelspacing(1),spaceslices]
 | |
| 
 | |
| 
 | |
| data = [];
 | |
| data.MR_FFE_AP = MR_FFE_AP;
 | |
| data.MR_FFE_RL = MR_FFE_RL;
 | |
| data.MR_FFE_FH = MR_FFE_FH;
 | |
| data.MR_PCA_AP = MR_PCA_AP;
 | |
| data.MR_PCA_RL = MR_PCA_RL;
 | |
| data.MR_PCA_FH = MR_PCA_FH;
 | |
| data.type = 'DAT';
 | |
| data.VENC = VENC ;
 | |
| data.voxel_MR = voxel_MR;
 | |
| data.heart_rate = heart_rate;
 | |
| 
 | |
| save('/home/yeye/Desktop/data.mat','data','-v7.3');
 | |
| disp('data saved')
 | |
| 
 | |
| 
 | |
| 
 | |
|      |