Révision 10 bin/image2geometry/bib_sepals.py

bib_sepals.py (revision 10)
456 456
	plt.gca().imshow(np.transpose(matrix), interpolation='none')
457 457
	fig.savefig(filename)
458 458
	return
459

  
460

  
461

  
462
def register_objects(img_flo, img_ref, preregisterd=True, ph=6, pl=2, es=5, fs=3, save_files=True, iterations=2):
463
	# -- "Specify paths to image files" --
464
	# ------------------------------------------------
465
	sequence_name = "register_"
466
	file_times = [1, 2]
467
	filenames = [sequence_name + str(t).zfill(2)  for t in file_times]
468
	list_images = [img_flo, img_ref]
469

  
470
	images = {}
471
	for i in [0,1]:
472
		images[filenames[i]] = list_images[i]
473

  
474
	rigid_images = {}
475
	rigid_transformations = {}
476
	affine_images = {}
477
	affine_transformations = {}
478
	registered_images = {}
479
	non_linear_transformations = {}
480
	[reference_filename, floating_filename, reference_time, floating_time] = [ filenames[0], filenames[1], file_times[0], file_times[1]]
481
	#for reference_filename, floating_filename, reference_time, floating_time, in zip(filenames[1:],filenames[:-1],file_times[1:],file_times[:-1]):
482
	print("================================")
483
	print("Registering ", floating_time, " on ", reference_time)
484
	print("================================")
485

  
486
	###################################################
487
	# Output structure
488
	###################################################
489

  
490
	namestring = "_ph"+str(ph)+"_pl"+str(pl)+"_es"+str(es)+"_fs"+str(fs)
491

  
492
	output_dirname = dirname + '/' + sequence_name + "_" + str(floating_time).zfill(2) + "_on_" + str(reference_time).zfill(2) + "" + namestring
493
	if not os.path.exists(output_dirname):
494
		os.makedirs(output_dirname)
495

  
496
	reference_img = images[reference_filename]
497
	floating_img = images[floating_filename]
498

  
499
	####################################################################
500

  
501
	# Registration of the floating images on ref
502
	# -----------------------------------------------------
503
	
504
	if (not preregistered) :
505
		# A. Find optimised rigid transformations
506
		rigid_img, rigid_trsf = find_rigid_transfo2(reference_img, floating_img)
507
		rigid_images[floating_filename] = rigid_img
508
		rigid_transformations[floating_filename] = rigid_trsf
509
		
510
		if save_files:
511
			# rigid-registered images
512
			rigid_filename = output_dirname + '/' + floating_filename + "_rigid_on_" + str(reference_time).zfill(2) + ".inr.gz"
513
			imsave(rigid_filename, rigid_img)
514

  
515
			# optimised (with block-matching) rigid transformations
516
			rigid_trsf_filename = output_dirname + '/tr_' + floating_filename + '_rigid.txt'
517
			tfsave(rigid_trsf_filename, rigid_trsf)
518

  
519
		# B. Find optimised affine transformations (initialised by the rigid tfs computed above)
520
		affine_img, affine_trsf = find_affine_transfo(reference_img, floating_img, init_trsf=rigid_trsf)
521
		affine_images[floating_filename] = affine_img
522
		affine_transformations[floating_filename] = affine_trsf
523

  
524
		if save_files:
525
			# affine-registered images
526
			affine_filename = output_dirname + '/' + floating_filename + "_affine_on_" + str(reference_time).zfill(2) + ".inr.gz"
527
			imsave(affine_filename, affine_img)
528

  
529
			# optimised (with block-matching) affine transformations
530
			affine_trsf_filename = output_dirname + '/tr_' + floating_filename + '_affine.txt'
531
			tfsave(affine_filename, affine_trsf)
532
		floating_img0=affine_img
533
	else :
534
		floating_img0=floating_img
535
	# C. Find nonlinear transformations which register the affine-transformed images
536
	#registered_img, nl_trsf = find_nl_transfo(reference_img, affine_img, ph=ph, pl=pl, es=es, fs=fs)
537
	for it in range(iterations):
538
		registered_img, nl_trsf = find_nl_transfo(reference_img, floating_img0, ph=ph, pl=pl, es=es, fs=fs)
539
		registered_images[floating_filename] = registered_img
540
		non_linear_transformations[floating_filename] = nl_trsf
541

  
542
		# paths to nonlinearly registered images
543
		registered_filename = output_dirname + '/' + floating_filename + "_registered_on_" + str(reference_time).zfill(2) + "_it"+str(it)+".inr.gz"
544
		imsave(registered_filename, registered_img)
545
		floating_img0=registered_img
546

  
547
		if save_files:
548
			# non-linear transformations
549
			nl_trsf_filename = output_dirname + '/' + floating_filename + "_it"+str(it)+"_vectorfield.inr.gz"
550
			save_trsf(nl_trsf, nl_trsf_filename, compress=True)
551
	return registered_img
552

  

Formats disponibles : Unified diff