コード例 #1
0
void DescriptorChooserPresenter::changeDescriptor(int descriptor){
    if(m_currentDescriptorPresenterIndex != descriptor){
	disconnect(m_currentDescriptorPresenter, SIGNAL(descriptorChanged()), this, SIGNAL(descriptorChanged()));
	m_currentDescriptorPresenter->deactivate();
	m_currentDescriptorPresenterIndex = descriptor;
	m_currentDescriptorPresenter = m_descriptorPresenters[m_currentDescriptorPresenterIndex];
	m_chooser->setEnumValue("descriptor", m_currentDescriptorPresenterIndex);
	m_currentDescriptorPresenter->activate();
	connect(m_currentDescriptorPresenter, SIGNAL(descriptorChanged()), this, SIGNAL(descriptorChanged()));
	emit descriptorChanged();
    }
}
コード例 #2
0
void DescriptorChooserPresenter::insertDescriptor(const QString& name, DescriptorPresenter* descriptor){
    m_descriptorPresenterNames.push_back(name);
    m_descriptorPresenters.push_back(descriptor);
    m_chooser->insertEnumValue("descriptor", name);
    if(m_descriptorPresenters.size() == 1){ 
	m_currentDescriptorPresenter = descriptor;
	m_currentDescriptorPresenterIndex = 0;
	connect(m_currentDescriptorPresenter, SIGNAL(descriptorChanged()), this, SIGNAL(descriptorChanged()));
	m_currentDescriptorPresenter->activate();
    } else{
	descriptor->deactivate();
	m_currentDescriptorPresenter->activate();
    }
}
コード例 #3
0
void ShapeContextPresenter::changeMinRho(double value){
    ShapeContextGenerator *descriptor = (ShapeContextGenerator *) m_descriptor;
    double guiValue; 
    m_descriptorParameter->getDoubleValue(QString("minRho"), guiValue);
    if(descriptor->getMinRho() != value ||  guiValue != value){
	descriptor->setEdges(value, descriptor->getMaxRho(), descriptor->getBinRho(), descriptor->getBinPhi());
	m_descriptorParameter->setDoubleValue("minRho", descriptor->getMinRho());
	emit descriptorChanged();
    }
}
コード例 #4
0
void ShapeContextPresenter::changeDistanceFunction(int value){
    ShapeContextGenerator *descriptor = (ShapeContextGenerator *) m_descriptor;
    if(m_currentDistanceFunctionIndex != value){
	m_currentDistanceFunctionIndex = value;
	m_currentDistanceFunction = m_distanceFunctions[m_currentDistanceFunctionIndex];
	descriptor->setDistanceFunction(m_currentDistanceFunction);
	m_descriptorParameter->setEnumValue("distanceFunction", m_currentDistanceFunctionIndex);
	emit descriptorChanged();
    }
}
コード例 #5
0
void ShapeContextPresenter::changeBinPhi(int value){
    ShapeContextGenerator *descriptor = (ShapeContextGenerator *) m_descriptor;
    int guiValue; 
    m_descriptorParameter->getIntValue(QString("binPhi"), guiValue);
    if(descriptor->getBinPhi() != (unsigned int)value ||  guiValue != value){
	descriptor->setEdges(descriptor->getMinRho(), descriptor->getMaxRho(), descriptor->getBinRho(), value);
	m_descriptorParameter->setIntValue("binPhi", descriptor->getBinPhi());
	emit descriptorChanged();
    }
}
コード例 #6
0
FLIRTDemo::FLIRTDemo(QWidget* parent, SensorStream& sensor): 
    QWidget(parent), 
    m_sensor(sensor),
	m_currentPoint(NULL),
	m_reading(NULL)
{ 
    m_sensorWidget = new SensorStreamWidget(this);
    m_rendererWidget = new RendererWidget(this);
    m_descriptorRendererWidget = new RendererWidget(this);
    m_peakMR = new SimpleMinMaxPeakFinder(0.2, 0.04);
    m_peakR = new SimplePeakFinder(0.2, 0.04);
    m_peakC = new SimplePeakFinder(0.3, 0.004);
    m_peakMNE = new SimpleMinMaxPeakFinder(0.2, 0.04);
    m_peakNE = new SimplePeakFinder(0.2, 0.04);
    m_peakMNB = new SimpleMinMaxPeakFinder(0.2, 0.04);
    m_peakNB = new SimplePeakFinder(0.2, 0.04);
    m_detectorR = new RangeDetector(m_peakMR,1);
    m_detectorC = new CurvatureDetector(m_peakC,1);
    m_detectorNB = new NormalBlobDetector(m_peakMNB,3,1);
    m_detectorNE = new NormalEdgeDetector(m_peakMNE,3,1);
    m_layout = new QGridLayout(this);
    m_parameter = new QTabWidget(this);
    m_chooserW = new QWidget(0);
    m_parameter->insertTab(1,m_chooserW,"Chooser");
    QVBoxLayout *chooserLayout = new QVBoxLayout(m_chooserW);
//     m_paramLayout = new QGridLayout(m_parameter);
    m_plotWidget = new MultiScaleDetectorPlotWidget(this, m_detectorR->getScaleNumber());

    m_detectorPresenterR = new MultiScaleDetectorPresenter(m_detectorR, new TabbedParameterWidget("RangeDetector", m_parameter,0));
    m_peakMRPresenter = new SimplePeakFinderPresenter(m_peakMR, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_peakRPresenter = new SimplePeakFinderPresenter(m_peakR, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_detectorPresenterR->insertPeakFinder("SimpleMinMax", m_peakMRPresenter);
    m_detectorPresenterR->insertPeakFinder("Simple", m_peakRPresenter);
    
    m_detectorPresenterNB = new MultiScaleNormalDetectorPresenter(m_detectorNB, new TabbedParameterWidget("NormalBlobDetector", m_parameter,1));
    m_peakMNBPresenter = new SimplePeakFinderPresenter(m_peakMNB, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_peakNBPresenter = new SimplePeakFinderPresenter(m_peakNB, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_detectorPresenterNB->insertPeakFinder("SimpleMinMax", m_peakMNBPresenter);
    m_detectorPresenterNB->insertPeakFinder("Simple", m_peakNBPresenter);
    
    m_detectorPresenterNE = new MultiScaleNormalDetectorPresenter(m_detectorNE, new TabbedParameterWidget("NormalEdgeDetector", m_parameter,1));
    m_peakMNEPresenter = new SimplePeakFinderPresenter(m_peakMNE, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_peakNEPresenter = new SimplePeakFinderPresenter(m_peakNE, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_detectorPresenterNE->insertPeakFinder("SimpleMinMax", m_peakMNEPresenter);
    m_detectorPresenterNE->insertPeakFinder("Simple", m_peakNEPresenter);
    
    m_detectorPresenterC = new MultiScaleCurvatureDetectorPresenter(m_detectorC, new TabbedParameterWidget("CurvatureDetector", m_parameter,1)); 
    m_peakCPresenter = new SimplePeakFinderPresenter(m_peakC, new TabbedParameterWidget("PeakFinder", m_parameter,2));
    m_detectorPresenterC->insertPeakFinder("Simple", m_peakCPresenter);
    
    m_chooser = new DetectorChooserPresenter(new ParameterWidget("DetectorChooser", m_chooserW));
    m_chooser->insertDetector("CurvatureDetector", m_detectorPresenterC);
    m_chooser->insertDetector("RangeDetector", m_detectorPresenterR);
    m_chooser->insertDetector("NormalBlobDetector", m_detectorPresenterNB);
    m_chooser->insertDetector("NormalEdgeDetector", m_detectorPresenterNE);
    
    m_descriptorGeneratorS = new ShapeContextGenerator(0.02, 0.5, 4, 12);
    m_descriptorPresenterS = new ShapeContextPresenter(m_descriptorGeneratorS, new TabbedParameterWidget("ShapeContext", m_parameter,3));
    
    m_descriptorGeneratorB = new BetaGridGenerator(0.02, 0.5, 4, 12);
    m_descriptorPresenterB = new BetaGridPresenter(m_descriptorGeneratorB, new TabbedParameterWidget("BetaGrid", m_parameter,3));
    
    m_chooserD = new DescriptorChooserPresenter(new ParameterWidget("DescriptorChooser", m_chooserW));
    m_chooserD->insertDescriptor("BetaGrid", m_descriptorPresenterB);
    m_chooserD->insertDescriptor("ShapeContext", m_descriptorPresenterS);
    
    m_interestRenderer = 0;
    m_laserRenderer = 0;
    m_supportRenderer = 0;
    m_polarRenderer = 0;

    m_layout->setSpacing(3);
    m_layout->setMargin(3);
    m_layout->addWidget(m_sensorWidget,0,0);
    m_layout->addWidget(m_rendererWidget,1,0);
    m_layout->addWidget(m_descriptorRendererWidget,2,1);
    m_layout->setRowStretch(1,1);
    m_layout->addWidget(m_plotWidget,2,0);
    m_layout->addWidget(m_parameter,1,1);
    chooserLayout->addWidget(m_chooser->getChooserParameter());
    chooserLayout->addWidget(m_chooserD->getChooserParameter());
/*    m_paramLayout->setSpacing(3);
    m_paramLayout->setMargin(3);
    m_paramLayout->addWidget(m_detectorPresenterC->getDetectorParameter(),0,0);
    m_paramLayout->addWidget(m_detectorPresenterR->getDetectorParameter(),0,0);
    m_paramLayout->addWidget(m_detectorPresenterNB->getDetectorParameter(),0,0);
    m_paramLayout->addWidget(m_detectorPresenterNE->getDetectorParameter(),0,0);
    m_paramLayout->addWidget(m_peakMRPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakRPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakCPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakMNEPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakNEPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakMNBPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_peakNBPresenter->getPeakFinderParameter(),1,0);
    m_paramLayout->addWidget(m_descriptorPresenter->getDescriptorParameter(),2,0);*/
    m_sensor.seek(0,END);
    unsigned int end = m_sensor.tell();
    m_sensor.seek(0,BEGIN);
    m_sensorWidget->seekable(m_sensor.isSeekable(), end);
    m_sensorWidget->streamReady();
    m_sensorWidget->setMaximumHeight(32);
    m_plotWidget->setMaximumHeight(256);
    m_plotWidget->setMinimumHeight(256);
    m_parameter->setMaximumWidth(350);
    m_parameter->setMinimumWidth(350);

    m_parameter->show();

    connect(m_sensorWidget, SIGNAL(newReading()), this, SLOT(next()));
    connect(m_sensorWidget, SIGNAL(newReading(int)), this, SLOT(next(int)));
    connect(m_chooser, SIGNAL(detectorChanged()), this, SLOT(update()));
    connect(m_chooserD, SIGNAL(descriptorChanged()), this, SLOT(updateDescriptor()));
    connect(m_descriptorPresenterS, SIGNAL(descriptorChanged()), this, SLOT(updateDescriptor()));
    connect(m_descriptorPresenterB, SIGNAL(descriptorChanged()), this, SLOT(updateDescriptor()));
    connect(m_rendererWidget, SIGNAL(mousePressedGL(int, int, int)), this, SLOT(mousePressedGL(int, int, int)));

	const AbstractReading* read = m_sensor.current();
    processReading(read);
}