Added iterative multiplication for interferogram flattening

LT1AB
vbrancat 2019-10-15 10:28:33 -07:00
parent 4631aff062
commit 44cdd7dbf1
2 changed files with 39 additions and 26 deletions

View File

@ -56,19 +56,14 @@ def compute_FlatEarth(self,width,length):
# Open the interferogram # Open the interferogram
ifgFilename= os.path.join(self.insar.ifgDirname, self.insar.ifgFilename) ifgFilename= os.path.join(self.insar.ifgDirname, self.insar.ifgFilename)
ds = gdal.Open(ifgFilename+'.full',gdal.GA_ReadOnly) intf = np.memmap(ifgFilename+'.full',dtype=np.complex64,mode='r+',shape=(length,width))
intf = ds.GetRasterBand(1).ReadAsArray()
ds = None
intf *= np.exp(cJ*fact*rng2) for ll in range(length):
intf[ll,:] *= np.exp(cJ*fact*rng2[ll,:])
del rng2 del rng2
del intf
# Write the interferogram
intf.tofile(ifgFilename+'.full')
write_xml(ifgFilename+'.full',width,length,1,"CFLOAT","BIL")
intf=None
return return
@ -203,7 +198,7 @@ def generateIgram(self,imageSlc1, imageSlc2, resampName, azLooks, rgLooks):
multilook(resampInt+'.full', outname=resampInt, alks=azLooks, rlks=rgLooks) #takeLooks(objAmp,azLooks,rgLooks) multilook(resampInt+'.full', outname=resampInt, alks=azLooks, rlks=rgLooks) #takeLooks(objAmp,azLooks,rgLooks)
multilook(resampAmp+'.full', outname=resampAmp, alks=azLooks, rlks=rgLooks) #takeLooks(objInt,azLooks,rgLooks) multilook(resampAmp+'.full', outname=resampAmp, alks=azLooks, rlks=rgLooks) #takeLooks(objInt,azLooks,rgLooks)
os.system('rm ' + resampInt+'.full* ' + resampAmp + '.full* ') #os.system('rm ' + resampInt+'.full* ' + resampAmp + '.full* ')
# End of modification # End of modification
for obj in [objInt, objAmp, objSlc1, objSlc2]: for obj in [objInt, objAmp, objSlc1, objSlc2]:
obj.finalizeImage() obj.finalizeImage()
@ -305,15 +300,15 @@ def runFullBandInterferogram(self):
###Compute coherence ###Compute coherence
#cohname = os.path.join(self.insar.ifgDirname, self.insar.correlationFilename) cohname = os.path.join(self.insar.ifgDirname, self.insar.correlationFilename)
#computeCoherence(masterSlc, slaveSlc, cohname+'.full') computeCoherence(masterSlc, slaveSlc, cohname+'.full')
#multilook(cohname+'.full', outname=cohname, alks=azLooks, rlks=rgLooks) multilook(cohname+'.full', outname=cohname, alks=azLooks, rlks=rgLooks)
###Multilook relevant geometry products ##Multilook relevant geometry products
#for fname in [self.insar.latFilename, self.insar.lonFilename, self.insar.losFilename]: for fname in [self.insar.latFilename, self.insar.lonFilename, self.insar.losFilename]:
# inname = os.path.join(self.insar.geometryDirname, fname) inname = os.path.join(self.insar.geometryDirname, fname)
# multilook(inname + '.full', outname= inname, alks=azLooks, rlks=rgLooks) multilook(inname + '.full', outname= inname, alks=azLooks, rlks=rgLooks)
def runInterferogram(self, igramSpectrum = "full"): def runInterferogram(self, igramSpectrum = "full"):

View File

@ -14,7 +14,8 @@ import shelve
logger = logging.getLogger('isce.insar.runResampleSubbandSlc') logger = logging.getLogger('isce.insar.runResampleSubbandSlc')
def resampleSlc(masterFrame, slaveFrame, imageSlc2, radarWavelength, coregDir, # Modified by V. Brancato 10.14.2019 added "self" as input parameter of resampleSLC
def resampleSlc(self,masterFrame, slaveFrame, imageSlc2, radarWavelength, coregDir,
azoffname, rgoffname, azpoly = None, rgpoly = None, misreg=False): azoffname, rgoffname, azpoly = None, rgpoly = None, misreg=False):
logger.info("Resampling slave SLC") logger.info("Resampling slave SLC")
@ -56,8 +57,15 @@ def resampleSlc(masterFrame, slaveFrame, imageSlc2, radarWavelength, coregDir,
width = rngImg.getWidth() width = rngImg.getWidth()
length = rngImg.getLength() length = rngImg.getLength()
# Modified by V. Brancato on 10.14.2019 (if Rubbersheeting in range is turned on, flatten the interferogram during cross-correlation)
if not self.doRubbersheetingRange:
print('Rubber sheeting in range is turned off, flattening the interferogram during resampling')
flatten = True flatten = True
else:
print('Rubber sheeting in range is turned on, flattening the interferogram during interferogram formation')
flatten=False
# end of Modification
rObj.flatten = flatten rObj.flatten = flatten
rObj.outputWidth = width rObj.outputWidth = width
rObj.outputLines = length rObj.outputLines = length
@ -105,15 +113,25 @@ def runResampleSubbandSlc(self, misreg=False):
masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct) masterFrame = self._insar.loadProduct( self._insar.masterSlcCropProduct)
slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct) slaveFrame = self._insar.loadProduct( self._insar.slaveSlcCropProduct)
if self.doRubbersheeting: # Modified by V. Brancato 10.14.2019
print('Using rubber sheeted offsets for resampling sub-bands')
if self.doRubbersheetingAzimuth:
print('Using rubber in azimuth sheeted offsets for resampling sub-bands')
azoffname = os.path.join( self.insar.offsetsDirname, self.insar.azimuthRubbersheetFilename) azoffname = os.path.join( self.insar.offsetsDirname, self.insar.azimuthRubbersheetFilename)
else: else:
print('Using refined offsets for resampling sub-bands') print('Using refined offsets for resampling sub-bands')
azoffname = os.path.join( self.insar.offsetsDirname, self.insar.azimuthOffsetFilename) azoffname = os.path.join( self.insar.offsetsDirname, self.insar.azimuthOffsetFilename)
if self.doRubbersheetingRange:
print('Using rubber in range sheeted offsets for resampling sub-bands')
rgoffname = os.path.join( self.insar.offsetsDirname, self.insar.rangeRubbersheetFilename)
else:
print('Using refined offsets for resampling sub-bands')
rgoffname = os.path.join( self.insar.offsetsDirname, self.insar.rangeOffsetFilename) rgoffname = os.path.join( self.insar.offsetsDirname, self.insar.rangeOffsetFilename)
# ****************** End of Modification
# rgoffname = os.path.join( self.insar.offsetsDirname, self.insar.rangeOffsetFilename)
azpoly = self.insar.loadProduct( os.path.join(self.insar.misregDirname, self.insar.misregFilename) + '_az.xml') azpoly = self.insar.loadProduct( os.path.join(self.insar.misregDirname, self.insar.misregFilename) + '_az.xml')
rgpoly = self.insar.loadProduct( os.path.join(self.insar.misregDirname, self.insar.misregFilename) + '_rg.xml') rgpoly = self.insar.loadProduct( os.path.join(self.insar.misregDirname, self.insar.misregFilename) + '_rg.xml')
@ -124,7 +142,7 @@ def runResampleSubbandSlc(self, misreg=False):
wvlL = self.insar.lowBandRadarWavelength wvlL = self.insar.lowBandRadarWavelength
coregDir = os.path.join(self.insar.coregDirname, self.insar.lowBandSlcDirname) coregDir = os.path.join(self.insar.coregDirname, self.insar.lowBandSlcDirname)
lowbandCoregFilename = resampleSlc(masterFrame, slaveFrame, imageSlc2, wvlL, coregDir, lowbandCoregFilename = resampleSlc(self,masterFrame, slaveFrame, imageSlc2, wvlL, coregDir,
azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly,misreg=False) azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly,misreg=False)
imageSlc2 = os.path.join(self.insar.splitSpectrumDirname, self.insar.highBandSlcDirname, imageSlc2 = os.path.join(self.insar.splitSpectrumDirname, self.insar.highBandSlcDirname,
@ -132,7 +150,7 @@ def runResampleSubbandSlc(self, misreg=False):
wvlH = self.insar.highBandRadarWavelength wvlH = self.insar.highBandRadarWavelength
coregDir = os.path.join(self.insar.coregDirname, self.insar.highBandSlcDirname) coregDir = os.path.join(self.insar.coregDirname, self.insar.highBandSlcDirname)
highbandCoregFilename = resampleSlc(masterFrame, slaveFrame, imageSlc2, wvlH, coregDir, highbandCoregFilename = resampleSlc(self,masterFrame, slaveFrame, imageSlc2, wvlH, coregDir,
azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly, misreg=False) azoffname, rgoffname, azpoly=azpoly, rgpoly=rgpoly, misreg=False)
self.insar.lowBandSlc2 = lowbandCoregFilename self.insar.lowBandSlc2 = lowbandCoregFilename