diff --git a/components/isceobj/TopsProc/runDenseOffsets.py b/components/isceobj/TopsProc/runDenseOffsets.py index f04b571..364cb69 100644 --- a/components/isceobj/TopsProc/runDenseOffsets.py +++ b/components/isceobj/TopsProc/runDenseOffsets.py @@ -50,7 +50,7 @@ def runDenseOffsetsCPU(self): sf += '.full' master = os.path.join(self._insar.mergedDirname, mf) slave = os.path.join(self._insar.mergedDirname, sf) - + ####For this module currently, we need to create an actual file on disk for infile in [master,slave]: if os.path.isfile(infile): @@ -59,7 +59,7 @@ def runDenseOffsetsCPU(self): status = os.system(cmd) if status: raise Exception('{0} could not be executed'.format(status)) - + ### Load the master object @@ -73,7 +73,7 @@ def runDenseOffsetsCPU(self): s.load(slave + '.xml') s.setAccessMode('READ') # s.createImage() - + width = m.getWidth() length = m.getLength() @@ -104,7 +104,7 @@ def runDenseOffsetsCPU(self): objOffset.oversamplingFactor = self.oversample objOffset.setAcrossGrossOffset(self.rgshift) objOffset.setDownGrossOffset(self.azshift) - + objOffset.setFirstPRF(1.0) objOffset.setSecondPRF(1.0) if m.dataType.startswith('C'): @@ -126,7 +126,7 @@ def runDenseOffsetsCPU(self): print('\n======================================') print('Running dense ampcor...') print('======================================\n') - + objOffset.denseampcor(m, s) ### Where the magic happens... ### Store params for later @@ -140,7 +140,7 @@ def runDenseOffsetsGPU(self): ''' Estimate dense offset field between merged master bursts and slave bursts. ''' - + from contrib.PyCuAmpcor import PyCuAmpcor print('\n============================================================') @@ -156,7 +156,7 @@ def runDenseOffsetsGPU(self): slave = os.path.join(self._insar.mergedDirname, sf) ####For this module currently, we need to create an actual file on disk - + for infile in [master,slave]: if os.path.isfile(infile): continue @@ -177,7 +177,7 @@ def runDenseOffsetsGPU(self): s.load(slave + '.xml') s.setAccessMode('READ') # s.createImage() - + width = m.getWidth() length = m.getLength() @@ -186,10 +186,10 @@ def runDenseOffsetsGPU(self): objOffset.deviceID = -1 objOffset.nStreams = 2 objOffset.derampMethod = 0 - objOffset.masterImageName = master + objOffset.masterImageName = master + '.vrt' objOffset.masterImageHeight = length objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + objOffset.slaveImageName = slave + '.vrt' objOffset.slaveImageHeight = length objOffset.slaveImageWidth = width @@ -250,7 +250,7 @@ def runDenseOffsetsGPU(self): print('\n======================================') print('Running dense ampcor...') print('======================================\n') - + objOffset.checkPixelInImageRange() objOffset.runAmpcor() @@ -274,14 +274,14 @@ def runDenseOffsetsGPU(self): outImg.renderHdr() snrImg = isceobj.createImage() - snrImg.setFilename( objOffset.snrImageName.decode('utf8')) + snrImg.setFilename( objOffset.snrImageName.decode('utf-8')) snrImg.setDataType('FLOAT') snrImg.setBands(1) snrImg.setWidth(objOffset.numberWindowAcross) snrImg.setLength(objOffset.numberWindowDown) snrImg.setAccessMode('read') snrImg.renderHdr() - + if __name__ == '__main__' : diff --git a/contrib/stack/topsStack/cuDenseOffsets.py b/contrib/stack/topsStack/cuDenseOffsets.py index d281d9d..354827e 100755 --- a/contrib/stack/topsStack/cuDenseOffsets.py +++ b/contrib/stack/topsStack/cuDenseOffsets.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -# author: Minyan Zhong +# author: Minyan Zhong -import numpy as np +import numpy as np import argparse import os import isce @@ -13,7 +13,7 @@ from isceobj.Location.Offset import OffsetField from iscesys.StdOEL.StdOELPy import create_writer #from mroipac.ampcor.DenseAmpcor import DenseAmpcor -from PyCuAmpcor import PyCuAmpcor +from contrib.PyCuAmpcor import PyCuAmpcor from grossOffsets import grossOffsets #from isceobj.Utils.denseoffsets import denseoffsets @@ -116,17 +116,17 @@ def estimateOffsetField(master, slave, inps=None): length = sar.getLength() objOffset = PyCuAmpcor() - + objOffset.algorithm = 0 objOffset.deviceID = inps.gpuid # -1:let system find the best GPU - objOffset.nStreams = 2 #cudaStreams + objOffset.nStreams = 2 #cudaStreams objOffset.derampMethod = inps.deramp print(objOffset.derampMethod) - objOffset.masterImageName = master + objOffset.masterImageName = master + '.vrt' objOffset.masterImageHeight = length objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + objOffset.slaveImageName = slave + '.vrt' objOffset.slaveImageHeight = length objOffset.slaveImageWidth = width @@ -150,10 +150,10 @@ def estimateOffsetField(master, slave, inps=None): # window size objOffset.windowSizeHeight = inps.winhgt objOffset.windowSizeWidth = inps.winwidth - + print(objOffset.windowSizeHeight) print(objOffset.windowSizeWidth) - + # search range objOffset.halfSearchRangeDown = inps.srchgt objOffset.halfSearchRangeAcross = inps.srcwidth @@ -162,7 +162,7 @@ def estimateOffsetField(master, slave, inps=None): # starting pixel objOffset.masterStartPixelDownStatic = inps.margin objOffset.masterStartPixelAcrossStatic = inps.margin - + # skip size objOffset.skipSampleDown = inps.skiphgt objOffset.skipSampleAcross = inps.skipwidth @@ -171,7 +171,7 @@ def estimateOffsetField(master, slave, inps=None): objOffset.corrSufaceOverSamplingMethod = 0 objOffset.corrSurfaceOverSamplingFactor = inps.oversample #objOffset.rawDataOversamplingFactor = 4 - + # output filenames objOffset.offsetImageName = str(inps.outprefix) + str(inps.outsuffix) + '.bip' objOffset.grossOffsetImageName = str(inps.outprefix) + str(inps.outsuffix) + '_gross.bip' @@ -197,19 +197,19 @@ def estimateOffsetField(master, slave, inps=None): objOffset.numberWindowDownInChunk = 5 objOffset.numberWindowAcrossInChunk = 5 objOffset.mmapSize = 16 - + objOffset.setupParams() - + ## Set Gross Offset ### - + if inps.gross == 0: objOffset.setConstantGrossOffset(0, 0) else: - + print("Setting up grossOffset...") - + objGrossOff = grossOffsets() - + objGrossOff.setXSize(width) objGrossOff.setYize(length) objGrossOff.setMargin(inps.margin) @@ -224,46 +224,46 @@ def estimateOffsetField(master, slave, inps=None): objGrossOff.setLosFile(inps.los) objGrossOff.setMasterFile(inps.masterxml) objGrossOff.setbTemp(inps.bTemp) - - + + grossDown, grossAcross = objGrossOff.runGrossOffsets() - + # change nan to 0 grossDown = np.nan_to_num(grossDown) grossAcross = np.nan_to_num(grossAcross) - + print("Before plotting the gross offsets (min and max): ", np.nanmin(grossDown),np.nanmax(grossDown)) print("Before plotting the gross offsets (min and max): ", np.rint(np.nanmin(grossDown)),np.rint(np.nanmax(grossDown))) - + grossDown = np.int32(np.rint(grossDown.ravel())) grossAcross = np.int32(np.rint(grossAcross.ravel())) - + print(np.amin(grossDown), np.amax(grossDown)) print(np.amin(grossAcross), np.amax(grossAcross)) - + print(grossDown.shape) print(grossDown.shape) - + objOffset.setVaryingGrossOffset(grossDown, grossAcross) #objOffset.setVaryingGrossOffset(np.zeros(shape=grossDown.shape,dtype=np.int32), np.zeros(shape=grossAcross.shape,dtype=np.int32)) - - # check + + # check objOffset.checkPixelInImageRange() - + # Run the code print('Running PyCuAmpcor') - + objOffset.runAmpcor() - + print('Finished') - + sar.finalizeImage() sim.finalizeImage() - + # Finalize the results # offsetfield - + outImg = isceobj.createImage() outImg.setDataType('FLOAT') outImg.setFilename(offsetImageName) @@ -273,8 +273,8 @@ def estimateOffsetField(master, slave, inps=None): outImg.setLength(objOffset.numberWindowDown) outImg.setAccessMode('read') outImg.renderHdr() - - + + # gross offsetfield outImg = isceobj.createImage() outImg.setDataType('FLOAT') @@ -285,7 +285,7 @@ def estimateOffsetField(master, slave, inps=None): outImg.setLength(objOffset.numberWindowDown) outImg.setAccessMode('read') outImg.renderHdr() - + # snr snrImg = isceobj.createImage() snrImg.setFilename(snrImageName) @@ -297,17 +297,17 @@ def estimateOffsetField(master, slave, inps=None): snrImg.renderHdr() return objOffset - -def main(iargs=None): + +def main(iargs=None): inps = cmdLineParse(iargs) outDir = os.path.dirname(inps.outprefix) print(inps.outprefix) if not os.path.exists(outDir): os.makedirs(outDir) - + objOffset = estimateOffsetField(inps.master, inps.slave, inps) if __name__ == '__main__': - + main()