コード例 #1
0
ファイル: plot_map_f3d.py プロジェクト: arcaduf/analysis
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 )
コード例 #2
0
ファイル: plot_map_f2d.py プロジェクト: arcaduf/analysis
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 )
コード例 #3
0
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')