使用高斯过程描述形变场,输入的数据只需要参考帧就行。需要设定kernel,由参考帧和kernel生成model
命令行参数
- -t, --type TYPE : 指定模型是shape还是deformation
- -d, --dimensionality : 输入数据的维度,当TYPE为deformation时有效
- -k, --kernel KERNEL : 指定高斯过程的kernel,默认只支持gaussian
- -p, --parameters KERNEL_PARAMETERS : kernel的参数,gaussian只有一个sigma参数
- -s, --scale SCALE : 作用在kernel上的scaling参数
- -n, --numberofbasisfunctions NUMBER_OF_BASIS_FUNCTIONS : 这个model需要的参数个数
- -r, --reference REFERENCE_FILE : reference文件路径
- -o, --output-file OUTPUT_FILE : 输出文件路径
- -m, --input-model MODEL_FILE : 已有model的文件路径,用于扩展当前已有的model
kernel的代码
在文件 utils/statismo-build-gp-model-kernels.h 中添加kernel,在这里kernel是对应的一对点计算得到的一个值,并非对应点的每个元素得到的每个一个对应向量
截取guassian kernel代码
在对应的头文件中定义类似的模板类,内联重载运算符()设定具体的kernel函数
1 | // 用法,opt.vKernelParameters指定kernel类型 |
融合kernel
代码在文件KernelCombinators.h中,详细内容请在文件中具体查阅,这里简单说明一下
如果读取已有model,则需要读取model的kernel,并与当前设置的kernel融合,这个程序就是简单的求和
kernel的求和
1 | // 用法 |
kernel相乘
1 | /** |
设定kernel
kernel可以单独设置也可以将多个kernel融合设置,上面贴出了单个kernel设定的模板和kernel融合的模板,这里贴一下其他的设定
根据维度设定kernel的每个分块
因为kernel计算出来的值是一个常数,所以需要修正其维度
1 | /** |
设定kernel的尺度
1 | /** |
使用LowRankGP构建model
这个程序只需要reference和kernel就可以了,PCA的方法需要读取很多数据
根据kernel生成model,平均值为根据reference维度得到的0向量
1 | typedef itk::LowRankGPModelBuilder |
相关的数学推导有时间再进行