def initRawImage(makeRawObj): from isceobj.Image import createSlcImage from isceobj.Image import createRawImage #the "raw" image in same case is an slc. #for now let's do it in this way. probably need to make this a factory #instantiated based on the sensor type imageType = makeRawObj.frame.getImage() if isinstance(imageType, createRawImage().__class__): filename = makeRawObj.frame.getImage().getFilename() bytesPerLine = makeRawObj.frame.getImage().getXmax() goodBytes = makeRawObj.frame.getImage().getXmax( ) - makeRawObj.frame.getImage().getXmin() logger.debug("bytes_per_line: %s" % (bytesPerLine)) logger.debug("good_bytes_per_line: %s" % (goodBytes)) objRaw = createRawImage() objRaw.setFilename(filename) objRaw.setNumberGoodBytes(goodBytes) objRaw.setWidth(bytesPerLine) objRaw.setXmin(makeRawObj.frame.getImage().getXmin()) objRaw.setXmax(bytesPerLine) elif (isinstance(imageType, createSlcImage().__class__)): objRaw = createSlcImage() filename = makeRawObj.frame.getImage().getFilename() bytesPerLine = makeRawObj.frame.getImage().getXmax() objRaw.setFilename(filename) objRaw.setWidth(bytesPerLine) objRaw.setXmin(makeRawObj.frame.getImage().getXmin()) objRaw.setXmax(bytesPerLine) return objRaw
def make_raw(self): from isceobj.Image import createRawImage, createSlcImage self.activateInputPorts() # Parse the image metadata and extract the image self.logger.info('Extracting image') try: self.sensor.extractImage() except NotImplementedError as strerr: self.logger.error("%s" % (strerr)) self.logger.error("make_raw not implemented for %s" % self.sensor.__class__) raise NotImplementedError #reset the global variable to empty so can go back to use default api self.sensor.frame.image.renderVRT() self.frame = self.sensor.frame #jng NOTE if we pass just the sensor also in the case of raw image we ## can avoid the if if isinstance(self.frame.image, createRawImage().__class__): # Calculate the doppler fit self.logger.info("Calculating Doppler Centroid") try: self.doppler.wireInputPort(name='frame', object=self.frame) except: computeFlag = False else: computeFlag = True if computeFlag: self.doppler.wireInputPort(name='instrument', object=self.frame.instrument) self.doppler.wireInputPort(name='image', object=self.frame.image) self.doppler.calculateDoppler() else: self.doppler.wireInputPort(name='sensor', object=self.sensor) self.doppler.calculateDoppler() #new jng compute slc image size here rangeSamplingRate = self.instrument.rangeSamplingRate rangePulseDuration = self.instrument.pulseLength goodBytes = self.frame.image.xmax - self.frame.image.xmin try: #check if the instrument implements it, if not set it to zero chirpExtension = self.instrument.chirpExtension # Should probably be a percentage rather than a set number except AttributeError: chirpExtension = 0 chirpSize = int(rangeSamplingRate * rangePulseDuration) self.frame.numberRangeBins = (int(goodBytes / 2) - chirpSize + chirpExtension) elif isinstance(self.frame.image, createSlcImage().__class__): # jng changed in view of the new tsx preproc from Howard self.doppler.wireInputPort(name='sensor', object=self.sensor) self.doppler.calculateDoppler() #new jng compute slc image size here self.frame.numberRangeBins = self.frame.image.width else: message = ("Unrecognized image type %s" % str(self.frame.image.__class__)) self.logger.error(message) raise TypeError(message) # Fit a polynomial to the doppler values. in the tsx case or every # zero doppler case this function simple sets the a = fd b = 0, c = 0 self.doppler.fitDoppler() # Create a doppler object prf = self.frame.instrument.PRF #coef = self.doppler.coeff_list #for ii in range(len(coef), 4): # coef.append(0.0) if 'a' in self.doppler.quadratic: coef = [self.doppler.quadratic['a'] * prf, 0.0, 0.0, 0.0] elif isinstance(self.doppler.quadratic, (list, tuple)): ####For UAVSAR coef = self.doppler.quadratic else: self.logger.error( "make_raw doesn't handle doppler coefficient object type, ", type(self.doppler.quadratic)) self.dopplerValues = Doppler(prf=prf) self.dopplerValues.setDopplerCoefficients(coef, inHz=True) if self.frame._dopplerVsPixel is None: self.frame._dopplerVsPixel = [x * prf for x in coef] # Calculate the height, height_dt, and velocity self.logger.info("Calculating Spacecraft Velocity") self.calculateHeightDt() self.calculateVelocity() # Calculate squint angle self.logger.info("Calculating Squint Angle") self.calculateSquint() self.frame.image.numberGoodBytes = self.frame.image.xmax - self.frame.image.xmin self.frame.image.coord1.coordStart = self.frame.image.xmin self.createIQImage() self.frame.image.renderHdr() #just in case the Sensor does not compute the pulse timing try: self.adjustSensingStart() except: pass return None