Ejemplo n.º 1
2
bool TrainExample::isEqual(const ParseTree & pt) const
{    
    assert(pts().size() >= 2);

    const ParseInfo * p = pts()[0].rootNode()->parseInfo(&pts()[0]);
    const ParseInfo * p1 = pt.rootNode()->parseInfo(&pt);

    assert(p);
    assert(p1);

    return (pts()[0].dataId() == pt.dataId()) &&
           (p->c_ == p1->c_) && (p->l_ == p1->l_) &&
            (p->x_ == p1->x_) && (p->y_ == p1->y_ );
}
Ejemplo n.º 2
0
ParseTree::ParseTree(const ParseTree & pt) :
    g_(NULL), idxRootNode_(-1), states_(NULL), dataId_(pt.dataId()),
    appearanceX_(NULL), imgWd_(pt.imgWd()), imgHt_(pt.imgHt())
{
    nodeSet_.resize(pt.nodeSet().size(), NULL);
    for ( int i = 0; i < nodeSet_.size(); ++i ) {
        nodeSet_[i] = new PtNode(*pt.nodeSet()[i]);
    }

    edgeSet_.resize(pt.edgeSet().size(), NULL);
    for ( int i = 0; i < edgeSet_.size(); ++i ) {
        edgeSet_[i] = new PtEdge(*pt.edgeSet()[i]);
    }

    idxRootNode_ = pt.idxRootNode();

    g_ = pt.grammar();

    appearanceSet_.resize(pt.appearanceSet().size(), NULL);
    for ( int i = 0; i < appearanceSet_.size(); ++i ) {
        appearanceSet_[i] = new Appearance::Param(*pt.appearanceSet()[i]);
    }

    biasSet_ = pt.biasSet();

    deformationSet_.resize(pt.deformationSet().size(), NULL);
    for ( int i = 0; i < deformationSet_.size(); ++i ) {
        deformationSet_[i] = new Deformation::Param(*pt.deformationSet()[i]);
    }

    scalepriorSet_.resize(pt.scalepriorSet().size(), NULL);
    for ( int i = 0; i < scalepriorSet_.size(); ++i ) {
        scalepriorSet_[i] = new Scaleprior::Param(*pt.scalepriorSet()[i]);
    }

    parseInfoSet_.resize(pt.parseInfoSet().size(), NULL);
    for ( int i = 0; i < parseInfoSet_.size(); ++i ) {
        parseInfoSet_[i] = new ParseInfo(*pt.parseInfoSet()[i]);
    }

    if (pt.states() != NULL ) {
        states_ = new States(*pt.states());
    }

    appUsage_ = pt.appUsage();

    if ( pt.appearaceX() != NULL ) {
        appearanceX_ = new Appearance::Param( *(pt.appearaceX()) );
    }

}
Ejemplo n.º 3
0
void ParseTree::swap(ParseTree & pt)
{
    if ( this == &pt ) {
        return;
    }

    clear();

    nodeSet_.swap(pt.getNodeSet());

    edgeSet_.swap(pt.getEdgeSet());

    /*nodeSet_.resize(pt.nodeSet().size(), NULL);
    for ( int i = 0; i < nodeSet_.size(); ++i ) {
    	nodeSet_[i] = new PtNode(*pt.nodeSet()[i]);
    }

    edgeSet_.resize(pt.edgeSet().size(), NULL);
    for ( int i = 0; i < edgeSet_.size(); ++i ) {
    	edgeSet_[i] = new PtEdge(*pt.edgeSet()[i]);
    }*/

    idxRootNode_ = pt.idxRootNode();

    g_ = pt.grammar();

    appearanceSet_.swap(pt.getAppearanceSet());
    biasSet_.swap(pt.getBiasSet());
    deformationSet_.swap(pt.getDeformationSet());
    scalepriorSet_.swap(pt.getScalepriorSet());
    parseInfoSet_.swap(pt.getParseInfoSet());
    appUsage_.swap(pt.getAppUsage());

    /*appearanceSet_.resize(pt.appearanceSet().size(), NULL);
    for ( int i = 0; i < appearanceSet_.size(); ++i ) {
    	appearanceSet_[i] = new Appearance::Param(*pt.appearanceSet()[i]);
    }

    biasSet_ = pt.biasSet();

    deformationSet_.resize(pt.deformationSet().size(), NULL);
    for ( int i = 0; i < deformationSet_.size(); ++i ) {
    	deformationSet_[i] = new Deformation::Param(*pt.deformationSet()[i]);
    }

    scalepriorSet_.resize(pt.scalepriorSet().size(), NULL);
    for ( int i = 0; i < scalepriorSet_.size(); ++i ) {
    	scalepriorSet_[i] = new Scaleprior::Param(*pt.scalepriorSet()[i]);
    }

    parseInfoSet_.resize(pt.parseInfoSet().size(), NULL);
    for ( int i = 0; i < parseInfoSet_.size(); ++i ) {
    	parseInfoSet_[i] = new ParseInfo(*pt.parseInfoSet()[i]);
    }

    appUsage_ = pt.appUsage();*/

    if (pt.states() != NULL ) {
        //states_ = new States(*pt.states());
        std::swap(states_, pt.getStates());
    }

    dataId_ = pt.dataId();

    if ( pt.appearaceX() != NULL ) {
        std::swap(appearanceX_, pt.getAppearaceX());
    }

    imgWd_ = pt.imgWd();
    imgHt_ = pt.imgHt();
}