26 static const ossimString WINDOW_SIZE_KW =
"window_size";
27 static const ossimString RECURSIVE_DILATION_KW =
"recursive_dilation";
34 theRecursiveFlag(false),
35 theNullFoundFlag(false)
63 rect.
ul().
y - halfSize,
64 rect.
lr().
x + halfSize,
65 rect.
lr().
y + halfSize);
118 <<
"ossimDilationFilter::applyFilter WARNING:\n" 119 <<
"Unhandled scalar type!" << endl;
154 vector<double> values;
155 for(
ossim_uint32 bandIdx = 0; bandIdx < numBands; ++bandIdx)
157 T* inputBuf = (T*)inputData->
getBuf(bandIdx);
159 if (!inputBuf || !outputBuf)
164 const T NP = (T)inputData->
getNullPix(bandIdx);
166 for(
y = 0;
y < oh; ++
y)
168 for(
x = 0;
x < ow; ++
x)
172 const T CP = *(inputBuf+i_offset);
178 for(kernelY = -halfWindow; kernelY <= halfWindow; ++kernelY)
180 yi =
y + kernelY + delta;
181 if ((yi < 0) || (
y > ih))
184 for(kernelX = -halfWindow; kernelX <= halfWindow; ++kernelX)
186 xi =
x + kernelX + delta;
187 if ((xi < 0) || (
x > iw))
190 T tempValue = *(inputBuf+kernelX+delta + (kernelY+delta)*iw);
192 values.push_back((
double)tempValue);
196 if(values.size() > 0)
198 double accum = accumulate(values.begin(), values.end(), 0.0);
199 double average = accum/(double)values.size();
200 (*outputBuf) = (T)average;
247 if (!property.
valid())
252 if (name == WINDOW_SIZE_KW)
256 else if (name == RECURSIVE_DILATION_KW)
259 property->valueToString(value);
271 if (name == WINDOW_SIZE_KW)
277 else if (name == RECURSIVE_DILATION_KW)
288 propertyNames.push_back(WINDOW_SIZE_KW);
289 propertyNames.push_back(RECURSIVE_DILATION_KW);
302 const char* lookup = kwl.
find(prefix, WINDOW_SIZE_KW.
c_str());
306 lookup = kwl.
find(prefix, RECURSIVE_DILATION_KW.
c_str());
16 bit unsigned integer (15 bits used)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
virtual void setDescription(const ossimString &description)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossim_uint32 getNumberOfBands() const
virtual void setImageRectangle(const ossimIrect &rect)
Represents serializable keyword/value map.
const char * find(const char *key) const
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
static ossimString toString(bool aValue)
Numeric to string methods.
ossim_uint32 theWindowSize
Used for recursion when recursive fill enabled
const ossimIpt & ul() const
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
ossim_uint32 toUInt32() const
16 bit unsigned integer (13 bits used)
RTTI_DEF1(ossimDilationFilter, "ossimDilationFilter", ossimImageSourceFilter)
unsigned short ossim_uint16
ossimPolygon theValidImagePoly
virtual ~ossimDilationFilter()
virtual ossimObject * dup() const
virtual void initialize()
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual void initialize()
virtual ossimDataObjectStatus validate() const
signed short ossim_sint16
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual void setImageRectangleAndBands(const ossimIrect &rect, ossim_uint32 numberOfBands)
bool toBool() const
String to numeric methods.
virtual void getValidImageVertices(std::vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
ordering specifies how the vertices should be arranged.
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual ossimIrect getImageRectangle() 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.
void setRecursiveFlag(bool flag=true)
Set if getTile is to be called recursively until all pixels have been assigned non-null.
const ossimIpt & lr() const
ossimRefPtr< ossimImageData > theTile
bool getRecursiveFlag() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
bool isPointWithin(const ossimDpt &point) const
virtual const void * getBuf() 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.
void doDilation(T scalarType, ossimRefPtr< ossimImageData > &inputData)
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
ossimDilationFilter(ossimObject *owner=NULL)
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossimDataObjectStatus
Definitions for data object status.
ossim_uint32 getWindowSize() const
unsigned char ossim_uint8
ossimRefPtr< ossimImageData > theTempTile
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void setCacheRefreshBit()
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)