def main(): ## Get input arguments args = getArgs() ## Get input and output path pathin = args.pathin if pathin[len(pathin)-1] != '/': pathin += '/' if args.pathout is None: pathout = pathin else: pathout = args.pathout if pathout[len(pathout)-1] != '/': pathout += '/' ## Read HDF5, select key, axis, slice fp = h5py.File( pathin + args.filein , 'r' ) keys = fp.keys() ki = args.key ax = args.axis sl = args.slice print('\nInput HDF5 file:\n', pathin + args.filein) print('\nAll keys:\n' , keys) print('\nKey number: ' , ki,' key name: ', keys[ki]) print('Axis: ' , ax) print('Slice: ' , sl) ## Get 2D data to plot data3D = np.array( fp[keys[ki]] ).astype( myfloat ) min3D = np.min( data3D ) max3D = np.max( data3D ) print( '\nmin3D: ' , min3D ) print( '\nmax3D: ' , max3D ) if ax == 'x': data2D = data3D[sl,:,:] elif ax == 'y': data2D = data3D[:,sl,:] elif ax == 'z': data2D = data3D[:,:,sl] pp.printArray2D( data2D , var='r' , digits=2 ) ## Plot 2D and save plot plot_slice( data2D , pathout , args , ax , sl )
def main(): data2D_1 = np.loadtxt( sys.argv[1] ) data2D_2 = np.loadtxt( sys.argv[2] ) data2D = data2D_2 - data2D_1 fileout = sys.argv[3] pp.printArray2D( data2D , var='r' , digits=2 ) if 'psnr' in fileout: title = 'Difference map of PSNR' else: title = 'Difference map of MSSIM' ## Plot 2D and save plot plot_slice( data2D , fileout , title )
def create_dataset( args ): ## Get input image image_ref = io.readImage( args.inputs ) npix = image_ref.shape[0] ## Create impulsed image nimp = int( np.floor( npix / nimp_factor ) ) c = npix * 0.5 ind_imp = np.zeros( ( nimp , 2 ) , dtype=int ) i = 0 print('\nSelecting impulse locations ...') while i < nimp: x = int( np.round( np.random.rand() * npix ) ) y = int( np.round( np.random.rand() * npix ) ) dist1 = np.ceil( np.sqrt( ( x - c )**2 + ( y - c )**2 ) ) if dist1 < c: if i != 0: for j in range( i + 1 ): x0 = ind_imp[j,0]; y0 = ind_imp[j,1] dist2 = np.ceil( np.sqrt( ( x - x0 )**2 + ( y - y0 )**2 ) ) if dist2 <= r: break elif dist2 > r and j < i: continue elif dist2 > r and j == i: ind_imp[i,0] = x; ind_imp[i,1] = y i += 1 else: ind_imp[i,0] = x; ind_imp[i,1] = y i += 1 print('... locations selected!') print('\nImpulse locations:') pp.printArray2D( ind_imp ) image_imp = image_ref.copy() imp_factor = args.imp_factor for i in range( len( ind_imp ) ): x0 = ind_imp[i][0]; y0 = ind_imp[i][1] image_imp[x0,y0] += image_imp[x0,y0] * imp_factor ## Create sinograms nang = int( np.ceil( npix * np.pi * 0.5 ) ) angles = myfloat( np.arange( nang ) / myfloat( nang ) * 180.0 ) image_ref = myfloat( image_ref ); image_imp = myfloat( image_imp ) sino_ref = grid.forwproj( image_ref , angles ) sino_imp = grid.forwproj( image_imp , angles ) ## Check plots if args.plot is True: image_list = [ image_ref , image_imp ] title_list = [ 'Reference image' , 'Impulsed image' ] dis.plot_multi( image_list , title_list ) image_list = [ sino_ref , sino_imp ] title_list = [ 'Sinogram of reference image' , 'Sinogram of impulsed image' ] dis.plot_multi( image_list , title_list ) ## Write output files namebase = args.inputs if namebase.find( '/' ) != -1: namebase = namebase.split( '/' ) filename = namebase[len(namebase)-1] filename = filename[:len(filename)-4] for i in range( len(namebase)-1 ): if i == 0: pathout = '/' + namebase[i] else: pathout += namebase[i] + '/' else: filename = namebase filename = filename[:len(filename)-4] pathout = './' print('\nWriting output files ...') fileout = pathout + filename + '_lir.DMP' io.writeImage( fileout , image_imp ) print( fileout ) fileout = pathout + filename + '_sin.DMP' io.writeImage( fileout , sino_ref ) print( fileout ) fileout = pathout + filename + '_lir_sin.DMP' io.writeImage( fileout , sino_imp ) print( fileout ) fileout = pathout + filename + '_lir.txt' np.savetxt( fileout , ind_imp , newline= '\n' ) print( fileout ) print('\n')