Exemplo n.º 1
0
void CShapeModel::GenerateShape(CVisDVector& param, CShape& desshape, EDataAnalysisMethod eMethod /*=ePCA*/)
{
    desshape.Resize(m_AvgShape.PointNum());
	
	if ( ePCA == eMethod )
	{
		assert(m_PCA2Model.IsReady());
		//m_Model.Reconstruct(eigenparam, desshape.Points());
		m_PCA2Model.Generate(desshape.Points(), param);
	}
	else if ( eNMF == eMethod )
	{
		assert(m_NMFModel.IsReady());
		m_NMFModel.Reconstruct(param, desshape.Points());
	}
}
Exemplo n.º 2
0
void CShapeModel::GetShapeParam(CVisDVector& param, const CShape& srcshape, EDataAnalysisMethod eMethod /*=ePCA*/)
{
	if ( ePCA == eMethod )
	{
		assert(m_PCA2Model.IsReady());
		m_PCA2Model.GetEigenParam(srcshape.Points(), param);
		//m_Model.GetParam(srcshape.Points(), eigenparam);
	}
	else if ( eNMF == eMethod )
	{
		assert(m_NMFModel.IsReady());
		m_NMFModel.Encode(srcshape.Points(), param);
/*
		// debug, begin
		SaveToFile("raw_shape.pts", srcshape);
		CShape newshape = srcshape;
		m_NMFModel.Regularize(srcshape.Points(), newshape.Points());
		SaveToFile("reg_shape.pts", newshape);
		printf("point_dist: %lf", srcshape.Distance(newshape));
		// debug, end
*/
	}
}