60 tileRect.
lr().
y + 1));
165 <<
"ossim3x3ConvolutionFilter::getTile WARNING:\n" 167 <<
" Not supported by ossim3x3ConvolutionFilter" << endl;
196 inputW +
std::abs(outputOrigin.
x - inputOrigin.
x);
201 T* ulKernelStartBuf = NULL;
202 T* leftKernelStartBuf = NULL;
203 T* llKernelStartBuf = NULL;
205 for(
ossim_int32 band = 0; band < numberOfBands; ++band)
207 T* inputBuf =
static_cast<T*
>(inputData->
getBuf(band))+startInputOffset;
208 T* outputBuf =
static_cast<T*
>(outputData->
getBuf(band));
211 T nullPix =
static_cast<T
>(inputData->
getNullPix(band));
214 if(inputBuf&&outputBuf)
219 ulKernelStartBuf = inputBuf + (rowOffset + ulKernelStart);
220 leftKernelStartBuf = inputBuf + (rowOffset + leftKernelStart);
221 llKernelStartBuf = inputBuf + (rowOffset + llKernelStart);
225 if((ulKernelStartBuf[0] != nullPix)&&
226 (ulKernelStartBuf[1] != nullPix)&&
227 (ulKernelStartBuf[2] != nullPix)&&
228 (leftKernelStartBuf[0] != nullPix)&&
229 (leftKernelStartBuf[1] != nullPix)&&
230 (leftKernelStartBuf[2] != nullPix)&&
231 (llKernelStartBuf[0] != nullPix)&&
232 (llKernelStartBuf[1] != nullPix)&&
233 (llKernelStartBuf[2] != nullPix))
235 sum =
theKernel[0][0]*(double)ulKernelStartBuf[0] +
236 theKernel[0][1]*(
double)ulKernelStartBuf[1] +
237 theKernel[0][2]*(double)ulKernelStartBuf[2] +
238 theKernel[1][0]*(
double)leftKernelStartBuf[0] +
239 theKernel[1][1]*(double)leftKernelStartBuf[1] +
240 theKernel[1][2]*(
double)leftKernelStartBuf[2] +
241 theKernel[2][0]*(double)llKernelStartBuf[0] +
242 theKernel[2][1]*(
double)llKernelStartBuf[1] +
243 theKernel[2][2]*(double)llKernelStartBuf[2];
249 else if(sum < minPix)
255 *outputBuf =
static_cast<T
>(sum);
259 *outputBuf = oNullPix;
266 ++leftKernelStartBuf;
294 inputW +
std::abs(outputOrigin.
x - inputOrigin.
x);
299 T* ulKernelStartBuf = NULL;
300 T* leftKernelStartBuf = NULL;
301 T* llKernelStartBuf = NULL;
303 for(
ossim_uint32 band = 0; band < numberOfBands; ++band)
305 T* inputBuf =
static_cast<T*
>(inputData->
getBuf(band))+startInputOffset;
306 T* outputBuf =
static_cast<T*
>(outputData->
getBuf(band));
310 if(inputBuf&&outputBuf)
315 ulKernelStartBuf = inputBuf + (rowOffset + ulKernelStart);
316 leftKernelStartBuf = inputBuf + (rowOffset + leftKernelStart);
317 llKernelStartBuf = inputBuf + (rowOffset + llKernelStart);
320 sum =
theKernel[0][0]*(double)ulKernelStartBuf[0] +
321 theKernel[0][1]*(
double)ulKernelStartBuf[1] +
322 theKernel[0][2]*(double)ulKernelStartBuf[2] +
323 theKernel[1][0]*(
double)leftKernelStartBuf[0] +
324 theKernel[1][1]*(double)leftKernelStartBuf[1] +
325 theKernel[1][2]*(
double)leftKernelStartBuf[2] +
326 theKernel[2][0]*(double)llKernelStartBuf[0] +
327 theKernel[2][1]*(
double)llKernelStartBuf[1] +
328 theKernel[2][2]*(double)llKernelStartBuf[2];
334 else if(sum < minPix)
340 *outputBuf =
static_cast<T
>(sum);
348 ++leftKernelStartBuf;
385 if(!property)
return;
386 if(property->
getName() ==
"Kernel")
392 theKernel[0][0] = (*matrixProperty)(0,0);
393 theKernel[1][0] = (*matrixProperty)(1,0);
394 theKernel[2][0] = (*matrixProperty)(2,0);
395 theKernel[0][1] = (*matrixProperty)(0,1);
396 theKernel[1][1] = (*matrixProperty)(1,1);
397 theKernel[2][1] = (*matrixProperty)(2,1);
398 theKernel[0][2] = (*matrixProperty)(0,2);
399 theKernel[1][2] = (*matrixProperty)(1,2);
400 theKernel[2][2] = (*matrixProperty)(2,2);
419 property->resize(3,3);
429 property->setCacheRefreshBit();
439 propertyNames.push_back(
"Kernel");
443 const char* prefix)
const 490 const char* v = kwl.
find(newPrefix.
c_str(),
595 tempMin += (k<0.0) ? k*inputMax : k*inputMin;
596 tempMax += (k>0.0) ? k*inputMax : k*inputMin;
16 bit unsigned integer (15 bits used)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossim_uint32 getNumberOfBands() const
virtual void setImageRectangle(const ossimIrect &rect)
Represents serializable keyword/value map.
ossim3x3ConvolutionFilter(ossimObject *owner=NULL)
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
const char * find(const char *key) const
RTTI_DEF1(ossim3x3ConvolutionFilter, "ossim3x3ConvolutionFilter", ossimImageSourceFilter)
void allocate()
Allocates theTile.
static ossimString toString(bool aValue)
Numeric to string methods.
const ossimIpt & ul() const
void convolvePartial(T, ossimRefPtr< ossimImageData > inputData, ossimRefPtr< ossimImageData > outputData)
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
virtual void initialize()
void clearNullMinMax()
Clears data members theNullPixValue, theMinPixValue, and theMaxPixValue.
void convolveFull(T, ossimRefPtr< ossimImageData > inputData, ossimRefPtr< ossimImageData > outputData)
void computeNullMinMax()
Computes null, min, and max considering input connection and theKernel.
virtual void initialize()
Initialize the data buffer.
virtual ~ossim3x3ConvolutionFilter()
virtual double getMinPixelValue(ossim_uint32 band=0) const
Returns the min pixel of the band.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
OSSIM_DLL double defaultMin(ossimScalarType scalarType)
static ossimImageDataFactory * instance()
virtual ossimDataObjectStatus validate() const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
OSSIM_DLL double defaultNull(ossimScalarType scalarType)
ossimImageSource * theInputConnection
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
virtual double getMinPixelValue(ossim_uint32 band=0) const
Returns the min pixel of the band.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
const ossimIpt & lr() const
vector< double > theMinPixValue
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual void setKernel(double kernel[3][3])
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
vector< double > theMaxPixValue
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
OSSIM_DLL double defaultMax(ossimScalarType scalarType)
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual double getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
virtual const void * getBuf() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
virtual double getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
virtual double getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
virtual void getKernel(double kernel[3][3])
vector< double > theNullPixValue
virtual const ossimIpt & getOrigin() const
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual double getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
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
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
const ossimString & getName() const
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)