//----------------------------------------------------------------------------- void GuiEditor::valueChanged (CControl* control) { //effect->setParameterAutomated (control->getTag (), control->getValue ()); float value; int ival; const char* text; std::string result; char* tempt; switch (control->getTag()) { case kBufferSize: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateBufferSize(ival); break; case kGain: value = control->getValue(); result = floatToString(value*maxGain); gainDisplay->setText(result.c_str()); updateGain(value*maxGain); break; case kGainText: text = ((CTextEdit*)(control))->getText(); value = charToFloat(text); gainFader->setValue(value/(float)maxGain); updateGain(value); break; case kXScale: value = control->getValue(); result = floatToString(value*maxXScale); xScaleDisplay->setText(result.c_str()); updateXScale(value*maxXScale); break; case kXScaleText: text = ((CTextEdit*)(control))->getText(); value = charToFloat(text); xScaleFader->setValue(value/(float)maxXScale); updateXScale(value); break; case kYScale: value = control->getValue(); result = floatToString(value*maxYScale); yScaleDisplay->setText(result.c_str()); updateYScale(value*maxYScale); break; case kYScaleText: text = ((CTextEdit*)(control))->getText(); value = charToFloat(text); yScaleFader->setValue(value/(float)maxYScale); updateYScale(value); break; case kResponse: value = control->getValue(); result = floatToString(value); responseDisplay->setText(result.c_str()); updateResponse(value); break; case kResponseText: text = ((CTextEdit*)(control))->getText(); value = charToFloat(text); responseFader->setValue(value); updateResponse(value); break; case kBands: ival = (int)(control->getValue()*maxBands); result = intToString(ival); bandsDisplay->setText(result.c_str()); bandsFader->setValue(((float)ival)/(float)maxBands); updateBands(ival); break; case kBandsText: text = ((CTextEdit*)(control))->getText(); ival = charToInt(text); bandsFader->setValue((float)value/(float)maxBands); updateBands(ival); break; case kAmpScale: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateAmpScale(ival); break; case kType: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateType(ival); break; case kDisplay: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateDisplayt(ival); break; case kResampling: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateResampling(ival); break; case kFreqScale: ((COptionMenu*)(control))->getCurrent(tempt); ival = ((COptionMenu*)(control))->getIndex(tempt); updateFreqScale(ival); break; case kAddress: text = ((CTextEdit*)(control))->getText(); updateAddress(text); break; case kPort: text = ((CTextEdit*)(control))->getText(); ival = charToInt(text); updatePort(ival); break; case kHost: text = ((CTextEdit*)(control))->getText(); updateHost(text); break; } }
void OTBSpectralAngleDistanceImageFilterProcessor::process() { try { //Detect the number of spectral bands the input image has. nbBands = inPort_.getData()->GetNumberOfComponentsPerPixel(); LINFO("Number of Bands detected: " << nbBands); updateBands(nbBands); MultiSpectralImageType::PixelType pixelRef; //Pass the parameters to filter //depending on input image's spectral bands. switch (nbBands) { case 1: { pixelRef.SetSize(1); pixelRef[0] = refPixel0_.get(); break; } case 2: { pixelRef.SetSize(2); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); break; } case 3: { pixelRef.SetSize(3); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); break; } case 4: { pixelRef.SetSize(4); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); break; } case 5: { pixelRef.SetSize(5); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); break; } case 6: { pixelRef.SetSize(6); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); break; } case 7: { pixelRef.SetSize(7); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); pixelRef[6] = refPixel6_.get(); break; } case 8: { pixelRef.SetSize(8); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); pixelRef[6] = refPixel6_.get(); pixelRef[7] = refPixel7_.get(); break; } } filter->SetInput(inPort_.getData()); filter->SetReferencePixel(pixelRef); filter->UpdateLargestPossibleRegion(); filter->Update(); outPort_.setData(filter->GetOutput()); LINFO("Spectral Angle Distance Image Filter Connected!"); } catch (int e) { LERROR("Error in Spectral Angle Distance Image Filter"); return; } }
void OTBCloudDetectionImageFilterProcessor::process() { try { //REFERENCE PIXELS PROPERTY // *CLASSIC METHOD //obtain number of spectral bands manually from user by analyzing a stringProperty //*it may trigger an error if wrong number of arguments are given* // std::string text = referencePixelProperty.get(); // std::vector<std::string> strings; // std::istringstream f(text); // std::string s; // while (std::getline(f, s, ';')) { // std::cout << s << std::endl; // strings.push_back(s); // } // for(int i = 0; i < strings.size(); i++){ // std::string cs = strings.at(i); // const char *c = cs.c_str(); // referencePixel.SetElement(i, ::atof(c)); // } // *DYNAMIC METHOD //get number of spectral bands from image after the processor is connected //and display the equivalent number of intPropertiesto get the reference pixel values //Detect the number of spectral bands the input image has. nbBands = inPort_.getData()->GetNumberOfComponentsPerPixel(); LINFO("Number of Bands detected: " << nbBands); updateBands(nbBands); VectorImageType::PixelType pixelRef; //Pass the parameters to filter //depending on input image's spectral bands. switch (nbBands) { case 1: { pixelRef.SetSize(1); pixelRef[0] = refPixel0_.get(); break; } case 2: { pixelRef.SetSize(2); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); break; } case 3: { pixelRef.SetSize(3); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); break; } case 4: { pixelRef.SetSize(4); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); break; } case 5: { pixelRef.SetSize(5); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); break; } case 6: { pixelRef.SetSize(6); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); break; } case 7: { pixelRef.SetSize(7); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); pixelRef[6] = refPixel6_.get(); break; } case 8: { pixelRef.SetSize(8); pixelRef[0] = refPixel0_.get(); pixelRef[1] = refPixel1_.get(); pixelRef[2] = refPixel2_.get(); pixelRef[3] = refPixel3_.get(); pixelRef[4] = refPixel4_.get(); pixelRef[5] = refPixel5_.get(); pixelRef[6] = refPixel6_.get(); pixelRef[7] = refPixel7_.get(); break; } } //SET FILTER PARAMETERS filter->SetInput(inPort_.getData()); filter->SetReferencePixel(pixelRef); filter->SetVariance(gaussianVarianceValue_.get()); filter->SetMinThreshold(minThreshold_.get()); filter->SetMaxThreshold(maxThreshold_.get()); filter->UpdateLargestPossibleRegion(); filter->Update(); outPort_.setData(filter->GetOutput()); LINFO("Cloud Detection Image Filter Connected!"); } catch (int e) { LERROR("Error in Cloud Detection Image Filter"); return; } }