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
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))
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
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)
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)
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)
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')
# 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)
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)
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')
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']