OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimHistogramMatchFilter.cpp
Go to the documentation of this file.
7 
8 RTTI_DEF1(ossimHistogramMatchFilter, "ossimHistogramMatchFilter", ossimImageSourceFilter);
11  theAutoLoadInputHistogramFlag(false)
12 {
15 
19 }
20 
22  ossim_uint32 resLevel)
23 {
24  if(isSourceEnabled())
25  {
26  return theTargetHistogramEqualizer->getTile(tileRect, resLevel);
27  }
30  {
32  }
34  {
35  return theInputConnection->getTile(tileRect, resLevel);
36  }
37 
38  return 0;
39 }
40 
41 
43 {
44  theInputHistogramFilename = inputHistogram;
47 }
48 
50 {
51  theTargetHistogramFilename = targetHistogram;
52  theTargetHistogramEqualizer->setHistogram(targetHistogram);
54 }
55 
57 {
59  if(getInput())
60  {
64  }
65  else
66  {
70  }
71 }
72 
74 {
76  if(getInput())
77  {
81  }
82  else
83  {
87  }
88 }
89 
91 {
94  {
96  {
98  }
99  }
100 
103 }
104 
106 {
107  if(!property.valid()) return;
108 
109  ossimString name = property->getName();
110  if(name == "input_histogram_filename")
111  {
113  return;
114  }
115  else if(name == "target_histogram_filename")
116  {
118  return;
119  }
120  else if(name == "auto_load_input_histogram_flag")
121  {
122  theAutoLoadInputHistogramFlag = property->valueToString().toBool();
124  {
125  initialize();
126  }
127  return;
128  }
130 }
131 
133 {
134  if(name == "input_histogram_filename")
135  {
136  ossimFilenameProperty* filenameProp =
138 
140  filenameProp->setCacheRefreshBit();
141  return filenameProp;
142  }
143  else if(name == "target_histogram_filename")
144  {
145  ossimFilenameProperty* filenameProp =
147 
149  filenameProp->setCacheRefreshBit();
150 
151  return filenameProp;
152  }
153  if(name == "auto_load_input_histogram_flag")
154  {
155  ossimBooleanProperty* boolProp = new ossimBooleanProperty(name,
157  boolProp->setCacheRefreshBit();
158  return boolProp;
159  }
161 }
162 
163 void ossimHistogramMatchFilter::getPropertyNames(std::vector<ossimString>& propertyNames)const
164 {
166 
167  propertyNames.push_back("auto_load_input_histogram_flag");
168  propertyNames.push_back("input_histogram_filename");
169  propertyNames.push_back("target_histogram_filename");
170 }
171 
173  const char* prefix)
174 {
175  const char* inputFilename = kwl.find(prefix, "input_histogram_filename");
176  const char* targetFilename = kwl.find(prefix, "target_histogram_filename");
177  const char* autoLoadInputFlag = kwl.find(prefix, "auto_load_input_histogram_flag");
178 
179  if(autoLoadInputFlag)
180  {
181  theAutoLoadInputHistogramFlag = ossimString(autoLoadInputFlag).toBool();
182  }
183 
184  if(inputFilename&&!theAutoLoadInputHistogramFlag)
185  {
186  setInputHistogram(ossimFilename(inputFilename));
187  }
188  else
189  {
191  }
192 
193  if(targetFilename)
194  {
195  setTargetHistogram(ossimFilename(targetFilename));
196  }
197  else
198  {
200  }
201 
202  return ossimImageSourceFilter::loadState(kwl, prefix);
203 }
204 
206  const char* prefix)const
207 {
209  {
210  kwl.add(prefix,
211  "input_histogram_filename",
212  "",
213  true);
214  }
215  else
216  {
217  kwl.add(prefix,
218  "input_histogram_filename",
220  true);
221  }
222  kwl.add(prefix,
223  "target_histogram_filename",
225  true);
226  kwl.add(prefix,
227  "auto_load_input_histogram_flag",
229  true);
230 
231 
232  return ossimImageSourceFilter::saveState(kwl, prefix);
233 }
234 
236 {
237  ossimTypeNameVisitor visitor(ossimString("ossimImageHandler"),
238  true,
240  accept(visitor);
241 
242  if ( visitor.getObjects().size() )
243  {
245  if ( ih.valid() )
246  {
247  ossimRefPtr<ossimProperty> prop = ih->getProperty("histogram_filename");
248  if( prop.valid() )
249  {
250  ossimFilename inputHisto = ossimFilename(prop->valueToString());
251  if( inputHisto.exists() )
252  {
253  setInputHistogram(inputHisto);
254  }
255  }
256  }
257  }
258 }
virtual void valueToString(ossimString &valueResult) const =0
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
virtual ossimRefPtr< ossimConnectableObject > disconnectMyInput(ossim_int32 inputIndex, bool disconnectOutputFlag=true, bool createEventFlag=true)
Will disconnect the object at the given input index and generate a connection event.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual void connectInputEvent(ossimConnectionEvent &event)
virtual void connectInputEvent(ossimConnectionEvent &event)
Represents serializable keyword/value map.
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
virtual void setHistogram(ossimRefPtr< ossimMultiResLevelHistogram > histogram)
RTTI_DEF1(ossimHistogramMatchFilter, "ossimHistogramMatchFilter", ossimImageSourceFilter)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual void disconnectInputEvent(ossimConnectionEvent &event)
virtual void disconnectInputEvent(ossimConnectionEvent &event)
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
Returns a property given the name.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=NULL)
bool exists() const
void setTargetHistogram(const ossimFilename &targetHistogram)
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
bool toBool() const
String to numeric methods.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
ossimImageSource * theInputConnection
unsigned int ossim_uint32
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 autoLoadInputHistogram()
Will search the input chain and get the histogram_filename property of the image handler.
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
class ossimHistogramMatchFilter
ossimRefPtr< ossimHistogramEqualization > theTargetHistogramEqualizer
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual void initialize()
Initializes the input and target equalizer filters.
virtual void setInverseFlag(bool inverseFlag)
T * getObjectAs(ossim_uint32 idx=0)
Definition: ossimVisitor.h:64
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
void setIoType(ossimFilenamePropertyIoType ioType)
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&#39;s contents...
Definition: ossimString.h:396
ossimRefPtr< ossimHistogramEqualization > theInputHistogramEqualizer
virtual void accept(ossimVisitor &visitor)
We will add a visitor interface for all connectable objects.
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Returns a list of proeprties.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=NULL) const
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
Calls the owned equalizers to create a match composite image.
void setInputHistogram(const ossimFilename &inputHistogram)
void setCacheRefreshBit()
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)