本发明涉及投影机技术领域,尤其涉及一种平缓曲面投影校正方法及其系统。
背景技术:
投影机目前使用的场景越来越多,各种场合都有。如果投影机能投射到一个平整的平面上其投影效果是最佳的,但有时直接投射墙壁等区域时,这些目标区域很有可能会是一个平缓的曲面,而不是理想的平面,这样投射出来的效果就会变形。这种变形很不规则,不是单纯的水平形变或垂直方向的形变,是整体的随机形变。目前,对投射曲面的校正方法都只适合指定的投射场景,一旦更换投射场景则无法进行校正。
因此,现有技术还有待改进和发展。
技术实现要素:
本发明的目的在于提供一种平缓曲面投影校正方法及其系统。
为了达到上述目的,本发明采取了以下技术方案:
一种平缓曲面投影校正方法,其中,所述方法包括以下步骤:
A、将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;
B、根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。
所述平缓曲面投影校正方法,其中,所述步骤A具体包括:
A1、将应显示图像投影到投射区域;
A2、采集投射区域中的实际图像,并根据实际图像获取内切长方形;
A3、根据实际图像的列长度与内切长方形的列长度所对应的列长度比例获取列缩放比例,并根据实际图像的行长度与内切长方形的行长度所对应的行长度比例获取行缩放比例;
A4、根据行缩放比例、及列缩放比例获取校正信息。
所述平缓曲面投影校正方法,其中,所述步骤A3具体包括:
A31、对实际图像进行竖直方向的内切,得到垂直内切边;
A32、根据垂直内切边、及实际图像的竖直边,得到列缩放比例,并将应显示图像的竖直边校正插补至垂直内切边;
A33、根据对应显示图像的竖直边所进行的校正插补,得到第一映射表和第一地址表;
A34、对已进行竖直方向内切的实际图像进行水平方向的内切,得到水平内切边;
A35、根据水平内切边、及实际图像的水平边,得到行缩放比例,并将应显示图像的水平边校正插补至水平内切边;
A36、根据对应显示图像的水平边所进行的校正插补,得到第二映射表和第二地址表。
所述平缓曲面投影校正方法,其中,所述步骤A32中当应显示图像中竖直边的长度大于竖直内切边的长度时,则根据应显示图像中竖直边的长度与竖直内切边的长度之比,得到竖直方向的校正插补所需删除的像素点个数;当应显示图像中竖直边的长度等于竖直内切边的长度时,则在竖直方向的校正插补时不删除像素点;当应显示图像中竖直边的长度小于竖直内切边的长度时,则根据应显示图像中竖直边的长度与竖直内切边的长度之比,得到竖直方向的校正插补所需增加的像素点个数。
所述平缓曲面投影校正方法,其中,所述步骤A34中当应显示图像中水平边的长度大于水平内切边的长度时,则根据应显示图像中水平边的长度与水平内切边的长度之比,得到水平方向的校正插补所需删除的像素点个数;当应显示图像中水平边的长度等于水平内切边的长度时,则在水平方向的校正插补时不删除像素点;当应显示图像中水平边的长度小于水平内切边的长度时,则根据应显示图像中水平边的长度与水平内切边的长度之比,得到水平方向的校正插补所需增加的像素点个数。
所述平缓曲面投影校正方法,其中,所述步骤B之后还包括:
C、获取校正图片,并对矫正图片的竖直方向的平分线进行校正插补,得到竖直平分线校正图片;
D、获取竖直平分线校正图片,并对竖直平分线校正图片的水平方向的平分线进行校正插补,得到水平平分线校正图片。
一种平缓曲面投影校正系统,其中,包括:
校正信息获取模块,用于将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;
校正及显示模块,用于根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。
所述平缓曲面投影校正系统,其中,所述校正信息获取模块具体包括:
投射单元,用于将应显示图像投影到投射区域;
内切长方形获取单元,用于采集投射区域中的实际图像,并根据实际图像获取内切长方形;
缩放比例获取单元,用于根据实际图像的列长度与内切长方形的列长度所对应的列长度比例获取列缩放比例,并根据实际图像的行长度与内切长方形的行长度所对应的行长度比例获取行缩放比例;
校正信息获取单元,用于根据行缩放比例、及列缩放比例获取校正信息。
所述平缓曲面投影校正系统,其中,所述缩放比例获取单元具体包括:
竖直内切边获取分单元,用于对实际图像进行竖直方向的内切,得到垂直内切边;
竖直校正插补分单元,用于根据垂直内切边、及实际图像的竖直边,得到列缩放比例,并将应显示图像的竖直边校正插补至垂直内切边;
第一获取分单元,用于根据对应显示图像的竖直边所进行的校正插补,得到第一映射表和第一地址表;
水平内切边获取分单元,用于对已进行竖直方向内切的实际图像进行水平方向的内切,得到水平内切边;
水平校正插补分单元,用于根据水平内切边、及实际图像的水平边,得到行缩放比例,并将应显示图像的水平边校正插补至水平内切边;
第二获取分单元,用于根据对应显示图像的水平边所进行的校正插补,得到第二映射表和第二地址表。
所述平缓曲面投影校正系统,其中,还包括:
竖直平分线校正模块,用于获取校正图片,并对矫正图片的竖直方向的平分线进行校正插补,得到竖直平分线校正图片;
水平平分线校正模块,用于获取竖直平分线校正图片,并对竖直平分线校正图片的水平方向的平分线进行校正插补,得到水平平分线校正图片。
本发明所述的平缓曲面投影校正方法及其系统,方法包括:将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。本发明实现了对投影到平缓变化曲面上的图像进行校正,消除曲面导致图像的变形;而且还能自动地校正因为幕布的平缓变形,或能校正直接投射到墙面时因墙面不平而导致的形变,使用户能观看到平整的投影图像。
附图说明
图1为本发明所述平缓曲面投影校正方法较佳实施例的流程图。
图2为本发明所述平缓曲面投影校正方法中获取校正信息的具体流程图。
图3a为标准田字格与实际田字格的示意图。
图3b为内切长方形的示意图。
图4为本发明所述平缓曲面投影校正方法中进行垂直内切和水平内切的具体流程图。
图5a为本发明中垂直方向校正插补的具体实施例的线段示意图。
图5b为本发明中水平方向校正插补的具体实施例的线段示意图。
图6a为本发明中竖直方向的平分线校正的平面示意图。
图6b为本发明中水平方向的平分线校正的平面示意图。
图7a为本发明中竖直方向的平分线校正的线段示意图。
图7b为本发明中水平方向的平分线校正的线段示意图。
图8为本发明所述平缓曲面投影校正系统较佳实施例的结构框图。
具体实施方式
本发明提供一种平缓曲面投影校正方法及其系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参考图1,其为本发明所述平缓曲面投影校正方法较佳实施例的流程图。如图1所示,所述平缓曲面投影校正方法,包括以下步骤:
步骤S100、将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;
步骤S200、根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。
本发明的实施例中,投影仪上需设置一个摄像头,用作捕捉投射区域的场景,可以把投射出去的图像拍摄回来。若由摄像头采集回来的实际图像无需校正时,则通过投影仪中的FPGA(Field-Programmable Gate Array,即现场可编程逻辑门阵列)对应显示图像不作处理,直接输出并投影显示。
若由摄像头采集回来的实际图像需校正时,显示处理SOC根据实际图像和应显示图像的关系,求出校正信息,并把这个校正信息写入FPGA中,FPGA根据校正信息,对每帧输入的图像进行校正,从原始帧生成校正帧,并输出到显示器件中进行显示。
优选的,如图2所示,在所述平缓曲面投影校正方法中,所述步骤S100具体包括:
步骤S101、将应显示图像投影到投射区域;
步骤S102、采集投射区域中的实际图像,并根据实际图像获取内切长方形;
步骤S103、根据实际图像的列长度与内切长方形的列长度所对应的列长度比例获取列缩放比例,并根据实际图像的行长度与内切长方形的行长度所对应的行长度比例获取行缩放比例;
步骤S104、根据行缩放比例、及列缩放比例获取校正信息。
为了更清楚的理解校正信息的获取过程,下面通过具体实施例来说明。
具体的,投影仪在投影屏幕满屏输出如图3a的标准田字格,然后通过摄像头把如图3a中的实际田字格拍摄回来,将拍摄回来的实际田字格跟系统中预存的投射到理想平面的标准田字格进行匹配对比。对于拍摄回来的实际田字,先把如图3b所示的实际田字格的内切长方形在图像中算出来。如3b所示,在摄像头拍摄回来的实际田字格里,找出内切长方形,以及内切长方形的水平方向和垂直方向的平分线,这个内切长方形就是投影要修正成为的目标。
这个内切长方形决定了: 校正后整体画面的大小,地址表,映射表中有效数据的大小。从最终的效果来看,这个内切长方形的大小是最终校正图像的外部轮廓的大小。
校正的方法中,通过长度的变化按比例的缩小或放大,每一行(或列),根据原始显示的长度与要求长度的对比,按比例的进行缩放。在这里,在内切长方形外部的部分就需要进行收缩。
映射表是表现最终显示图像的有效数据,映射表的行、列中位于内切长方形内的数据就是有效的数据。位于内切长方形外,但是在实际田字格中的数据,对应就会置0,显示上就是显黑。
对于FHD来说,显示矩阵是[1920,1080],如果是投影在一个理想的平面上,完全没有形变,显示的映射表应该是一个全部值都为1的,大小是[1920,1080]的矩阵。但是,如果投影在一个曲面上,对应于上面的形变后,把对应与内切长方形内的部分置为1,内切长方形外四周部分,就是0值。
经过校正后,在显示的时候,映射表会被逐一扫描,为0时,生成的显示帧中对应的位置值为0,也就是黑显。当映射表中的值为1时,通过地址表定位显示帧对应位置的数据在原始数据帧中的位置。也就是说,地址表是一种映射,指明在下一个生成数据帧中具体位置(即在内切长方形其中一个像素点)的数据是在原始数据中的地址。
显然,映射表中,0 , 1的位置完全是根据原始形变的情况而定。映射表中每一行和每一列的情况,都是根据每一行、每一列的比例进行缩放而形成。
对于地址表,因为映射表中每一个为1的值都有一个映射地址。所以地址表的整体结构跟映射表是一致的,即为同样大小的数据矩阵,相同位置的地址表元素对应是映射表的寻址地址。
因为地址表是表示内切长方形中各像素点在原始的应显示图像的位置,所以地址表的每个元素是一个坐标[m,n],其中m代表应显示图像的矩阵中的行,n代表应显示图像的矩阵中的列。
对于FHD来说,显示矩阵是[1920,1080] ,但为说明情况,下面举例了一个显示分辨率是[16,9]的情况,如表1所示:
表1
在表1中,为1的是有效显示位,也就是在内切长方形内的部分;为0部分,就是要显黑部分,也就是在内切长方形外部的部分。
请再次参见如表2所示的地址表,该地址表与表1中的映射表对应:
表2
对于这个应显示图像的形变,校正的步骤是,先校正外部的四条边。具体的,是先进行垂直方向的2条边的校正,然后进行水平方向的2条外边的校正。
下面用FHD的分辨率进行举例,对于4K就需要把矩阵的大小改为[3840,2160]。
首先,把应显示图像投影到墙上,然后对获得的实际图像进行垂直方向内切,根据实际田字格的竖直边与计算出来的垂直内切边的差距,把应显示图像通过垂直方向的校正插补映射到更小范围的2条垂直内切边之间。2条垂直内切边之间的图像,对应一个第一映射表[1920,1080],同时还生成一个第一地址表[1920,1080]。
其中,在第一映射表中是表示实际田字格中的当前有效数据,有效的为1,无效,不需要显示出来的,为0。
第一地址表是在已进行竖直方向内切的实际田字格,每一像素在标准田字格中的位置 。
经过垂直方向的校正后,第一映射表左右两边在2条内切垂直线外的部分都是被置为0,其余在线内的则为1,且 第一地址表就对应的运算得出。
然后对已进行竖直方向内切的实际田字格再进行水平方向的内切,结合内切运算,根据已进行竖直方向内切的实际田字格的水平边与计算出来的水平内切边的差距,把应显示图像通过水平方向的校正插补映射到更小范围的2条垂直内切边之间。2条内切边之间的图像,对应一个第二映射表[1920,1080],同时还生成一个第二地址表2[1920,1080]。
在经过水平方向的校正后,第二映射表是在第以映射表的基础上再把上下两边在2条内切水平线外的部分都是被置为0,在线内的则为1。第二地址表就需要在第一地址表,并结合变换的过程生成。经过2次校正后,显示图形的四条边已经为直边。
其中,第一映射表的结构如下:第一映射表,是实际图像格经过垂直校正后,在应显示图像中的对应像素。第一映射表也是原始图像分辨率大小的矩阵,如果图像是4K的图像,这个矩阵大小是:[3840,2160];如果图像是FHD的图像,这个矩阵大小是:[1920,1080]。由于是做了垂直的校正,矩阵中,因为校正而被去除不显示部分置为0,其余的为1。
第一地址表的结构如下:第一地址表,是存放经过校正后,有效显示像素在应显示图像中的地址的一个表格。每个元素是一个在原始图像的坐标值(X,Y)。表格中,每个元素对应于第一映射表中对应元素的寻址地址。
第二映射表的结构如下:第二映射表,是第一映射表对应的图像经过水平校正后的在应显示图像中的对应像素。第二映射表也是原始图像分辨率大小的矩阵,矩阵中,因为校正而被去除不显示部分置为0,其余的为1。
第二地址表的结构如下:第二地址表,是存放再次经过水平校正后,有效显示像素在应显示图像中的地址的一个表格。每个元素是一个在原始图像的坐标值(X,Y)。表格中,每个元素对应于第二映射表中对应元素的寻址地址。
再经过垂直,水平方向的校正后,第二映射表就基本是最终的显示映射表了(后面对内切长方形内的图像进行校正时,映射表没有发生实质的变化,但是地址表变了)。在第二地址表中,有效地址个数也是不会再变化,但是内切长方形内部还需要进一步的校正,这后面的校正过程,会导致第二地址表中数据的变化,是一个地址被另外一个地址替换掉的变化。
优选的,如图4所示,在所述平缓曲面投影校正方法其中,所述步骤S103具体包括:
步骤S1031、对实际图像进行竖直方向的内切,得到垂直内切边;
步骤S1032、根据垂直内切边、及实际图像的竖直边,得到列缩放比例,并将应显示图像的竖直边校正插补至垂直内切边;
步骤S1033、根据对应显示图像的竖直边所进行的校正插补,得到第一映射表和第一地址表;
步骤S1034、对已进行竖直方向内切的实际图像进行水平方向的内切,得到水平内切边;
步骤S1035、根据水平内切边、及实际图像的水平边,得到行缩放比例,并将应显示图像的水平边校正插补至水平内切边;
步骤S1036、根据对应显示图像的水平边所进行的校正插补,得到第二映射表和第二地址表。
所述平缓曲面投影校正方法,其中,所述步骤S1032中当应显示图像中竖直边的长度大于竖直内切边的长度时,则根据应显示图像中竖直边的长度与竖直内切边的长度之比,得到竖直方向的校正插补所需删除的像素点个数;当应显示图像中竖直边的长度等于竖直内切边的长度时,则在竖直方向的校正插补时不删除像素点;当应显示图像中竖直边的长度小于竖直内切边的长度时,则根据应显示图像中竖直边的长度与竖直内切边的长度之比,得到竖直方向的校正插补所需增加的像素点个数。
为了更清楚垂直方向的校正插补过程,下面通过实例来说明。
垂直方向的校正,要求最终的效果是垂直方向的齐平。实际校正的过程中,每一行的变化是不一样的,所以逐行校正。
上面所述的实际田字格的垂直方向的2条边的校正,以及下面列举的图像内部的垂直方向进行校正都是垂直方向的校正。
以某一行为目标,首先根据显示的行长度和要求校正后行长度进行比较。比较的结果有:
11)显示的行长度大于要求校正后的行长度。
按比例可以算出,校正后的行要删减像素个数。算出删减比S_NUM= 校正前像素个数/要删减像素个数。然后,在这一行的校正操作是,从这一行的第一个开始,隔S_NUM个,把对应像素删掉。具体删掉的操作是,在实时更新的地址表中,跳过相应像素的地址,相应像素的地址在地址表中去掉,这个应显示图像的像素不会再显示了。
这种情况下,在生成第一映射表过程中,从要求校正后的行的启始位置开始,保留的像素就逐一地填入1,要删除一个像素,就忽略掉。
在校正垂直方向的2条边时,因为是内切长方形,显示的行长度肯定是大于要求校正后的行长度的,因此有相应的像素要删除,生成的映射表中相应行的两端就会有0的元素 。
当校正图像内部的垂直方向时,因为都是内切长方形内部的运算,基于对称的关系,当一部分的图形出现这种情况时(这一部分的图像映射表要删除掉一些元素),另外一部分图形就会出现下面12)的情况(另一部分的图像映射表要增加一些元素),而这一增,一减的数目是一样的,这是由内切长方形决定的,所以不再处理映射表的内容,处理的方法是只改变对应的地址表。
12)显示的行长度小于要求校正后的行长度。
按比例可以算出,校正后的行要增加像素个数。算出增加比A_NUM= 校正前像素个数/要增加像素个数。然后,在这一行的校正操作是,从这一行的第一个开始,隔A_NUM个,复制左边的像素。具体复制的操作是,在实时更新的地址表中,用重复左边相应像素的地址的方式增加一个地址,这个左边像素将会重复相邻的显示 。
在校正垂直方向的2条边时,不会发生这种情况。当校正图像内部的垂直方向时,因为都是内切长方形内部的运算,基于对称的关系,不再处理映射表的内容,处理的方法是只改变对应的地址表。
13)显示的行长度等于要求校正后的行长度。
这种情况,意味着不需要校正。对这一行保存原来的状态即可。这一行的地址表,和对应的映射表的值都不用更改。
如图5a,ad 是显示的行长度,bc是要校正的目标行长度。
对应地, ad段的像素数是已知的,如果ad对应FHD 的一行,像素数就是1920。 ab、bc、cd及ad这4段长度都可以求出来,这样,ab段对应的像素数,bc段对应的像素数,cd段的像素数就可以求出来。
ab 段对应的像素数+cd段的像素数就是要删除掉的像素数。ab段对应的像素数决定了第一映射表中左边0的数目,也就是决定了有效元素1的起启位置。cd段的像素数对应于图像映射表1中右边0的数目。
优选的,在所述平缓曲面投影校正方法,所述步骤S1034中当应显示图像中水平边的长度大于水平内切边的长度时,则根据应显示图像中水平边的长度与水平内切边的长度之比,得到水平方向的校正插补所需删除的像素点个数;当应显示图像中水平边的长度等于水平内切边的长度时,则在水平方向的校正插补时不删除像素点;当应显示图像中水平边的长度小于水平内切边的长度时,则根据应显示图像中水平边的长度与水平内切边的长度之比,得到水平方向的校正插补所需增加的像素点个数。
水平方向的校正插补水平方向的校正,要求最终的效果是水平方向的齐平。实际校正的过程中,每一列的变化是不一样的,所以逐列校正。上面所述的的已进行竖直方向内切的实际田字格水平方向的2条边的校正以及下面列举的图像内部的水平方向进行校正都是水平方向的校正。
以某一列为目标,首先根据显示的列长度和要求校正后列长度进行比较。 比较的结果有:
21)显示的列长度大于要求校正后的列长度。
按比例可以算出,校正后的列要删减像素个数。算出删减比S_NUM= 校正前像素个数/要删减像素个数。然后,在这一列的校正操作是, 从这一列的第一个开始,隔S_NUM个,把这个像素删掉 。具体删掉的操作是,在实时更新的地址表中,跳过相应像素的地址,相应像素的地址在地址表中去掉,这个应显示图像的像素不会再显示了。
这种情况,在生成第二映射表的过程中,从要求校正后的列的启始位置开始,保留的像素就逐一地填入1,要删除一个像素,就忽略掉。
在校正水平方向的2条边时,因为是内切长方形,显示的列长度肯定是大于要求校正后的列长度的,因此有相应的像素要删除,生成的映射表中相应列的两端就会有0的元素 。
当校正图像内部的水平方向时,因为都是内切长方形内部的运算,基于对称的关系,当一部分的图形出现这种情况时(按理这一部分的图像映射表要删除掉一些元素),另外一部分图形就会出现下面22) 的情况(按理另一部分的图像映射表要增加一些元素),而这一增,一减的数目是一样的,这是由内切长方形决定的,所以不再处理映射表的内容,处理的方法是只改变对应的地址表。
22)显示的列长度小于要求校正后的列长度。
按比例可以算出,校正后的列要增加像素个数。 算出增加比A_NUM= 校正前像素个数/要增加像素个数。然后,在这一列的校正操作是,从这一列的第一个开始,隔A_NUM个,复制上边的像素。具体复制的操作是,在实时更新的地址表中,用重复上边相应像素的地址的方式增加一个地址,这个上边像素将会重复相邻的显示 。
在校正水平方向的2条边时不会发生这种情况。当校正图像内部的水平方向时,因为都是内切长方形内部的运算,基于对称的关系,不再处理映射表的内容,处理的方法是只改变对应的地址表。
23)显示的列长度等于要求校正后的列长度。
这种情况,意味着这里不需要校正。对这一列保存原来的状态就即可。这一列的地址表,和对应的映射表的值都不用更改。
如上5b,ad 是显示的列长度,bc是要校正的目标列长度。
对应地, ad段的像素数是知道的,如果ad对应FHD 的一列,像素数就是1080。ab、bc、cd及ad这4段长度都可以求出来,这样, ab段对应的像素数,bc段对应的像素数,cd段的像素数就可以求出来。
ab 段对应的像素数+cd段的像素数就是要删除掉的像素数。ab 段对应的像素数决定了图像映射表1中上边0的数目,也就是决定了有效元素1的起启位置。cd段的像素数对应于图像映射表1中下边0的数目。
优选的,所述步骤S200之后还包括:
步骤S300、获取校正图片,并对矫正图片的竖直方向的平分线进行校正插补,得到竖直平分线校正图片;
步骤S400、获取竖直平分线校正图片,并对竖直平分线校正图片的水平方向的平分线进行校正插补,得到水平平分线校正图片。
本发明所述的实施例中,通过步骤S100-S200的校正后,只是对图像的边缘进行校正,还需对图像内部的垂直方向和水平方向进行校正。
在对图像内部的垂直方向进行校正时,把校正图片的垂直方向的平分线求出来并显示投影到墙面上 (如图6a中的曲线),在拍摄回来的图像上,把图像的垂直平分线找出来(如上图6a中中间的垂直线)。
根据显示的垂直平分线与要求的校正垂直平分线的关系,通过上面垂直方向的校正插补的方法,校正这条垂直平分线。
假设以下面这样的一行来说明:如图7a所示,其中ab是整一行的长度, c是要求校正的目标位,d点是显示位置。在第二地址表中找出该行的地址表,把有效的地址分成左半部分,右半部分,也就是不用管这一行的地址表中前面的0,以及后面0 ,把非零值平分为2部分。这里的左右部分是逻辑上分开,操作时区分。
现在,这一行需要发生的形变是:ad变为ac ,以及db 变为cb。
对于ad变为ac 的处理,对应于上面的垂直方向的校正插补的11)的情况,左半部分的地址表相应的减少了。 对于db 变为cb的处理,对应于上面的垂直方向的校正插补的12)的情况,右半部分的地址表相应的增加了。这一增一减,数目相同,这一行地址表整体的长度不变。是因为ab整体不变决定的。
同理,在这个基础上进一步细分,校正原图垂直方向的4平分线,8平分线一直到平分线与相邻平分线之间的距离足够小(比如是30个像素),这之间的形变很小时,垂直方向的校正结束。
在对图像内部的水平方向进行校正时,把已竖直平分线校正图片的水平方向的平分线求出来并显示投影到墙面上(如图6b中的曲线),在拍摄回来的图像上,把图像的水平平分线找出来(如上图6b中中间的水平线)。
根据显示的水平平分线与要求的校正水平平分线的关系,通过上面水平方向的校正插补的方法,校正这条水平平分线。
假设以下面这样的一行来说明:如图7b所示,其中ab是整一列的长度,c是要求校正的目标位,d点是显示位置。在第二地址表中找出该列的地址表,把有效的地址分成上半部分,下半部分,也就是不用管这一列的地址表中上面的0,以及下面0 ,把非零值平分为2部分。这里的上下部分是逻辑上分开,操作时区分。
现在,这一列需要发生的形变是:ad变为ac ,以及db 变为cb。
对于ad变为ac 的处理,对应于上面的水平方向的校正插补的21)的情况,左半部分的地址表相应的减少了。 对于db 变为cb的处理,对应于上面的水平方向的校正插补的22)的情况,右半部分的地址表相应的增加了。这一增一减,数目相同,这一列地址表整体的长度不变。是因为ab整体不变决定的。
同理,在这个基础上进一步细分,校正原图水平方向的4平分线,8平分线一直到平分线与相邻平分线之间的距离足够小(比如是30个像素),这之间的形变很小时,水平方向的校正结束。
经过这些校正梳理后,将最终得到一个地址表和一个映射表,还有一个映射表的定位序列。显示处理SOC在运算得到这些参数后,就可以把这些参数配置到FPGA中。在系统中,使用一个FPGA ,当输入一幅图像时,通过地址表寻址应显示图像的像素,通过映射表的定位序列来定位,生成对应的像素的映射帧。这样,把新生成的帧投射出去,就完成了图像的校正。
可见,本发明实现了对投影到平缓变化曲面上的图像进行校正,消除曲面导致图像的变形;而且还能自动地校正因为幕布的平缓变形,或能校正直接投射到墙面时因墙面不平而导致的形变,使用户能观看到平整的投影图像。
基于上述方法实施例,本发明还提供了一种平缓曲面投影校正系统。如图8所示,所述平缓曲面投影校正系统,包括:
校正信息获取模块100,用于将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;
校正及显示模块200,用于根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。
优选的,在所述平缓曲面投影校正系统中,所述校正信息获取模块100具体包括:
投射单元,用于将应显示图像投影到投射区域;
内切长方形获取单元,用于采集投射区域中的实际图像,并根据实际图像获取内切长方形;
缩放比例获取单元,用于根据实际图像的列长度与内切长方形的列长度所对应的列长度比例获取列缩放比例,并根据实际图像的行长度与内切长方形的行长度所对应的行长度比例获取行缩放比例;
校正信息获取单元,用于根据行缩放比例、及列缩放比例获取校正信息。
优选的,在所述平缓曲面投影校正系统中,所述缩放比例获取单元具体包括:
竖直内切边获取分单元,用于对实际图像进行竖直方向的内切,得到垂直内切边;
竖直校正插补分单元,用于根据垂直内切边、及实际图像的竖直边,得到列缩放比例,并将应显示图像的竖直边校正插补至垂直内切边;
第一获取分单元,用于根据对应显示图像的竖直边所进行的校正插补,得到第一映射表和第一地址表;
水平内切边获取分单元,用于对已进行竖直方向内切的实际图像进行水平方向的内切,得到水平内切边;
水平校正插补分单元,用于根据水平内切边、及实际图像的水平边,得到行缩放比例,并将应显示图像的水平边校正插补至水平内切边;
第二获取分单元,用于根据对应显示图像的水平边所进行的校正插补,得到第二映射表和第二地址表。
优选的,在所述平缓曲面投影校正系统中,还包括:
竖直平分线校正模块,用于获取校正图片,并对矫正图片的竖直方向的平分线进行校正插补,得到竖直平分线校正图片;
水平平分线校正模块,用于获取竖直平分线校正图片,并对竖直平分线校正图片的水平方向的平分线进行校正插补,得到水平平分线校正图片。
综上所述,本发明所述的平缓曲面投影校正方法及其系统,方法包括:将应显示图像投影到投射区域,获取投射区域的实际图像、及实际图像的内切长方形,并根据内切长方形与实际图像进行比对得到校正信息;根据校正信息对应显示图像进行缩放校正,得到校正图像并显示。本发明实现了对投影到平缓变化曲面上的图像进行校正,消除曲面导致图像的变形;而且还能自动地校正因为幕布的平缓变形,或能校正直接投射到墙面时因墙面不平而导致的形变,使用户能观看到平整的投影图像。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及本发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。