0. 缘起
最近在了解图像配准算法,了解的部分大部分使用的是ITK的算法,里面很多地方出现了以vnl开头的类,常见的有vnl_vector
、vnl_vector_fixed
等等,甚至在源码里面有一个专门的vnl文件夹用来放置这些相关的文件。
但是使用的有点郁闷,这个vnl到底代表什么含义呢?
1. 路过的路线
1.1 头文件阅读
在源码的头源文件中查找了,有很多的类在头文件中写着版权信息。
如果幸运的话,在版权信息上会描述这个类的作用,有可能捎带到这个简称的含义。
但是在阅读查找过程中,并没有找到相关简写的含义。
意外的发现:看到在源码里面存在vnl_matlab_**
等的类,说明这个可能能与MATLAB
结合做一些事情。
1.2 百度查找
在百度里面基本上没找到太多有用的信息,但是百度到一篇论文《基于ITK数学库的矩阵基本运算》,这里写到“ITK的数学库VNL”,这样最起码知道这个应该是一个数学库。
再次在百度“数学 vnl库”,第一条是“VXL库的简单使用”,这篇文章里面提到了“数学库vnl”,那么说明这个可能是一个独立的库。
既然可能是一个独立的库,ITK是一个国际化的大的软件,那么其中可能会提到版权声明,那么就可以查看一下它的帮组文档,看看里面的描述。
2. ITK帮助文档
在帮助文档里面找到这样的附录章节:
A.2.16 VNL
#ifndef vxl_copyright_h_
#define vxl_copyright_h_
// Copyright 2000-2013 VXL Contributors
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
这里面提到了vnl
上面提到是vxl_copyright
,那么这个vnl
应该是vxl
的一部分了。
3. VXL数学库
那么再查找VXL,就很容易找到这个数学库了,它的展示页面是The VXL Homepage.
在这里可以看到:VXL代表的是the Vision-something-Libraries.
这个库里面包含如下几部分:
- vnl (numerics): Numerical containers and algorithms. e.g. matrices, vectors, decompositions, optimisers.
- vil (imaging): Loading, saving and manipulating images in many common file formats, including very large images.
- vgl (geometry): Geometry for points, curves and other elementary objects in 1, 2 or 3 dimensions.
- vsl (streaming I/O), vbl (basic templates), vul (utilities): Miscellaneous platform-independent functionality.
这样就可以知道vnl
表示的是the Vision Numerics Libraries(视觉数值库 )。