21 static const ossim_uint32 REGRESSION_COEFFICIENT_ATTENUATOR_OFFSET = 0;
22 static const ossim_uint32 REGRESSION_COEFFICIENT_CLAMP_OFFSET = 1;
25 static const ossim_uint32 NUMBER_OF_ADJUSTABLE_PARAMETERS = 4;
28 :theBlurrKernelWidth(1.5),
29 theHighPassKernelWidth(3),
60 rect.
ul().
y - regressionW2,
61 rect.
lr().
x + regressionW2,
62 rect.
lr().
y + regressionW2);
69 expandedRegressionRect.width(),
70 expandedRegressionRect.height());
74 expandedRegressionRect.width(),
75 expandedRegressionRect.height());
124 if(!normColorData.
valid())
137 normColorOutputData->
loadTile(normColorData.
get());
157 for(idx = 0; idx < bands.size(); ++idx)
167 for(
y = 0;
y < h; ++
y)
170 for(
x = 0;
x < w; ++
x)
182 for(idx = 0; idx < bandsSize; ++idx)
184 if(*bands[idx] != 0.0)
192 if(slopeResult < minSlope) slopeResult = minSlope;
193 if(slopeResult > maxSlope) slopeResult = maxSlope;
194 delta = panAttenuator*slopeResult*(*panHigh - *panLow);
196 *bands[idx] += delta;
197 if(*bands[idx] > 1.0) *bands[idx] = 1.0;
198 if(*bands[idx] < normMinPix) *bands[idx] = normMinPix;
248 double multiplier = gain/(kernelW2);
255 high[cy][cx] = multiplier* ( (kernelW2-1)+kernelW2/gain);
301 if(!panDataPtr || !colorDataPtr)
return result;
307 ((origin.
x-rect.
ul().
x) - regW2));
317 offsetColorBand = (offset +
y*w);
318 panDataPtr = panDataPtr2 + offsetColorBand;
319 colorDataPtr = colorDataPtr2 + offsetColorBand;
327 if((*panDataPtr != panNp)&&
328 (*colorDataPtr != colorNp))
346 double slope, intercept;
395 "Blurring kernel width");
416 const char* prefix)
const virtual void initialize()
virtual ossim_uint32 getWidth() const
ossimRefPtr< ossimImageData > theNormLowPassTile
void setParameterDescription(ossim_uint32 idx, const ossimString &descrption)
double computeParameterOffset(ossim_uint32 idx) const
bool saveAdjustments(ossimKeywordlist &kwl, const ossimString &prefix=ossimString("")) const
Save all adjustments to the KWL file.
virtual ossim_uint32 getNumberOfBands() const
ossimRefPtr< ossimImageData > getNormTile(const ossimIrect &rect, ossim_uint32 resLevel)
virtual void setImageRectangle(const ossimIrect &rect)
virtual void disconnect(ossimConnectableObject *object=0)
Will disconnect the object passed in.
Represents serializable keyword/value map.
virtual void adjustableParametersChanged()
virtual void initialize()
virtual void initAdjustableParameters()
ossim_float64 theBlurrKernelWidth
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossimRefPtr< ossimImageData > theTile
const ossimIpt & ul() const
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
ossimImageSource * theInputConnection
virtual ossimObject * getObject()
For RTTI support.
ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
ossim_uint32 theRegressionWidth
virtual void initialize()
Initialize the data buffer.
virtual ossimObject * dup() const
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
ossim_uint32 theHighPassKernelWidth
void getEquation(double &slope, double &intercept)
virtual ossimDataObjectStatus validate() const
void setParameterOffset(ossim_uint32 idx, ossim_float64 value, bool notify=false)
class for symmetric Gaussian filtering implemented as two separable horizontal/vertical gaussian filt...
ossimImageSource * theIntensityConnection
virtual void setConvolution(const double *kernel, int nrows, int ncols, bool doWeightedAverage=false)
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
virtual ~ossimLocalCorrelationFusion()
bool loadAdjustments(const ossimKeywordlist &kwl, const ossimString &prefix=ossimString(""))
RTTI_DEF2(ossimLocalCorrelationFusion, "ossimLocalCorrelationFusion", ossimFusionCombiner, ossimAdjustableParameterInterface)
virtual ossimIrect getImageRectangle() const
virtual void copyTileToNormalizedBuffer(ossim_float64 *buf) const
Copies entire tile to buf passed in.
const ossimIpt & lr() const
virtual void copyNormalizedBufferToTile(ossim_float64 *buf)
Copies buf passed in to tile.
void setGaussStd(const ossim_float64 &v)
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
ossim_uint32 width() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
This implements a Local correlation fusion based on the paper:
virtual const ossim_float64 * getMinPix() const
virtual void makeBlank()
Initializes data to null pixel values.
ossimRefPtr< ossimImageData > theNormHighPassTile
virtual void setAdjustableParameter(ossim_uint32 idx, double value, bool notify=false)
virtual const void * getBuf() const
virtual void initialize()
void resizeAdjustableParameterArray(ossim_uint32 numberOfParameters)
NEWMAT::Matrix theHighPassMatrix
ossimRefPtr< ossimConvolutionSource > theHighPassFilter
bool computeRegression(ossim_float64 &slopeResult, const ossimIpt &origin, ossimRefPtr< ossimImageData > panData, ossimRefPtr< ossimImageData > colorData, ossim_uint32 colorBandIdx)
virtual void initialize()
inherited methods
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=NULL)
Method to the load (recreate) the state of an object from a keyword list.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=NULL) const
Method to save the state of an object to a keyword list.
void setParameterCenter(ossim_uint32 idx, double center, bool notify=false)
void addPoint(const ossimDpt &pt)
ossimLocalCorrelationFusion()
ossimRefPtr< ossimImageGaussianFilter > theLowPassFilter
void setParameterSigma(ossim_uint32 idx, double value, bool notify=false)
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)