图像柱面投影

Posted on 2016-04-29 01:18  William-D-King  阅读(5044)  评论(0编辑  收藏  举报

    最近有个图像拼接的课程作业,上面要用到柱面投影,因此将柱面投影的映射函数作下学习记录。

    

     先从这个示意图开始分析,所谓柱面投影,是以一个一定半径和高的圆柱内部中心作为投影中心,将源图像平摊在圆柱侧表面,就像上面图b(俯视图)所见一样,图像的每一个点与投影中心进行连线,线与圆柱测表面的交点便为该点的柱面投影点,因此关键是找出点与其对应投影点的位置关系。

     上图a中已经画出了坐标系,对于图像我们只需看xy轴即可,坐标系为图像的中心,投影后的图像也是一样。首先先分析原图像和投影后图像的宽高关系,从图可以看出,投影后图像的四个角会向内”弯折“,而其最大的高度仍然是原图像的高(垂直中轴线上的点投影后位置不变),因此投影后图像的高为原图像高。而对于宽度,我们从图b分析,上面的三角形的底长便是原图像宽,而投影后宽度则为三角形腰与内部圆弧交点的距离,如下图:

      红色线段便是投影后的宽,三角形的腰为投影半径(圆柱半径),三角形顶角为投影角度。设投影角度为θ,半径为r,则可得出投影宽为2rsin(θ/2)。

这里一般是设定投影角已知,根据投影角来计算半径,即r=w/(2tan(θ/2)),w为原图像宽。

      接下来计算位置间的函数关系,设原图像某点坐标为(x,y),这里要注意图像是以左上角为坐标原点,因此要转换到以中心为原点的坐标系,所以坐标为(x-w/2,y-h/2),w、h为原图像的宽高,设该点投影后坐标为(x',y'),则转换坐标系为(x'-w'/2,y-h'/2)。前面已经得出w'=2rsin(θ/2),h'=h。先看x坐标的关系,从俯视图图b分析,上面的p点为原图像点在x轴的位置,对应的投影点为其与投影中心O的连线与圆弧的交点,因此可以得出x'-w'/2=arctan((x-w/2)/r)*r。解出x'即可。

     对于y'的计算,我们看图c这是圆柱的一个剖面图,看下面的一个注解:

    

     如上图说明的原图像点与投影点的位置,P和P‘分别对应原图和投影后图的水平中心轴上的点,也就是说得出里外三角形高的相似关系,就能求出y',从上图看出OP'距离为半径r,OP就是图b的OP长,设其为k,则k=sqrt((x-w/2)²+r²)。根据三角形相似性:(y-h/2)/(y'-h'/2)=k/r。可解出y'。

     最后,解得x',y'的公式如下:

 

   得出了投影后图像的宽高以及投影点的坐标关系式,我们便可以用插值的方法生成柱面投影图像了。

Copyright © 2024 William-D-King
Powered by .NET 8.0 on Kubernetes