OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimEdgeFilter.cpp
Go to the documentation of this file.
1 //*******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: LGPL
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Garrett Potts
9 //
10 //*******************************************************************
11 // $Id: ossimEdgeFilter.cpp 19956 2011-08-16 00:36:25Z gpotts $
16 
18 
19 #define PROP_EDGE_FILTER "Edge type"
20 
22  :ossimImageSourceFilter(owner),
23  theTile(NULL),
24  theFilterType("Sobel")
25 {
26 }
27 
29  :ossimImageSourceFilter(inputSource),
30  theTile(NULL),
31  theFilterType("Sobel")
32 {
33 }
34 
36  ossimImageSource* inputSource)
37  :ossimImageSourceFilter(owner, inputSource),
38  theTile(NULL),
39  theFilterType("Sobel")
40 {
41 }
42 
44  ossim_uint32 resLevel)
45 {
46  if(!isSourceEnabled())
47  {
48  return ossimImageSourceFilter::getTile(rect, resLevel);
49  }
50 
51  // expand the rect out to cver the 3x3 horizontal and vertical
52  // kernel.
53  //
54  ossimIrect requestRect = rect;
55 
56  adjustRequestRect(requestRect);
57 
58  ossimRefPtr<ossimImageData> inputData =
59  ossimImageSourceFilter::getTile(requestRect, resLevel);
60 
61  if(!inputData.valid() || (!inputData->getBuf()))
62  {
63  return inputData;
64  }
65 
66  if(!theTile.valid()) initialize();
67  if(!theTile.valid()) return theTile;
68 
70 
71  switch(theTile->getScalarType())
72  {
73  case OSSIM_UCHAR:
74  {
76  inputData);
77  break;
78  }
79  case OSSIM_FLOAT:
81  {
83  inputData);
84  break;
85  }
86  case OSSIM_USHORT16:
87  case OSSIM_USHORT11:
88  case OSSIM_USHORT12:
89  case OSSIM_USHORT13:
90  case OSSIM_USHORT14:
91  case OSSIM_USHORT15:
92  {
94  inputData);
95  break;
96  }
97  case OSSIM_SSHORT16:
98  {
100  inputData);
101  break;
102  }
103  case OSSIM_DOUBLE:
105  {
107  inputData);
108  break;
109  }
110  default:
111  {
112  ossimNotify(ossimNotifyLevel_WARN) << "ossimEdgeFilter::getTile WARN: Scalar type = " << theTile->getScalarType()
113  << " Not supported by ossimEdgeFilter" << std::endl;
114  break;
115  }
116  }
117 
118  return theTile;
119 }
120 
122 {
124 
125  theTile = NULL;
126 
127  if(!isSourceEnabled())
128  {
129  return;
130  }
131 
133  if(theTile.valid())
134  {
135  theTile->initialize();
136  }
137 
138 }
139 
140 
142  std::vector<ossimString>& filterNames)const
143 {
144  filterNames.push_back("Laplacian");
145  filterNames.push_back("Prewitt");
146  filterNames.push_back("Roberts");
147  filterNames.push_back("Simple");
148  filterNames.push_back("Sobel");
149  filterNames.push_back("LocalMax8");
150 }
151 
153 {
154  return theFilterType;
155 }
156 
158 {
159  ossimString tempFilterType = filterType;
160  tempFilterType = tempFilterType.downcase();
161 
162  if(tempFilterType.contains("sob"))
163  {
164  theFilterType = "Sobel";
165  }
166  else if(tempFilterType.contains("lap"))
167  {
168  theFilterType = "Laplacian";
169  }
170  else if(tempFilterType.contains("prew"))
171  {
172  theFilterType = "Prewitt";
173  }
174  else if(tempFilterType.contains("rob"))
175  {
176  theFilterType = "Roberts";
177  }
178  else if(tempFilterType.contains("sim"))
179  {
180  theFilterType = "Simple";
181  }
182  else if(tempFilterType.contains("localmax"))
183  {
184  theFilterType = "LocalMax8";
185  }
186  else
187  {
188  theFilterType = "Sobel";
189  }
190 }
191 
193 {
194  if(!property) return;
195 
196  if(property->getName() == PROP_EDGE_FILTER)
197  {
198  theFilterType = property->valueToString();
199  }
200  else
201  {
203  }
204 
205 }
206 
208 {
209  if(name == PROP_EDGE_FILTER)
210  {
211  std::vector<ossimString> filterNames;
212 
213  getFilterTypeNames(filterNames);
216  false,
217  filterNames);
218  stringProp->clearChangeType();
219  stringProp->setReadOnlyFlag(false);
220  stringProp->setCacheRefreshBit();
221 
222  return stringProp;
223  }
224 
226 }
227 
228 void ossimEdgeFilter::getPropertyNames(std::vector<ossimString>& propertyNames)const
229 {
231 
232  propertyNames.push_back(PROP_EDGE_FILTER);
233 }
234 
235 
237 {
238  ossimString filterType = theFilterType;
239  filterType = filterType.downcase();
240  ossimIrect rect = requestRect;
241  if(filterType.contains("sob")||
242  filterType.contains("lap")||
243  filterType.contains("pre")||
244  filterType.contains("localmax"))
245  {
246  requestRect = ossimIrect(rect.ul().x - 1,
247  rect.ul().y - 1,
248  rect.lr().x + 1,
249  rect.lr().y + 1);
250  }
251  else if (filterType.contains("rob") || filterType.contains("sim"))
252  {
253  requestRect = ossimIrect(rect.ul().x,
254  rect.ul().y,
255  rect.lr().x + 1,
256  rect.lr().y + 1);
257  }
258  else
259  {
260  requestRect = ossimIrect(rect.ul().x - 1,
261  rect.ul().y - 1,
262  rect.lr().x + 1,
263  rect.lr().y + 1);
264  }
265 }
266 
267 template <class T>
268 void ossimEdgeFilter::runFilter(T dummyVariable,
269  ossimRefPtr<ossimImageData> inputData)
270 {
271  ossimString filterType = theFilterType;
272  filterType = filterType.downcase();
273 
274  if(filterType.contains("sobel"))
275  {
276  runSobelFilter(dummyVariable, inputData);
277  }
278  else if(filterType.contains("lap"))
279  {
280  runLaplacianFilter(dummyVariable, inputData);
281  }
282  else if(filterType.contains("pre"))
283  {
284  runPrewittFilter(dummyVariable, inputData);
285  }
286  else if(filterType.contains("rob"))
287  {
288  runRobertsFilter(dummyVariable, inputData);
289  }
290  else if(filterType.contains("sim"))
291  {
292  runSimpleFilter(dummyVariable, inputData);
293  }
294  else if(filterType.contains("localmax"))
295  {
296  runLocalMax8Filter(dummyVariable, inputData);
297  }
298  else
299  {
300  theTile->makeBlank();
301  }
302 }
303 
304 template <class T>
305 void ossimEdgeFilter::runSobelFilter(T /* dummyVariable */,
306  ossimRefPtr<ossimImageData> inputData)
307 {
308  ossim_uint32 bandIdx = 0;
309  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
310  double horizontalValue = 0.0;
311  double verticalValue = 0.0;
312  double value = 0.0;
313  // ossim_uint32 valueIdx = 0;
314  ossim_uint32 x = 0;
315  ossim_uint32 y = 0;
316  ossim_uint32 width = theTile->getWidth();
317  ossim_uint32 height = theTile->getHeight();
318  ossim_int32 rowIncrement = inputData->getWidth();
319  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
320 
321  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
322  {
323  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
324  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
325  T np = static_cast<T>(inputData->getNullPix(bandIdx));
326  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
327  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
328 
329  if(inputBuf&&outputBuf)
330  {
331  for(y = 0; y < height; ++y)
332  {
333  for(x = 0; x < width; ++x)
334  {
335  if( (*(inputBuf + rowIncrement + 1) != np))
336  {
337  horizontalValue = ((double)inputBuf[0] - (double)inputBuf[rowIncrement2]) +
338  ((double)(inputBuf[1]*2.0) - (double)( inputBuf[rowIncrement2+1]*2.0)) +
339  ((double)(inputBuf[2]) - (double)(inputBuf[rowIncrement2+2]));
340 
341  verticalValue = ((double)(inputBuf[2]) + (double)inputBuf[rowIncrement+2]*2.0 + (double)inputBuf[rowIncrement2+2]) -
342  (double)(inputBuf[0] + 2.0*(double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement2]);
343 
344  value = sqrt(horizontalValue*horizontalValue + verticalValue*verticalValue);
345 
346  if((value == np) ||
347  (value < minP))
348  {
349  *outputBuf = (static_cast<T>(minP));
350  }
351  else if(value > maxP)
352  {
353  *outputBuf = (static_cast<T>(maxP));
354  }
355  else
356  {
357  *outputBuf = (static_cast<T>(value));
358  }
359 
360  }
361  else
362  {
363  *outputBuf = np;
364  }
365  ++outputBuf;
366  ++inputBuf;
367  }
368  inputBuf+=2;
369  }
370  }
371  }
372  theTile->validate();
373 }
374 
375 template <class T>
376 void ossimEdgeFilter::runPrewittFilter(T /* dummyVariable */,
377  ossimRefPtr<ossimImageData> inputData)
378 {
379  ossim_uint32 bandIdx = 0;
380  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
381  double horizontalValue = 0.0;
382  double verticalValue = 0.0;
383  double value = 0.0;
384  // ossim_uint32 valueIdx = 0;
385  ossim_uint32 x = 0;
386  ossim_uint32 y = 0;
387  ossim_uint32 width = theTile->getWidth();
388  ossim_uint32 height = theTile->getHeight();
389  ossim_int32 rowIncrement = inputData->getWidth();
390  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
391 
392  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
393  {
394  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
395  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
396  T np = static_cast<T>(inputData->getNullPix(bandIdx));
397  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
398  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
399 
400  if(inputBuf&&outputBuf)
401  {
402  for(y = 0; y < height; ++y)
403  {
404  for(x = 0; x < width; ++x)
405  {
406  if( (*(inputBuf + rowIncrement + 1) != np))
407  {
408  horizontalValue = ((double)inputBuf[0] - (double)inputBuf[rowIncrement2]) +
409  ((double)(inputBuf[1]) - (double)( inputBuf[rowIncrement2+1])) +
410  ((double)(inputBuf[2]) - (double)(inputBuf[rowIncrement2+2]));
411 
412  verticalValue = ((double)(inputBuf[2]) + (double)inputBuf[rowIncrement+2] + (double)inputBuf[rowIncrement2+2]) -
413  ((double)inputBuf[0] + (double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement2]);
414 
415  value = sqrt(horizontalValue*horizontalValue + verticalValue*verticalValue);
416 
417  if((value == np) ||
418  (value < minP))
419  {
420  *outputBuf = (static_cast<T>(minP));
421  }
422  else if(value > maxP)
423  {
424  *outputBuf = (static_cast<T>(maxP));
425  }
426  else
427  {
428  *outputBuf = (static_cast<T>(value));
429  }
430 
431  }
432  else
433  {
434  *outputBuf = np;
435  }
436  ++outputBuf;
437  ++inputBuf;
438  }
439  inputBuf+=2;
440  }
441  }
442  }
443  theTile->validate();
444 }
445 
446 template <class T>
447 void ossimEdgeFilter::runRobertsFilter(T /* dummyVariable */,
448  ossimRefPtr<ossimImageData> inputData)
449 {
450  ossim_uint32 bandIdx = 0;
451  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
452  double v1 = 0.0;
453  double v2 = 0.0;
454  double value = 0.0;
455  // ossim_uint32 valueIdx = 0;
456  ossim_uint32 x = 0;
457  ossim_uint32 y = 0;
458  ossim_uint32 width = theTile->getWidth();
459  ossim_uint32 height = theTile->getHeight();
460  ossim_int32 rowIncrement = inputData->getWidth();
461 
462  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
463  {
464  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
465  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
466  T np = static_cast<T>(inputData->getNullPix(bandIdx));
467  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
468  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
469 
470  if(inputBuf&&outputBuf)
471  {
472  for(y = 0; y < height; ++y)
473  {
474  for(x = 0; x < width; ++x)
475  {
476  if( (*inputBuf) != np)
477  {
478  v1 = (double)inputBuf[0] - (double)(inputBuf[rowIncrement+1]);
479  v1 = (double)inputBuf[0] - (double)(inputBuf[1]);
480 
481  v2 = (double)inputBuf[1] - (double)inputBuf[rowIncrement];
482  v2 = (double)inputBuf[0] - (double)inputBuf[rowIncrement];
483 
484  value = sqrt(v1*v1 + v2*v2);
485 
486  if((value == np) ||
487  (value < minP))
488  {
489  *outputBuf = (static_cast<T>(minP));
490  }
491  else if(value > maxP)
492  {
493  *outputBuf = (static_cast<T>(maxP));
494  }
495  else
496  {
497  *outputBuf = (static_cast<T>(value));
498  }
499 
500  }
501  else
502  {
503  *outputBuf = np;
504  }
505  ++outputBuf;
506  ++inputBuf;
507  }
508  ++inputBuf;
509  }
510  }
511  }
512  theTile->validate();
513 }
514 
515 template <class T>
516 void ossimEdgeFilter::runSimpleFilter(T /* dummyVariable */, ossimRefPtr<ossimImageData> inputData)
517 {
518  ossim_uint32 bandIdx = 0;
519  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
520  double v1 = 0.0;
521  double v2 = 0.0;
522  double value = 0.0;
523  // ossim_uint32 valueIdx = 0;
524  ossim_uint32 x = 0;
525  ossim_uint32 y = 0;
526  ossim_uint32 width = theTile->getWidth();
527  ossim_uint32 height = theTile->getHeight();
528  ossim_int32 rowIncrement = inputData->getWidth();
529 
530  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
531  {
532  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
533  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
534  T np = static_cast<T>(inputData->getNullPix(bandIdx));
535  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
536  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
537 
538  if(inputBuf&&outputBuf)
539  {
540  for(y = 0; y < height; ++y)
541  {
542  for(x = 0; x < width; ++x)
543  {
544  if( (*inputBuf) != np)
545  {
546  v1 = (double)inputBuf[0] - (double)(inputBuf[1]);
547  v2 = (double)inputBuf[0] - (double)inputBuf[rowIncrement];
548  value = sqrt(v1*v1 + v2*v2);
549 
550  if((value == np) || (value < minP))
551  *outputBuf = (static_cast<T>(minP));
552  else if(value > maxP)
553  *outputBuf = (static_cast<T>(maxP));
554  else
555  *outputBuf = (static_cast<T>(value));
556  }
557  else
558  {
559  *outputBuf = np;
560  }
561  ++outputBuf;
562  ++inputBuf;
563  }
564  ++inputBuf;
565  }
566  }
567  }
568  theTile->validate();
569 }
570 
571 template <class T>
572 void ossimEdgeFilter::runLaplacianFilter(T /* dummyVariable */,
573  ossimRefPtr<ossimImageData> inputData)
574 {
575  ossim_uint32 bandIdx = 0;
576  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
577  // double horizontalValue = 0.0;
578  // double verticalValue = 0.0;
579  double value = 0.0;
580  // ossim_uint32 valueIdx = 0;
581  ossim_uint32 x = 0;
582  ossim_uint32 y = 0;
583  ossim_uint32 width = theTile->getWidth();
584  ossim_uint32 height = theTile->getHeight();
585  ossim_int32 rowIncrement = inputData->getWidth();
586  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
587 
588  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
589  {
590  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
591  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
592  T np = static_cast<T>(inputData->getNullPix(bandIdx));
593  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
594  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
595 
596  if(inputBuf&&outputBuf)
597  {
598  for(y = 0; y < height; ++y)
599  {
600  for(x = 0; x < width; ++x)
601  {
602  if( (*(inputBuf + rowIncrement + 1) != np))
603  {
604 
605  value = fabs(((double)inputBuf[rowIncrement + 1]*4.0) -
606  ((double)inputBuf[1] + (double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement + 2] + (double)inputBuf[rowIncrement2+1]));
607 
608  if((value == np) ||
609  (value < minP))
610  {
611  *outputBuf = (static_cast<T>(minP));
612  }
613  else if(value > maxP)
614  {
615  *outputBuf = (static_cast<T>(maxP));
616  }
617  else
618  {
619  *outputBuf = (static_cast<T>(value));
620  }
621 
622  }
623  else
624  {
625  *outputBuf = np;
626  }
627  ++outputBuf;
628  ++inputBuf;
629  }
630  inputBuf+=2;
631  }
632  }
633  }
634  theTile->validate();
635 }
636 
637 template <class T>
638 void ossimEdgeFilter::runLocalMax8Filter(T /* dummyVariable */,
639  ossimRefPtr<ossimImageData> inputData)
640 {
641  ossim_uint32 bandIdx = 0;
642  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
643 
644  ossim_uint32 x = 0;
645  ossim_uint32 y = 0;
646  ossim_uint32 width = theTile->getWidth();
647  ossim_uint32 height = theTile->getHeight();
648  ossim_int32 rowIncrement = inputData->getWidth();
649  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
650 
651  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
652  {
653  //inputBuf has a 1 pixel edge compared to outputBuf
654  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
655  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
656  T np = static_cast<T>(inputData->getNullPix(bandIdx)); //changed to input Null
657 
658  if(inputBuf&&outputBuf)
659  {
660  //one pass: maybe faster if changed to two passes
661  T* outB;
662  T* inB;
663 
664  outB = outputBuf;
665  inB = inputBuf;
666  for(y = 0; y < height; ++y)
667  {
668  for(x = 0; x < width; ++x)
669  {
670  if (inB[1+rowIncrement] != np)
671  {
672  *outB = max<T>(
673  max<T>(
674  max<T>(inB[0],inB[1]),
675  max<T>(inB[2],inB[rowIncrement])),
676  max<T>(
677  max<T>(inB[rowIncrement+2],inB[rowIncrement2]),
678  max<T>(inB[rowIncrement2+1],inB[rowIncrement2+2])
679  ));
680  }
681  else
682  {
683  *outB = np;
684  }
685  ++outB;
686  ++inB;
687  }
688  inB+=2; //go to next line, jump due to edge
689  }
690  }
691  }
692  theTile->validate();
693 }
694 
696  const char* prefix)const
697 {
698  kwl.add(prefix,
700  getFilterType(),
701  true);
702 
703  return ossimImageSourceFilter::saveState(kwl, prefix);
704 }
705 
706 
708  const char* prefix)
709 {
710  const char* value = kwl.find(prefix,
712  if(value)
713  {
714  setFilterType(ossimString(value));
715  } else {
716  ossimNotify(ossimNotifyLevel_WARN) << "ossimEdgeFilter::loadState WARN: no filter type found" << std::endl;
717  }
718 
719  return ossimImageSourceFilter::loadState(kwl, prefix);
720 }
16 bit unsigned integer (15 bits used)
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
RTTI_DEF1(ossimEdgeFilter, "ossimEdgeFilter", ossimImageSourceFilter)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual const ossim_float64 * getMaxPix() const
void runLaplacianFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
virtual ossim_uint32 getNumberOfBands() const
class ossimEdgeFilter
Represents serializable keyword/value map.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
ossim_uint32 y
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
void runFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
float ossim_float32
bool contains(char aChar) const
Definition: ossimString.h:58
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
ossimEdgeFilter(ossimObject *owner=NULL)
const ossimIpt & ul() const
Definition: ossimIrect.h:274
virtual ossim_uint32 getHeight() const
virtual void setFilterType(const ossimString &filterType)
The filter type can be one of the following strings.
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
virtual void setReadOnlyFlag(bool flag)
unsigned short ossim_uint16
virtual void initialize()
Initialize the data buffer.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
double ossim_float64
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
void clearChangeType()
virtual void getFilterTypeNames(std::vector< ossimString > &filterNames) const
static ossimImageDataFactory * instance()
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)
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
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
Definition: ossimIrect.h:276
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossimString theFilterType
virtual const ossim_float64 * getMinPix() const
#define PROP_EDGE_FILTER
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
virtual ossimString getFilterType() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossim_int32 y
Definition: ossimIpt.h:142
void runRobertsFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
virtual const void * getBuf() const
void runLocalMax8Filter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
void adjustRequestRect(ossimIrect &requestRect) const
ossimRefPtr< ossimImageData > theTile
virtual void initialize()
ossim_int32 x
Definition: ossimIpt.h:141
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
void runSimpleFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
32 bit floating point
void runPrewittFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
unsigned char ossim_uint8
void runSobelFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void setCacheRefreshBit()
8 bit unsigned iteger
const ossimString & getName() const
int ossim_int32
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)