资源简介
RBF径向基函数网格变形算法源程序,用于人脸等三维模型的网格变形
代码片段和文件信息
#include “StdAfx.h“
#include “all.hpp“
#include “RBF.hpp“
#include “math.h“
float Points_Distance(float x1 float y1 float z1 float x2 float y2 float z2)
{
return sqrt( (x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) + (z1 - z2)*(z1 - z2) );
}
void print(gsl_matrix * pMatrix)
{
size_t rowNum = pMatrix->size1;
size_t colNum = pMatrix->size2;
for (size_t i = 0; i < rowNum; i ++)
{
for (size_t j = 0; j < colNum; j ++)
{
cout << gsl_matrix_get(pMatrix i j) << “ “;
}
cout << endl;
}
cout << endl;
}
void printVertex(float *pointset int Num)
{
for(int ii = 0;ii < Num; ii++)
{
for(int jj = 0;jj < 3; jj++)
{
cout << *(pointset + ii*3 + jj) << “ “;
}
cout << endl;
}
cout << endl;
}
void RBF(float *pointset int Num float *soureFeaturePoints float *targetFeaturePoints int featureNum)
{
freopen(“c:\\dataa.txt“ “w+“ stdout);
gsl_matrix * sourceTZsXYZ = gsl_matrix_alloc (featureNum 3);
gsl_matrix * targetTZsXYZ = gsl_matrix_alloc (featureNum 3);
int i j;
for(i = 0;i < featureNum; i++)
{
for(j = 0;j < 3; j++)
{
gsl_matrix_set(sourceTZsXYZ i j *(soureFeaturePoints + i*3 + j));
}
}
for(i = 0;i < featureNum; i++)
{
for(j = 0;j < 3; j++)
{
gsl_matrix_set(targetTZsXYZ i j *(targetFeaturePoints + i*3 + j));
}
}
// print(sourceTZsXYZ);
// print(targetTZsXYZ);
////// 赋值给b数组/////////////////////////////////////////////////////////
gsl_matrix * b = gsl_matrix_calloc(featureNum + 4 1);
for(i = 0;i < featureNum; i++)
{
gsl_matrix_set(b i 0 gsl_matrix_get(targetTZsXYZ i 0));
}
////////////////////////////////////////////////////////////////////////////
//////////////////// 初始化矩阵A //////////////////////////////////
gsl_matrix * A = gsl_matrix_calloc (featureNum+4 featureNum+4);
for(i = 0;i < featureNum; i++)
{
for(j = 0;j < featureNum; j++)
{
gsl_matrix_set(A i j Points_Distance(
*(soureFeaturePoints + i*3) *(soureFeaturePoints + i*3 + 1) *(soureFeaturePoints + i*3 + 2)
*(soureFeaturePoints + j*3) *(soureFeaturePoints + j*3 + 1) *(soureFeaturePoints + j*3 + 2)));
}
}
for(i = 0;i < featureNum; i++) // 右上小块
{
gsl_matrix_set(A i featureNum 1);
gsl_matrix_set(A i featureNum+1 gsl_matrix_get(sourceTZsXYZ i 0));
gsl_matrix_set(A i featureNum+2 gsl_matrix_get(sourceTZsXYZ i 1));
gsl_matrix_set(A i featureNum+3 gsl_matrix_get(sourceTZsXYZ i 2));
}
for(i = 0;i < featureNum; i++) // 左下小块
{
gsl_matrix_set(A featureNum i 1);
gsl_matrix_set(A featureNum+1 i gsl_matrix_get(sourceTZsXYZ i 0));
gsl_matrix_set(A featureNum+2 i gsl_matrix_get(sourceTZsXYZ i 1));
gsl_matrix_set(A featureNum+3 i gsl_matrix_get(sourceTZsXYZ i 2));
}
print(A);
//////// 解方程 ////////////////////////////////////////////////////////////////
int s; float sum;
/////////////////////// 解X
gsl_matrix * A_c = gsl_matri
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6726 2008-11-02 17:15 RBF算法的c++实现版本\RBF.cpp
文件 154 2008-10-28 10:21 RBF算法的c++实现版本\RBF.hpp
目录 0 2011-06-08 16:01 RBF算法的c++实现版本
----------- --------- ---------- ----- ----
6880 3
- 上一篇:汇编写的时钟程序,很好用,值得研究
- 下一篇:背景差分人体检测
相关资源
- 粒子群pso算法优化RBF网络
- RBF神经网络预测
- 基于BPSO-RBF神经网络的网络流量预测
- RBF案例更新版
- 遗传算法优化RBF神经网络程序
- 基于PF-RBF神经网络的短期风
- 改进粒子群优化rbf神经网络
- honeybadgerbft协议中文版.docx
- RBF神经网络--分类和回归
- 七个完整rbf算法源程序
- RBF三种学习方法源码(k-means、梯度、
- 带注释PSO优化RBFNN
- IDW和RBF算法
- RBF神经网络中心选取OLS算法的研究-
- BP网络与RBF径向基网络对比傻瓜教程,
- testSetRBF2.txt
- 遗传算法优化RBF网络
- RBF神经网络用于函数拟合
- svr代码和RBF核函数
- RBF神经网络预测程序
- 简单RBF分类算法
- 径向基网络
- Image Warp(利用IDW RBF)
评论
共有 条评论