NI-Vision的亚像素精度(Subpixel Accuracy)



主要软件:
主要软件版本: 1.0
主要软件修正版本:
次要软件: N/A

问题: Vision Development Module中的许多处理VI的输出都具有亚像素精度,这是什么意思呢?

解答: 许多图像处理VI都用到了边沿检测(Edge Detection)作为复杂计算的基础,因此这篇文档将主要针对边沿检测来解释亚像素精度。几乎所有的图像处理算法都是对图像(可以认为是一个大的数值矩阵)采用某种数值算法,通常这种数值计算的结果都不是整数。这是最简单的理解亚像素精度的方式。然后有些VI具有输入端,可以允许用户指定亚像素精度(Subpixel Accuracy)


以IMAQ Edge Tool VI为例,有个输入参数是Subpixel Information,这是一个包含Interpolation Type(插值类型)Subpixel Accuracy(亚像素精度)等输入的簇。NI Vision使用插值的方法来定位一个边界。Interpolation Type参数有两种选择,Quadratic(二次的)和Cubic Spline(三次样条)。寻找边界的第一件事是获得边沿强度分布(edge strength profile),本质上来说就是像素值相对其位置的函数。二次插值通过三个相邻的边沿强度值找到其拟合抛物线,该曲线的极大值点或极小值点就代表了边沿插值点的位置和强度值,该点的位置通常不是整数。三次样条插值也是类似的原理,只不过插值过程是基于相邻的四个像素。

Subpixel Information簇中的另一个输入是Subpixel Accuracy。输入值通常为二分之一三分之一四分之一。这意味着每个像素将被分为更小的单元从而对这些更小的单元实施插值算法。例如,如果选择四分之一,就相当于每个像素在横向和纵向上都被当作四个像素来计算。因此,如果一张5x5像素的图像选择了四分之一的亚像素精度之后,就等于创建了一张16x16的离散点阵,进而对该点阵进行插值。请参考下图,红色的点代表本来的像素点,黑色点代表新产生的亚像素点。


如果subpixel accuracy参数选择为None,就表示只利用原来的像素点构成点阵。尽管如此,结果仍然很可能不是整数,因为尽管没有产生更大的点阵,但插值算法仍然是二次的或三次样条算法,只不过算法执行的对象是小一些的矩阵而已。

NI-Vision提供的亚像素精度是很有用的,计算的数值将比整数值更为精确。如果需要边沿监测的结果为整数值,可以把返回的小数值近似为最接近的整数。如果需要了解更多信息,请参考NI Vision Concepts Manual.


相关链接: Product Manuals: NI Vision Concepts Manual
Developer Zone Tutorial: 10 Things to Consider When Choosing Vision Software
Developer Zone Tutorial: Using Edge Detection in Machine Vision Gauging Applications

附件:





报告日期: 05/15/2009
最近更新: 06/22/2009
文档编号: 4XEHAKGL