Beispiel #1
0
def processTomoFolder(projectionsF, referencesF, darkFieldF, outputFolder):
    print('Process Tomo')
    Ir = spytIO.openImage(referencesF[0])
    darkField = spytIO.openImage(darkFieldF)
    Ir = corr.normalization2D(Ir, darkField)

    dxFolder = outputFolder + '/dx/'
    dyFolder = outputFolder + '/dy/'
    phiFolder = outputFolder + '/phi/'
    phi2Folder = outputFolder + '/phi2/'
    phi3Folder = outputFolder + '/phi3/'

    if not (os.path.exists(outputFolder)):
        os.mkdir(outputFolder)

    if not (os.path.exists(dxFolder)):
        os.mkdir(dxFolder)
    if not (os.path.exists(dyFolder)):
        os.mkdir(dyFolder)
    if not (os.path.exists(phiFolder)):
        os.mkdir(phiFolder)
    if not (os.path.exists(phi2Folder)):
        os.mkdir(phi2Folder)
    if not (os.path.exists(phi3Folder)):
        os.mkdir(phi3Folder)

    for proj in projectionsF:
        print(proj)
        Is = spytIO.openImage(proj)
        Is = corr.normalization2D(Is, darkField)

        #Ir=corr.registerRefAndSample(Ir,Is,1000)
        result = processOneProjection(Is, Ir)

        dx = result['dx']
        dx = np.asarray(dx.real, np.float32)
        dxFilename = dxFolder + '/dx_' + os.path.basename(proj)
        spytIO.saveEdf(dx, dxFilename)

        dy = result['dy']
        dy = np.asarray(dy.real, np.float32)
        dyFilename = dyFolder + '/dy_' + os.path.basename(proj)
        spytIO.saveEdf(dy, dyFilename)

        phi = result['phi']
        phi = np.asarray(phi.real, np.float32)
        phiFilename = phiFolder + '/phi_' + os.path.basename(proj)
        spytIO.saveEdf(phi, phiFilename)

        phi2 = result['phi2']
        phi2 = np.asarray(phi2.real, np.float32)
        phi2Filename = phi2Folder + '/phi2_' + os.path.basename(proj)
        spytIO.saveEdf(phi2, phi2Filename)

        phi3 = result['phi3']
        phi3 = np.asarray(phi3.real, np.float32)
        phi3Filename = phi3Folder + '/phi3' + os.path.basename(proj)
        spytIO.saveEdf(phi3, phi3Filename)
        print phi3Filename
Beispiel #2
0
 def processAverage(self):
     print('Average ')
     dat = openImage(self.fileNames[0])
     shape = dat.shape
     self.output = np.zeros(shape)
     for filenam in self.fileNames:
         dat = openImage(filenam)
         self.output += dat
     self.output = np.divide(self.output, len(self.fileNames))
Beispiel #3
0
def opticalFlowSolverOneThread(inputDictionary, outputFolder):
    projectionFiles = inputDictionary['projections']
    referenceFilename = inputDictionary['references'][0]
    Ir = spytIO.openImage(referenceFilename)
    i = 0
    for projectionFileName in projectionFiles:
        print(projectionFileName)
        Is = spytIO.openImage(projectionFileName)
        result = OpticalFlow.processOneProjection(Is, Ir)
        saveResult(result, i, outputFolder)
        i += 1
Beispiel #4
0
    def processMedian(self):
        print('Median ')

        dat = openImage(self.fileNames[0])
        shape = dat.shape
        self.bigMat = np.zeros(
            (len(self.fileNames), dat.shape[0], dat.shape[1]))
        cpt = 0
        for filenam in self.fileNames:
            dat = openImage(filenam)
            self.bigMat[cpt] += dat
            cpt += 1

        self.output = np.median(self.bigMat, axis=0)
Beispiel #5
0
def convert32BitFolder(inputFolder,outputFolder):
    listofFiles=glob.glob(inputFolder+'/*.edf')
    for filename in listofFiles:
        base=os.path.basename(filename)
        data=spytIO.openImage(filename)
        dataToStore=np.asarray(data,np.float32)
        outputfilename=outputFolder+'/'+base
        print ('Copying \n'+str(filename)+' \n in \n'+str(outputfilename))
        spytIO.saveEdf(dataToStore,outputfilename)
Beispiel #6
0
        phi3Filename = phi3Folder + '/phi3' + os.path.basename(proj)
        spytIO.saveEdf(phi3, phi3Filename)
        print phi3Filename


if __name__ == "__main__":
    inputFolder = '/Volumes/ID17/speckle/md1097/id17/SpeckleSacroIliaque/HA1100_sacroIlliaque_speckle_xss_6um_52kev__001__008_'
    outputFolder = '/Volumes/ID17/speckle/md1097/id17/SpeckleSacroIliaque/OuputSacro_Floor0_'
    projectionsFileNames, referenceFileNames, darkFieldFilename = parseESRFTomoFolder(
        inputFolder)
    processTomoFolder(projectionsFileNames, referenceFileNames,
                      darkFieldFilename, outputFolder)

    print(' Optical Flow Tomo ')
    print('Test One File')
    Ir = spytIO.openImage('ref1-1.edf')
    Is = spytIO.openImage('samp1-1.edf')

    result = processOneProjection(Is, Ir)
    dx = result['dx']
    dy = result['dy']
    phi = result['phi']
    phi2 = result['phi2']
    phi3 = result['phi3']
    spytIO.saveEdf(dx, 'output/dx.edf')
    spytIO.saveEdf(dy.real, 'output/dy.edf')
    spytIO.saveEdf(phi.real, 'output/phi.edf')
    spytIO.saveEdf(phi2.real, 'output/phi2.edf')
    spytIO.saveEdf(phi3.real, 'output/phi3.edf')

    #offsett=corr.registerRefAndSample(Ir,Is,1000)
Beispiel #7
0
    referenceFiles = qt.QFileDialog.getOpenFileNames(
        None, 'Open a set of Images', '/', 'Image files (*.edf *.tif *.tiff)')

    referenceFiles = referenceFiles[0]
    directory = os.path.dirname(str(referenceFiles[0]))

    sampleFiles = (qt.QFileDialog.getOpenFileNames(
        None, 'Open a set of Images', directory,
        'Image files (*.edf *.tif *.tiff)'))
    sampleFiles = sampleFiles[0]

    saveFolder = (qt.QFileDialog.getExistingDirectory(
        None, 'Open directory to save the images', directory))
    saveFolder = str(saveFolder)

    Ir = spytIO.openImage(str(referenceFiles[0]))
    Is = spytIO.openImage(str(sampleFiles[0]))
    result = processOneProjection(Is, Ir)

    dx = result['dx']
    dy = result['dy']
    phi = result['phi']
    phi2 = result['phi2']
    phi3 = result['phi3']
    spytIO.saveEdf(dx, saveFolder + '/dx.edf')
    spytIO.saveEdf(dy.real, saveFolder + '/dy.edf')
    spytIO.saveEdf(phi.real, saveFolder + '/phi.edf')
    spytIO.saveEdf(phi2.real, saveFolder + '/phi2.edf')
    spytIO.saveEdf(phi3.real, saveFolder + '/phi3.edf')

    Ir3D = spytIO.openSeq(referenceFiles)
    spytIO.saveEdf(phi3.real,
                   outputFolder + '/phiLarkin/phiLarkin_' + textProj + '.edf')
    spytIO.saveEdf(
        gradientNorm.real,
        outputFolder + '/gradientNorm/gradientNorm_' + textProj + '.edf')


if __name__ == "__main__":
    originalFolder = '/Users/embrun/Downloads/Mantela_aurantiaca_1/cine1/'
    fileSequence = glob.glob(originalFolder + '/*.tif')
    fileSequence.sort()
    outputFolder = '/Users/embrun/Downloads/Mantela_aurantiaca_1/Mantela_cine_OpticalFlow/'
    mkdir(outputFolder)
    createFolders(outputFolder)

    Ir = spytIO.openImage(fileSequence[0])
    Ir = np.asarray(Ir, np.float32)
    firstIm = spytIO.openImage(fileSequence[0])

    cpt = 0
    for filename in fileSequence:
        print(filename)
        if cpt > 0:
            Is = spytIO.openImage(fileSequence[cpt])
            Is = np.asarray(Is, np.float32)
            result = OpticalFlow.processOneProjection(Is, Ir)
            saveResults(result, outputFolder, cpt)

            textProj = '%4.4d' % cpt
            spytIO.saveEdf(Is - Ir,
                           outputFolder + '/diff/diff' + textProj + '.edf')
Beispiel #9
0
    # multiplication to be in micron
    img_thickness = img_thickness * 1e6
    # unpadding
    img_thickness = img_thickness[padRow:padRow + width,
                                  padCol:padCol + height]
    img_thickness += bg_val

    return img_thickness


if __name__ == "__main__":
    # testOneImage()
    irName = 'Ref0367.edf'

    isName = 'im0007.edf'
    imageSample = openImage(isName)
    imageReference = openImage(irName)
    imageSample = imageSample[411:411 + 400, 768:768 + 400]
    imageReference = imageReference[411:411 + 400, 768:768 + 400]
    # darkName='/VOLUMES/ID17/broncho/IHR_April2018/HA800_Patte21_3um_Gap90_75_Speckle02_/dark.edf'

    # result=processOneImage(isName,irName)

    beta = 2.7274690492888E-12
    delta = 1.0430137117588E-07
    z1 = 142  # (m) distance from source to object
    z2 = 11.0  # (m) distance from the object to the detector
    pix_size = 6.1e-6

    result = tie_Pavlovetal2019(imageSample, imageReference, 52, z1, z2,
                                pix_size, delta, beta, 0, 12)
Beispiel #10
0
import os
import glob
import spytIO
import numpy as np
import utils

if __name__ == "__main__":
    inputFolder='/Volumes/ID17/speckle/md1097/id17/Phantoms/ThreeDimensionalPhantom/OpticalFlow/dy/'
    outputFolder='/Volumes/ID17/speckle/md1097/id17/Phantoms/ThreeDimensionalPhantom/OpticalFlow/dy_32/'
    utils.spytMkDir(outputFolder)
    files=glob.glob(inputFolder+'/*.edf')

    files.sort()
    for filename in files:
        print(filename)
        data=spytIO.openImage(filename)
        data=np.asarray(data,np.float32)
        outputFilename=outputFolder+'/'+os.path.basename(filename)
        print(outputFilename)
        spytIO.saveEdf(data,outputFilename)
Beispiel #11
0
    dI = (Is - Ir * (np.mean(gaussian_filter(Is,sigma=2.)) / np.mean(gaussian_filter(Ir,sigma=2.))))
    alpha=np.finfo(np.float32).eps
    dx, dy = derivativesByOpticalflow(Is, dI, alpha=alpha, sig_scale=sigma)
    phi = fc.frankotchellappa(dx, dy, False)
    phi3 = kottler(dx, dy)
    phi2 = LarkinAnissonSheppard(dx, dy)


    return {'dx': dx, 'dy': dy, 'phi': phi, 'phi2': phi2,'phi3': phi3,'gradientNorm':gradientNorm}



if __name__ == "__main__":

    Is = spytIO.openImage('im0007.edf')
    Ir = spytIO.openImage('Ref0367.edf')



    result = processOneProjection(Is, Ir)

    dx = result['dx']
    dy = result['dy']
    phi = result['phi']
    phi2 = result['phi2']
    phi3 = result['phi3']
    spytIO.saveEdf(dx, 'output/dx.edf')
    spytIO.saveEdf(dy.real, 'output/dy.edf')
    spytIO.saveEdf(phi.real, 'output/phi.edf')
    spytIO.saveEdf(phi2.real, 'output/phiLarkinson.edf')
Beispiel #12
0
    gradientNorm = np.sqrt(dxPlus**2 + dyPlus**2)

    return {
        'dx': dx,
        'dy': dy,
        'phi': phi,
        'phi2': phi2,
        'phi3': phi3,
        'gradientNorm': gradientNorm
    }


if __name__ == "__main__":
    Ir = spytIO.openImage(
        '/Users/embrun/Codes/specklematching/Experiments/MoucheSimapAout2017/ref/ref_40kV_5.2um_30s_12cm_53cm_speck14.tif'
    )
    Is = spytIO.openImage(
        '/Users/embrun/Codes/specklematching/Experiments/MoucheSimapAout2017/sample/mouche_40kV_5.2um_30s_12cm_53cm_speck14.tif'
    )
    result = processOneProjection(Is, Ir)

    #IrNames=glob.glob('/Users/embrun/Codes/specklematching/Experiments/MoucheSimapAout2017/ref/*.tif')
    #IsNames= glob.glob('/Users/embrun/Codes/specklematching/Experiments/MoucheSimapAout2017/sample/*.tif')
    #Ir=spytIO.openSeq(IrNames)
    #Is= spytIO.openSeq(IsNames)
    #result = processProjectionSet(Is, Ir)

    dx = result['dx']
    dy = result['dy']
    phi = result['phi']