def main(argv=None): """ Main function :param fname_anat: :param fname_centerline: :param verbose: :return: """ parser = get_parser() arguments = parser.parse_args(argv) verbose = arguments.v set_global_loglevel(verbose=verbose) fname_anat = arguments.i fname_centerline = arguments.s # load input images im_anat = Image(fname_anat) im_centerline = Image(fname_centerline) # flatten sagittal im_anat_flattened = flatten_sagittal(im_anat, im_centerline, verbose) # save output fname_out = add_suffix(fname_anat, '_flatten') im_anat_flattened.save(fname_out) display_viewer_syntax([fname_anat, fname_out])
def main(argv=None): parser = get_parser() arguments = parser.parse_args(argv if argv else ['--help']) verbose = arguments.v set_global_loglevel(verbose=verbose) printv('Load data...', verbose) nii_mt = Image(arguments.mt) nii_pd = Image(arguments.pd) nii_t1 = Image(arguments.t1) if arguments.b1map is None: nii_b1map = None else: nii_b1map = Image(arguments.b1map) if arguments.trmt is None: arguments.trmt = fetch_metadata( get_json_file_name(arguments.mt, check_exist=True), 'RepetitionTime') if arguments.trpd is None: arguments.trpd = fetch_metadata( get_json_file_name(arguments.pd, check_exist=True), 'RepetitionTime') if arguments.trt1 is None: arguments.trt1 = fetch_metadata( get_json_file_name(arguments.t1, check_exist=True), 'RepetitionTime') if arguments.famt is None: arguments.famt = fetch_metadata( get_json_file_name(arguments.mt, check_exist=True), 'FlipAngle') if arguments.fapd is None: arguments.fapd = fetch_metadata( get_json_file_name(arguments.pd, check_exist=True), 'FlipAngle') if arguments.fat1 is None: arguments.fat1 = fetch_metadata( get_json_file_name(arguments.t1, check_exist=True), 'FlipAngle') # compute MTsat nii_mtsat, nii_t1map = compute_mtsat(nii_mt, nii_pd, nii_t1, arguments.trmt, arguments.trpd, arguments.trt1, arguments.famt, arguments.fapd, arguments.fat1, nii_b1map=nii_b1map) # Output MTsat and T1 maps printv('Generate output files...', verbose) nii_mtsat.save(arguments.omtsat) nii_t1map.save(arguments.ot1map) display_viewer_syntax([arguments.omtsat, arguments.ot1map], colormaps=['gray', 'gray'], minmax=['-10,10', '0, 3'], opacities=['1', '1'], verbose=verbose)
def main(argv=None): parser = get_parser() arguments = parser.parse_args(argv) verbose = arguments.v set_global_loglevel(verbose=verbose) fname_mtr = arguments.o # compute MTR printv('\nCompute MTR...', verbose) nii_mtr = compute_mtr(nii_mt1=Image(arguments.mt1), nii_mt0=Image(arguments.mt0), threshold_mtr=arguments.thr) # save MTR file nii_mtr.save(fname_mtr, dtype='float32') display_viewer_syntax([arguments.mt0, arguments.mt1, fname_mtr])
def main(argv=None): parser = get_parser() arguments = parser.parse_args(argv if argv else ['--help']) verbose = arguments.v set_global_loglevel(verbose=verbose) input_filename = arguments.i if arguments.o is not None: output_filename = arguments.o else: output_filename = add_suffix(input_filename, '_gmseg') use_tta = arguments.t model_name = arguments.m threshold = arguments.thr if threshold > 1.0 or threshold < 0.0: raise RuntimeError("Threshold should be between 0.0 and 1.0.") # Threshold zero means no thresholding if threshold == 0.0: threshold = None from spinalcordtoolbox.deepseg_gm import deepseg_gm deepseg_gm.check_backend() out_fname = deepseg_gm.segment_file(input_filename, output_filename, model_name, threshold, int(verbose), use_tta) path_qc = arguments.qc qc_dataset = arguments.qc_dataset qc_subject = arguments.qc_subject if path_qc is not None: generate_qc(fname_in1=input_filename, fname_seg=out_fname, args=sys.argv[1:], path_qc=os.path.abspath(path_qc), dataset=qc_dataset, subject=qc_subject, process='sct_deepseg_gm') display_viewer_syntax([input_filename, format(out_fname)], colormaps=['gray', 'red'], opacities=['1', '0.7'], verbose=verbose)
def resample_file(fname_data, fname_out, new_size, new_size_type, interpolation, verbose, fname_ref=None): """This function will resample the specified input image file to the target size. Can deal with 2d, 3d or 4d image objects. :param fname_data: The input image filename. :param fname_out: The output image filename. :param new_size: The target size, i.e. 0.25x0.25 :param new_size_type: Unit of resample (mm, vox, factor) :param interpolation: The interpolation type :param verbose: verbosity level :param fname_ref: Reference image to resample input image to """ # Load data logger.info('load data...') nii = nib.load(fname_data) if fname_ref is not None: nii_ref = nib.load(fname_ref) else: nii_ref = None nii_r = resample_nib(nii, new_size.split('x'), new_size_type, image_dest=nii_ref, interpolation=interpolation) # build output file name if fname_out == '': fname_out = add_suffix(fname_data, '_r') else: fname_out = fname_out # save data nib.save(nii_r, fname_out) # to view results display_viewer_syntax([fname_out], verbose=verbose) return nii_r
def main(): # Check input parameters parser = get_parser() args = parser.parse_args(args=None if sys.argv[1:] else ['--help']) fname_mtr = args.o verbose = args.v # compute MTR printv('\nCompute MTR...', verbose) nii_mtr = compute_mtr(nii_mt1=Image(args.mt1), nii_mt0=Image(args.mt0), threshold_mtr=args.thr) # save MTR file nii_mtr.save(fname_mtr, dtype='float32') display_viewer_syntax([args.mt0, args.mt1, fname_mtr])
def main(fname_anat, fname_centerline, verbose): """ Main function :param fname_anat: :param fname_centerline: :param verbose: :return: """ # load input images im_anat = Image(fname_anat) im_centerline = Image(fname_centerline) # flatten sagittal im_anat_flattened = flatten_sagittal(im_anat, im_centerline, verbose) # save output fname_out = add_suffix(fname_anat, '_flatten') im_anat_flattened.save(fname_out) display_viewer_syntax([fname_anat, fname_out])
def main(argv=None): """ Main function :param argv: :return: """ parser = get_parser() arguments = parser.parse_args(argv if argv else ['--help']) verbose = arguments.v set_global_loglevel(verbose=verbose) # initialize ImageCropper cropper = ImageCropper(Image(arguments.i)) cropper.verbose = verbose # Switch across cropping methods if arguments.g: cropper.get_bbox_from_gui() elif arguments.m: cropper.get_bbox_from_mask(Image(arguments.m)) elif arguments.ref: cropper.get_bbox_from_ref(Image(arguments.ref)) else: cropper.get_bbox_from_minmax( BoundingBox(arguments.xmin, arguments.xmax, arguments.ymin, arguments.ymax, arguments.zmin, arguments.zmax) ) # Crop image img_crop = cropper.crop(background=arguments.b) # Write cropped image to file if arguments.o is None: fname_out = add_suffix(arguments.i, '_crop') else: fname_out = arguments.o img_crop.save(fname_out) display_viewer_syntax([arguments.i, fname_out])
def main(args=None): """ Main function :param args: :return: """ # get parser args if args is None: args = None if sys.argv[1:] else ['--help'] parser = get_parser() arguments = parser.parse_args(args=args) # initialize ImageCropper cropper = ImageCropper(Image(arguments.i)) cropper.verbose = arguments.v init_sct(log_level=cropper.verbose, update=True) # Update log level # Switch across cropping methods if arguments.g: cropper.get_bbox_from_gui() elif arguments.m: cropper.get_bbox_from_mask(Image(arguments.m)) elif arguments.ref: cropper.get_bbox_from_ref(Image(arguments.ref)) else: cropper.get_bbox_from_minmax( BoundingBox(arguments.xmin, arguments.xmax, arguments.ymin, arguments.ymax, arguments.zmin, arguments.zmax)) # Crop image img_crop = cropper.crop(background=arguments.b) # Write cropped image to file if arguments.o is None: fname_out = add_suffix(arguments.i, '_crop') else: fname_out = arguments.o img_crop.save(fname_out) display_viewer_syntax([arguments.i, fname_out])
def compute(self): fname_data = self.fmri # open data nii_data = Image(fname_data) data = nii_data.data # compute mean data_mean = np.mean(data, 3) # compute STD data_std = np.std(data, 3, ddof=1) # compute TSNR data_tsnr = data_mean / data_std # save TSNR fname_tsnr = self.out nii_tsnr = empty_like(nii_data) nii_tsnr.data = data_tsnr nii_tsnr.save(fname_tsnr, dtype=np.float32) display_viewer_syntax([fname_tsnr])