1 #include "mrilib.h"
2
3 /*----------------------------------------------------------------------------*/
4
THD_image_to_dset(MRI_IMAGE * im,char * prefix)5 THD_3dim_dataset * THD_image_to_dset( MRI_IMAGE *im , char *prefix )
6 {
7 THD_3dim_dataset *dset ;
8 MRI_IMAGE *cim ;
9 THD_ivec3 ivec , orixyz ;
10 THD_fvec3 fvec ;
11
12 ENTRY("THD_image_to_dset") ;
13
14 if( im == NULL ) RETURN(NULL) ;
15
16 dset = EDIT_empty_copy(NULL) ;
17
18 LOAD_IVEC3( ivec , im->nx , im->ny , im->nz ) ;
19
20 LOAD_FVEC3( fvec , -0.5f*(im->nx-1) , -0.5f*(im->ny-1) , -0.5f*(im->nz-1) ) ;
21
22 orixyz.ijk[0] = ORI_L2R_TYPE ; /* 02 Feb 2018 */
23 orixyz.ijk[1] = ORI_A2P_TYPE ; /* orient it so Left-on-Left viewing is good */
24 orixyz.ijk[2] = ORI_I2S_TYPE ; /* since L-on-L viewing is the AFNI default */
25
26 EDIT_dset_items( dset ,
27 ADN_nxyz , ivec ,
28 ADN_xyzorg , fvec ,
29 ADN_xyzorient , orixyz ,
30 ADN_type , HEAD_FUNC_TYPE ,
31 ADN_func_type , FUNC_FIM_TYPE ,
32 ADN_none ) ;
33
34 if( THD_filename_ok(prefix) )
35 EDIT_dset_items( dset , ADN_prefix , prefix , ADN_none ) ;
36
37 dset->dblk->diskptr->storage_mode = STORAGE_BY_IMAGE_FILE ;
38 DSET_superlock(dset) ; /* can't be purged from memory */
39
40 cim = mri_copy(im) ;
41 EDIT_substitute_brick( dset , 0 , cim->kind , mri_data_pointer(cim) ) ;
42 mri_clear_data_pointer(cim) ; mri_free(cim) ;
43
44 RETURN(dset) ;
45 }
46
47 /*----------------------------------------------------------------------------*/
48
THD_open_image(char * fname)49 THD_3dim_dataset * THD_open_image( char *fname )
50 {
51 MRI_IMAGE *im ; THD_3dim_dataset *dset ;
52
53 ENTRY("THD_open_image") ;
54
55 im = mri_read_stuff(fname) ;
56
57 if( im == NULL ) RETURN(NULL) ;
58
59 dset = THD_image_to_dset(im,THD_trailname(fname,0)) ;
60 mri_free(im) ;
61
62 RETURN(dset) ;
63 }
64