获取当前特征点法线方向两侧点的纹理模型

 

在基于ASM人脸面部特征定位中,要获取当前特征点法线方向两侧点的纹理模型,计算抽样点坐标方法如下:

1. 涉及到的图形学知识:

画直线的方法:数值微分法,中点画线法,Bresenham画线方法

2. 注意问题

1)在求解特征点法线方向的N个抽样点的局部纹理信息时,抽样点坐标的计算可以按照以上提到的三种方法中的一种(具体介绍见图形学方面的书籍)。

2)数值微分法涉及到浮点数,不利于硬件的实现,可以考虑用图形学领域应用最广泛的Bresenham直线扫描转换算法。

3. 求解法线方法

       1)错误方法:先根据当前特征点前后两个特征点求过该特征点的法线,然后取x++,求处y坐标,然后将(xy)作为抽样点的坐标。

       错误原因:当法线斜率k < 1时该方法求出的坐标误差不是很明显,但当k >>1时,那么当x += 1时,y的增量可能会很大可能造成两个取样点之间的距离很大,甚至抽样点的坐标会超出图像的范围。因此这种方法思路上是错误的,没有考虑到斜率的各种情况对抽样点选择的影响。

       2)正确方法:

       鉴于错误方法的思想,可以考虑到利用计算机最基本的绘制像素宽度直线的算法,这样可以解决抽样点选择问题。方法很多种,基本思想都是基于以上三种算法。

4. 用数值微分法(硬件上考虑其他算法)

y(i+1) =k * x(i+1) + b

        = k * (x(i) + △x) + b

        = k * x(i) + k * △x + b

     = y(i) + k * △x

 

当△x = 1时,有y(i+1) = y(i) + k,即x每增1时,y递增k(斜率)

注意问题:

以上是当|k| <= 1时成立,即x++, y += k;当|k| > 1时,xy的地位要交换,即y++

x += (1/k)

 

posted @ 2009-04-01 23:30  淮北橘子  阅读(231)  评论(0编辑  收藏  举报