void rspfSFIMFusion::initAdjustableParameters() { resizeAdjustableParameterArray(NUMBER_OF_ADJUSTABLE_PARAMETERS); setAdjustableParameter(HIGH_PASS_GAIN_OFFSET, -1.0); setParameterDescription(HIGH_PASS_GAIN_OFFSET, "High pass gain"); setParameterSigma(HIGH_PASS_GAIN_OFFSET, 1); setParameterCenter(HIGH_PASS_GAIN_OFFSET, 1.0); setAdjustableParameter(LOW_PASS_WIDTH_OFFSET, -1); setParameterDescription(LOW_PASS_WIDTH_OFFSET, "Low pass kernel width"); setParameterSigma(LOW_PASS_WIDTH_OFFSET, 40); setParameterCenter(LOW_PASS_WIDTH_OFFSET, 40.5); setParameterOffset(LOW_PASS_WIDTH_OFFSET, 1.5); }
bool ossimCsmSensorModel::setSensorModel(const ossimFilename& imageFile, const ossimFilename& pluginDir, const ossimString& pluginName, const ossimString& sensorName) { if(m_model) { delete m_model; m_model = 0; } ossimString error; m_pluginDir = pluginDir; m_pluginName = pluginName; m_sensorName = sensorName; m_imageFile = imageFile; if(!m_pluginDir.exists()||!m_imageFile.exists()) return false; if(!m_sensorName.empty()&&!m_pluginName.empty()) { m_model = CSMSensorModelLoader::newSensorModel(m_pluginDir.c_str(), m_pluginName, m_sensorName.c_str(), m_imageFile.c_str(), error, false); if(!error.empty()&&m_model) { delete m_model; m_model = 0; } } else { std::vector<string> pluginNames = CSMSensorModelLoader::getAvailablePluginNames(m_pluginDir, error ); ossim_uint32 idx = 0; for(idx = 0; ((idx < pluginNames.size())&&(!m_model)); ++idx) { std::vector<string> sensorModelNames = CSMSensorModelLoader::getAvailableSensorModelNames( pluginDir, pluginNames[idx].c_str(), error ); ossim_uint32 idx2=0; for(idx2 = 0; ((idx2 < sensorModelNames.size())&&(!m_model)); ++idx2) { error = ""; TSMSensorModel* model = CSMSensorModelLoader::newSensorModel(pluginDir, pluginNames[idx].c_str(), sensorModelNames[idx2].c_str(), m_imageFile.c_str(), error, false); if(model&&error.empty()) { m_sensorName = sensorModelNames[idx2].c_str(); m_pluginName = pluginNames[idx]; m_model = model; } else if(model) { delete model; model = 0; } } } } if(m_model) { int nLines, nSamples; m_model->getImageSize(nLines, nSamples); theImageClipRect = ossimIrect(-nLines, -nSamples, 2*nLines, 2*nSamples); theRefImgPt = theImageClipRect.midPoint(); int nParams = 0; m_model->getNumParameters(nParams); int idx = 0; ossimString name; resizeAdjustableParameterArray(nParams); double paramValue = 0.0; TSMMisc::Param_CharType paramType; for(idx = 0; idx < nParams; ++idx) { m_model->getParameterName(idx, name); m_model->getCurrentParameterValue(idx, paramValue); setParameterCenter(idx, paramValue); setAdjustableParameter(idx, 0.0, 1.0); setParameterDescription(idx, name.c_str()); m_model->getParameterType(idx, paramType); setParameterUnit(idx, ""); } try { computeGsd(); } catch (...) { } } return (m_model != 0); }