在纹理平面上进行投影显示的方法转让专利
申请号 : CN200810040911.1
文献号 : CN101324749B
文献日 : 2010-07-28
发明人 : 杨旭波 , 肖双九 , 陈新利 , 历萌
申请人 : 上海交通大学
摘要 :
权利要求 :
1.一种在纹理平面上进行投影显示的方法,其特征在于,包括如下步骤:
步骤一,建立投影仪输出亮度经过投影屏幕反射后被相机抓取的辐射模型;
所述辐射模型,表示如下:C=A(VP+F),其中:C表示相机拍摄到的RGB三个通道的亮度值,A表示投影屏幕在RGB三个通道上的反射率,V表示投影仪和相机之间的颜色混合,P是投影仪在RGB三个通道上的输出亮度,F表示环境光和投影仪的背光亮度;
步骤二,利用步骤一建立的辐射模型获得投影仪和相机的亮度响应函数及投影仪与相机之间的颜色混合矩阵,具体如下:通过对同一场景在不同曝光率下拍摄一组照片,使用高动态范围方法获得相机在RGB三个通道上的亮度响应函数;
所述使用高动态范围方法获得相机在RGB三个通道上的亮度响应函数,具体为:对同一场景保持光照情况不变,拍摄8张照片,其中曝光时间从2ms逐倍递增到256ms,由于曝光时间与相机的进光量成正比,这8张图片反映了进光量即亮度与相机的输出像素值之间的关系,该关系即为相机的亮度响应函数,选取图片中某个固定位置作为参考点,从这8张图片中,选出所有参考点位置的像素值;由此分别在R、G、B三个通道上,获得了亮度与相机输出像素值之间的8个对应点;把亮度归一化为0.0到1.0之间,对这8个点使用曲线拟合的方法,获得相机在RGB三个通道上的亮度响应函数;
利用已经测定好的相机,通过投影256张红色图片,其中红色通道从0逐一递增到255,而绿色和蓝色通道保持为0不变,选取图片上某一点作为参考像素,选取其中红色通道值作为投影仪红色通道的亮度响应函数,绿色和蓝色通道亮度响应函数与此相同;
在获得亮度响应函数的基础上,通过投影4张图片获得投影仪与相机之间的颜色混合矩阵;
所述通过投影4张图片获得投影仪与相机之间的颜色混合矩阵,具体为:投影的四张图片分别为:P(0)=(s,s,s),P(1)=(t,s,s),P(2)=(s,t,s),P(3)=(s,s,t),其中s、t分别表示0至255的两个亮度值,相机抓取的效果图分别为:C(0),C(1),C(2),C(3),由辐射模型可知,颜色混合矩阵在R通道上的值可以通过通过C(0),C(1)获得:P是投影仪在RGB三个通道上的输出亮度,C表示相机拍摄到的RGB三个通道的亮度值,V表示投影仪和相机之间的颜色混合;颜色混合矩阵在G通道的值通过C(0),C(2),B通道的值通过C(0),C(3)的方法与R通道相同步骤三,通过投影棋盘格图片建立投影仪和相机平面之间的几何映射;
所述通过投影棋盘格图片建立投影仪和相机平面之间的几何映射,具体如下:
首先,投影一张棋盘格图片并用相机抓取,使用开源计算机视觉库找到相机抓取图片的棋盘格角点,与投影图片的棋盘格角点匹配;
然后,对于每一对互相匹配的四边形面片,确定这两个面片间的单应性矩阵,根据所有匹配面片间的单应性矩阵,建立投影仪和相机平面之间的几何映射;
步骤四,在投影仪和相机的亮度响应函数及它们之间的颜色混合矩阵已知的情况下,投影两张灰度图片标定出投影表面反射率信息及环境光信息;
步骤五,根据步骤三的几何映射和步骤四标定出的投影表面反射率信息及环境光信息对投影内容进行矫正后再投影输出。
2.根据权利要求1所述的在纹理平面上进行投影显示的方法,其特征是,所述标定出投影表面反射率信息及环境光信息,具体为:投影两张灰度图片,这两张图片的亮度分别为P(0)=(0,0,0)和P(1)=(t,t,t),由辐射模型可知,C(0)=A(VP(0)+F),C(1)=A(VP(1)+F),由此标定出投影屏幕的反射率和环境光为:A=(C(1)-C(0))./(VP(1)),F=C(0)./A 其中:C表示相机拍摄到的RGB三个通道的亮度值,A表示投影屏幕在RGB三个通道上的反射率,V表示投影仪和相机之间的颜色混合,P是投影仪在RGB三个通道上的输出亮度,F表示环境光和投影仪的背光亮度。
3.根据权利要求1所述的在纹理平面上进行投影显示的方法,其特征是,所述对投影内容进行矫正后再投影输出,具体为:根据标定的结果,假设某一点期待的显示结果为I=(IR,IG,IR),投影仪的实际输入值被矫正为P=V-1(A-1I-F),根据此公式计算出所有像素的矫正值,即为矫正图片,通过投影该图片在纹理平面上实现正确的投影显示,其中:A表示投影屏幕在RGB三个通道上的反射率,V表示投影仪和相机之间的颜色混合,P是投影仪在RGB三个通道上的输出亮度,F表示环境光和投影仪的背光亮度。
4.根据权利要求1或3所述的在纹理平面上进行投影显示的方法,其特征是,所述矫正,使用图形处理器对矫正计算进行加速,各个点的反射率和环境光,及投影仪和相机的亮度响应函数,以纹理的形式加载到显存中。
5.根据权利要求1或3所述的在纹理平面上进行投影显示的方法,其特征是,所述矫正,均在像素着色器阶段并行完成。
说明书 :
技术领域
本发明涉及一种计算机影像处理技术领域的投影显示方法,具体是一种在纹理平面上进行投影显示的方法。
背景技术
经对现有技术文献的检索发现,2003年Nayar等在IEEE InternationalWorkshop on Projector-Camera Systems(国际投影仪-相机系统专题会议)上发表了“A projection system with radiometric compensation for screenimperfections”(一种对屏幕瑕疵进行光度补偿的投影系统),提出了利用投影仪-相机系统在纹理平面上进行投影显示的方法,主要包括以下三个步骤:首先建立投影仪与相机间的几何映射,然后标定系统及投影场景信息和最终逐像素矫正投影内容并输出。但是该方法的标定过程十分繁琐费时,需要投影260张图片,包括256张灰度图和4张彩色图;同时由于标定结果占用大量资源,逐像素的矫正无法做到实时,不能用于实际应用。检索中还发现,Bimber等于2005年提出了另一种矫正方法“Embedded entertainment with smart projectors”(支持内嵌式娱乐的智能投影仪技术),简化了标定过程,而且利用GPU(图形处理器)加速后可以做到实时矫正输出。但是该方法忽略了投影仪和相机的亮度响应函数是曲线这一事实,导致计算误差较大,矫正结果无法达到期望的投影显示效果。
发明内容
本发明是通过如下技术方案实现的,本发明包括如下步骤:
步骤一,建立投影仪输出亮度经过投影屏幕反射后被相机抓取的辐射模型;
步骤二,利用步骤一建立的辐射模型测量投影仪和相机的亮度响应函数及投影仪与相机之间的颜色混合矩阵,具体如下:
通过对同一场景在不同曝光率下拍摄一组照片,使用高动态范围方法获得相机在RGB(红绿蓝)三个通道上的亮度响应函数;
利用已经测定好的相机,通过投影256张红色图片,其中红色通道从0逐一递增到255而绿色和蓝色通道保持为0不变,选取图片上某一点作为参考像素,选取其中红色通道值作为投影仪红色通道的亮度响应函数,绿色和蓝色通道亮度响应函数与此相同;
在获得亮度响应函数的基础上,通过投影4张图片获得投影仪与相机之间的颜色混合矩阵;
步骤三,通过投影棋盘格图片建立投影仪和相机平面之间的几何映射;
步骤四,在投影仪和相机的亮度响应函数及它们之间的颜色混合矩阵已知的情况下,投影两张灰度图片标定出投影表面反射率信息及环境光信息;
步骤五,根据步骤三的几何映射和步骤四标定出的投影表面反射信息及环境光信息对投影内容进行矫正后再投影输出。
所述辐射模型,表示如下:C=A(VP+F),其中:C表示相机拍摄到的RGB三个通道的亮度值,A表示投影屏幕在RGB三个通道上的反射率,V表示投影仪和相机之间的颜色混合,P是投影仪在RGB三个通道上的输出亮度,F表示环境光和投影仪的背光亮度,其中:
辐射模型是基于亮度的,而投影仪和相机一般具有非线性的亮度响应函数,即设备的输入和输出之间并非简单的线性关系,所以需要首先测量投影仪和设备的亮度响应函数;后续的标定和基于像素的逐点矫正也是基于该辐射模型。
所述通过投影棋盘格图片建立投影仪和相机平面之间的几何映射,具体如下:
首先,投影一张棋盘格图片并用相机抓取,使用OpenCV(开源计算机视觉库)找到相机抓取图片的棋盘格角点,与投影图片的棋盘格角点匹配;
然后,对于每一对互相匹配的四边形面片,确定这两个面片间的单应性矩阵,根据所有匹配面片间的单应性矩阵,建立投影仪和相机平面之间的几何映射。由于投影在平面上进行,且细分了面片,所以几何映射的精度可以保证。
所述通过投影4张图片获得投影仪与相机之间的颜色混合矩阵,具体为:投影的四张图片分别为:P(0)=(s,s,s),P(1)=(t,s,s),P(2)=(s,t,s),P(3)=(s,s,t),其中s、t表示0至255之间两个不同的亮度值,相机抓取的效果图分别为:C(0),C(1),C(2),C(3),由辐射模型可知,颜色混合矩阵在R通道上的值可以通过通过C(0),C(1)获得:颜色混合矩阵在G通道的值通过C(0),C(2),B通道的值通过C(0),C(3)的方法与R通道相同。
所述标定出投影屏幕反射率和环境光,具体为:投影两张灰度图片,这两张图片的亮度分别为P(0)=(0,0,0)和P(1)=(t,t,t),由辐射模型可知,C(0)=A(VP(0)+F),C(1)=A(VP(1)+F),由此标定出投影屏幕的反射率和环境光为:A=(C(1)-C(0))./(VP(1)),F=C(0)./A。
所述对投影内容进行矫正后再投影输出,具体为:根据标定的结果,假设某一点期待的显示结果为I=(IR,IG,IB),投影仪的实际输入值被矫正为P=V-1(A-1I-F),根据此公式计算出所有像素的矫正值,即为矫正图片,通过投影该图片可以在纹理平面上实现正确的投影显示。
所述矫正,使用GPU对矫正计算进行加速,各个点的反射率和环境光,及投影仪和相机的亮度响应函数,以纹理的形式加载到显存中;所述矫正,均在像素着色器阶段并行完成,以此加速计算过程。
本发明具有如下有益效果:在普通的投影屏幕或有纹理的投影平面上,都可以正确的投影显示,极大的扩展了投影仪的使用范围;通过预计算投影仪和相机的光度响应函数以及颜色混合矩阵,加快了系统的标定过程,同时保证了最终的补偿效果,有利于实际应用中的需求;减少了百分之五十的系统资源使用量,在普通的显卡上也可以进行GPU加速,以实现实时矫正输出;最后预计算还可以有效降低投影仪和相机所固有的噪声影响,提高补偿质量,将最终误差范围从原来的10个像素降低到2个像素以内。
附图说明
图2三个通道的亮度响应函数曲线图。
其中:(a)是投影仪三个通道的亮度响应函数曲线图,(b)是相机三个通道的亮度响应函数曲线图。
图3棋盘格效果图;
其中:(a)是用来建立几何映射的棋盘格示例,(b)是使用OpenCV查找到的棋盘格内角点。
图4图像效果图;
其中:(a)是需要投影的原始图像,(b)根据投影仪相机之间的几何映射,对输入图片进行几何校正的结果图像。
图5是用来测试投影显示的复杂纹理平面。
图6图片效果图;
其中:(a)为相机抓取的一张灰度为0的图片,(b)为相机抓取的一张灰度为180的图片,(c)标定后反映平面的反射率的图片,(d)标定后反映场景环境光信息的图片。
图7一张荷花图片和人脸图片进行矫正投影的效果图;
其中:(a)、(b)是期望的显示效果图,(c)、(d)是未矫正直接投影的效果图,(e)、(f)是矫正后投影产生的结果图。
具体实施方式
如图1所示,为本实施例用来进行图片矫正的投影仪相机系统光度辐射模型,图中I为需要投影显示的图片平面,以上面某一点xi为例(xi包含了该点的位置信息和亮度信息,下同),通过显示设备在显卡平面D上的输出结果为xd;投影仪P在该点的输出亮度为E,经过投影平面上xs点反射,之后该点反射亮度及环境光亮度L被相机C抓取,在相机信号平面B上的输出为xb;信号平面经过转换,最终在数字输出平面M上获得输出xm。本实施例中,使用了Sony VPL-CX71的投影仪和Grasshopper-20S4C相机,放置时需保证相机覆盖投影仪的有效投影范围。
本实施例包括如下步骤:
步骤一,建立投影仪输出亮度经过投影屏幕反射后被相机抓取的辐射模型,该辐射模型表示如下:
C=A(VP+F), (1)
其中:C表示相机拍摄到的RGB三个通道的亮度值,A表示投影屏幕在RGB三个通道上的反射率,V表示投影仪和相机之间的颜色混合,P是投影仪在RGB三个通道上的输出亮度,F表示环境光和投影仪的背光亮度,其中:
步骤二,利用步骤一建立的辐射模型获得投影仪和相机的亮度响应函数及投影仪与相机之间的颜色混合矩阵,具体如下:
通过高动态范围方法获得相机的响应函数,具体为:对同一场景保持光照情况不变,拍摄8张照片,其中曝光时间从2ms逐倍递增到256ms;由于曝光时间与相机的进光量成正比,所以这8张图片反映了进光量即亮度与相机的输出像素值之间的关系,该关系即为相机的亮度响应函数。选取图片中某个固定位置作为参考点,从这8张图片中,选出所有参考点位置的像素值;由此分别在R、G、B三个通道上,获得了亮度与相机输出像素值之间的8个对应点;把亮度归一化为0.0到1.0之间,对这8个点使用曲线拟合的方法,即可以获得相机在RGB三个通道上的亮度响应函数。
获得投影仪的亮度响应函数,具体为:投影256x3张图片,其中红色、绿色和蓝色图片各256张,即相应通道亮度值从0逐一递增到255,另外两个通道保持0不变。使用上一步已经计算出亮度响应函数的相机抓取所有投影图片,从图片中选取某个固定位置作为参考点(一般取白色点)。以R通道为例,从拍摄到的256张红色图片中,选出所有参考点位置像素的R通道值,总共256个值,按照原来的投影亮度顺序排列起来即是投影仪红色通道的亮度响应函数。G和B通道的计算与此类似。
获得投影仪与相机之间的颜色混合矩阵,具体为:在测量出亮度响应函数的基础上,通过投影4张图片计算出投影仪与相机之间的颜色混合矩阵。
在图2中,(a)和(b)分别是投影仪和相机三个通道的亮度响应函数,三个亮度响应函数均为曲线,即投影仪和相机的输入与输出间并非简单的等倍增长关系。
步骤三,通过投影棋盘格图片建立投影仪和相机平面之间的几何映射;
投影仪投影图3(a)中的棋盘格,使用相机抓取;然后使用OpenCV查找到其中的角点如(b)所示,利用角点匹配确定两张图片间的单应性矩阵,建立投影仪和相机之间的几何映射。几何映射被保存为一张二维查找表,每一个点保存了对应于另外一张图片的相应位置。
图4是根据上一步建立的几何映射关系,对一张输入图片如(a)进行几何校正后的结果为(b)。经计算可得映射误差在0.54个像素以内,结果比较精确。
图5是本实施例中使用的投影平面,具有复杂的色彩和纹理结构,将在该投影面上实现正确的投影显示。
步骤四,在投影仪和相机的亮度响应函数及它们之间的颜色混合矩阵已知的情况下,投影两张灰度图片标定出投影表面反射率信息及环境光信息;
通过在图5的平面上投影两张图片,一张灰度为0,相机抓取效果如(a)所示,一张灰度为180,相机抓取效果如(b)所示。由这两张图片可以计算出图5所示平面的标定结果,该平面的反射率如(c)所示,场景的环境光信息如(d)所示。这些参数以二维纹理的形式保存。
步骤五,根据步骤三的几何映射和步骤四标定出的投影表面反射信息及环境光信息对投影内容进行矫正后再投影输出。
如图7所示,为应用本实例方法为荷花图片和人脸图片的矫正效果图。预计算及标定的结果以纹理的形式被加载到显存中,使用CG(显卡编程语言)在像素着色器阶段对每个像素并行进行矫正计算,并输出矫正结果进行投影显示。经过GPU加速后,矫正速度可以达到60帧每秒,完全满足实时的需要。(a)、(b)是期望的显示效果图,(c)、(d)是未矫正直接投影的效果图,(e)、(d)是经过矫正后投影产生的结果图,可以看出经过本方法矫正后,在复杂纹理平面上的也可以达到令人满意的显示效果。