当前位置: 首页>>代码示例>>C++>>正文


C++ PCA::doPCA方法代码示例

本文整理汇总了C++中PCA::doPCA方法的典型用法代码示例。如果您正苦于以下问题:C++ PCA::doPCA方法的具体用法?C++ PCA::doPCA怎么用?C++ PCA::doPCA使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PCA的用法示例。


在下文中一共展示了PCA::doPCA方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: estimateNormals

void PCANormalEstimator::estimateNormals(vtkPolyData* data, double neighRadius)
{
	vtkPointLocator* locator = vtkPointLocator::New();
	  locator->SetDataSet(data);
	  locator->BuildLocator();

	int i, numOfPoints = data->GetNumberOfPoints();
	vtkDoubleArray* normals = vtkDoubleArray::New();
	  normals->SetNumberOfComponents(3);
	  normals->SetNumberOfTuples(numOfPoints);

	PCA pca;
	double p[3], com[3], eigenvals[3], eigenvecs[3][3];
	vtkPoints* points = data->GetPoints();
	vtkIdList* neighs = vtkIdList::New();

	for ( i = 0 ; i < numOfPoints ; ++i )
	{
		points->GetPoint(i, p);
		neighs->Reset();
		locator->FindPointsWithinRadius(neighRadius, p, neighs);
		if ( neighs->GetNumberOfIds() < 3 )
		{
			normals->SetTuple3(i, 0.0, 0.0, 0.0);
			continue;
		}
		// Perform PCA
		pca.doPCA(points, neighs, eigenvecs, eigenvals, com);
		// Save the normal
		normals->SetTuple3(i, eigenvecs[0][2], eigenvecs[1][2], eigenvecs[2][2]);
	}

	data->GetPointData()->SetNormals(normals);

	// Clean up
	locator->Delete();
	normals->Delete();
	neighs->Delete();
}
开发者ID:CURG-BCI,项目名称:model_rec2,代码行数:39,代码来源:PCANormalEstimator.cpp


注:本文中的PCA::doPCA方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。