| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | function RDXTPS_exportPinnGrid4Tomo (Geometry, optResults)%RDXTPS_EXPORTPINNGRID4TOMO Export CT or dose grid to Pinnacle format for Tomo import%   RDXTPS_exportPinnGrid4Tomo write the *.header and *.img pair in Pinnacle%   format which can be imported into research version of Tomo TPS.%%   Example:%       RDXTPS_exportPinnGrid4Tomo(Geometry, optResults)%%   See also N/A%%   Copyright Nobody[filename, pathname] = uifile('put', '*', 'Save the export CT image as (without extension)');ct_filebase = fullfile(pathname, filename);% Write CT gridfid = fopen([ct_filebase '.img'], 'w');fwrite(fid, apply_transformation(Geometry.data), 'short');fclose(fid);% Write CT headerfid = fopen([ct_filebase '.header'], 'w');fprintf(fid, 'read_conversion : \n');fprintf(fid, 'write_conversion : \n');fprintf(fid, 'data_type : short\n');fprintf(fid, 'byte_order = 0\n');fprintf(fid, 'bytes_pix = 2\n');fprintf(fid, 'vol_min = \n');fprintf(fid, 'vol_max = \n');fprintf(fid, 'x_dim = %d\n', size(Geometry.rhomw, 1));fprintf(fid, 'y_dim = %d\n', size(Geometry.rhomw, 2));fprintf(fid, 'z_dim = %d\n', size(Geometry.rhomw, 3));fprintf(fid, 'dim_units : \n');fprintf(fid, 'x_pixdim = %f\n', Geometry.voxel_size(1));fprintf(fid, 'y_pixdim = %f\n', Geometry.voxel_size(2));fprintf(fid, 'z_pixdim = %f\n', Geometry.voxel_size(3));fprintf(fid, 'x_start = %f\n', Geometry.start(1));fprintf(fid, 'y_start = %f\n', Geometry.start(2));fprintf(fid, 'z_start = %f\n', Geometry.start(3));fprintf(fid, 'date : \n');fprintf(fid, 'db_name : \n');fclose(fid);% Repeat for dose[filename, pathname] = uifile('put', '*', 'Save the export dose image as (without extension)');dose_filebase = fullfile(pathname, filename);% Write dose gridfid = fopen([dose_filebase '.img'], 'w');fwrite(fid, apply_transformation(optResults.dose{end}), 'single');fclose(fid);% Write dose headerfid = fopen([dose_filebase '.header'], 'w');fprintf(fid, 'read_conversion : \n');fprintf(fid, 'write_conversion : \n');fprintf(fid, 'data_type : float\n');fprintf(fid, 'byte_order = 0\n');fprintf(fid, 'bytes_pix = 4\n');fprintf(fid, 'vol_min = \n');fprintf(fid, 'vol_max = \n');fprintf(fid, 'x_dim = %d\n', size(Geometry.rhomw, 1));fprintf(fid, 'y_dim = %d\n', size(Geometry.rhomw, 2));fprintf(fid, 'z_dim = %d\n', size(Geometry.rhomw, 3));fprintf(fid, 'dim_units : \n');fprintf(fid, 'x_pixdim = %f\n', Geometry.voxel_size(1));fprintf(fid, 'y_pixdim = %f\n', Geometry.voxel_size(2));fprintf(fid, 'z_pixdim = %f\n', Geometry.voxel_size(3));fprintf(fid, 'x_start = %f\n', Geometry.start(1));fprintf(fid, 'y_start = %f\n', Geometry.start(2));fprintf(fid, 'z_start = %f\n', Geometry.start(3));fprintf(fid, 'date : \n');fprintf(fid, 'db_name : \n');fclose(fid);    % Apply appropriate transformation to fit Pinnacle format to input matrix M    function M = apply_transformation(M)        for i = 1:size(M, 3)            M(:,:,i) = rot90(M(:,:,i), 1);        end        M = flipdim(M, 3);    endend
 |