一种投影设备的校正方法和装置
技术领域
本发明涉及投影设备技术领域,特别是涉及一种投影设备的校正方法和一种投影设备的校正装置。
背景技术
随着科学技术的发展,短焦投影机有代替传统电视机的趋势,投射比是区分短焦投影机、超短焦投影机及反射式超短焦投影机的主要指标。根据不同的投射比,可简单划分为上述的三类短焦投影机。
短焦投影机可以包括激光投影机等,其需要把投影画面投影到投影区域内,如投影到安装在墙上的屏幕内,这类投影机安装调试过程非常复杂,完成一次安装调试平均耗时较长。
发明内容
本发明实施例提供一种投影设备的校正方法和相应的一种投影设备的校正装置,以解决激光投影机的安装调试过程非常复杂,完成一次安装调试平均耗时较长的上述问题。
为了解决上述问题,本发明实施例公开了一种投影设备的校正方法,所述投影设备包括机体,所述机体与摄像头连接,所述机体包含显示缓存区,所述显示缓存区储存有投影图像,所述投影图像包括多个第三特征点坐标,所述方法包括:
采用所述摄像头采集包含投影区域的初始图像;
提取所述初始图像中的投影区域边缘坐标;
依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;
依据所述多个顶点坐标获得第一透视变换参数;
获取所述初始图像中的多个第一特征点坐标;
依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;
依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;
依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;
依据所述校正参数调整所述投影图像在所述投影区域上的位置。
优选地,所述提取所述初始图像中的投影区域边缘坐标的步骤包括:
针对所述初始图像的三原色像素值进行亮度计算,获得亮度图像;
识别出所述亮度图像中的投影区域边缘元素及非投影区域边缘元素,获得边缘检测图像;
获取到所述边缘检测图像中的至少一条投影区域边缘的投影区域边缘坐标。
优选地,所述依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标的步骤包括:
根据所述投影区域边缘坐标建立相交的某两条投影区域边缘的第一直线拟合方程,以所述某两条投影区域边缘对应的投影区域边缘坐标为输入,获取多个第一拟合参数;
根据所述多个第一拟合参数及建立的第二直线拟合方程,获得所述多个顶点坐标。
优选地,所述顶点坐标包括第一顶点坐标、第二顶点坐标及第三顶点坐标的至少一种;其中,所述第一顶点坐标为初始图像中投影区域的顶点坐标;
所述依据所述多个顶点坐标获得第一透视变换参数的步骤包括:
调整坐标系的预设原点,根据所述第一顶点坐标获得所述第二顶点坐标;
获取投影区域偏移量;
根据所述投影区域偏移量调整所述第一顶点坐标,获得第三顶点坐标;
根据所述第二顶点坐标及所述第三顶点坐标进行矩阵变换,获得第一透视变换参数。
优选地,所述依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标的步骤包括:
将所述多个第一特征点坐标及所述第一透视变换参数输入至透视变换矩阵,获取输出的特征点坐标;
将所述输出的特征点坐标进行去噪声,获得相应的多个第二特征点坐标。
优选地,所述依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数的步骤包括:
将所述多个第二特征点坐标及所述多个第三特征点坐标进行矩阵变换,获得所述第二透视变换参数。
优选地,所述依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数的步骤包括:
将所述多个第二特征点坐标及所述第二透视变换参数输入至透视变换矩阵,获取多个第四特征点坐标;
根据所述第四特征点坐标及所述第三特征点坐标计算出所述校正参数。
优选地,所述依据所述校正参数调整所述投影图像的步骤包括:
根据所述校正参数缩小所述投影图像。
本发明实施例公开了一种投影设备的校正装置,所述投影设备包括机体,所述机体与摄像头连接,所述机体包含显示缓存区,所述显示缓存区储存有投影图像,所述投影图像包括多个第三特征点坐标,所述装置包括:
初始图像采集模块,用于采用所述摄像头采集包含投影区域的初始图像;
投影区域边缘坐标提取模块,用于提取所述初始图像中的投影区域边缘坐标;
顶点坐标计算模块,用于依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;
第一透视变换参数获得模块,用于依据所述多个顶点坐标获得第一透视变换参数;
第一特征点坐标获取模块,用于获取所述初始图像中的多个第一特征点坐标;
第二特征点坐标获得模块,用于依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;
第二透视变换参数获得模块,用于依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;
校正参数获得模块,用于依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;
调整模块,用于依据所述校正参数调整所述投影图像在所述投影区域上的位置。
本发明实施例还公开了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的投影设备的校正的步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的投影设备的校正的步骤。
本发明实施例包括以下优点:
本发明实施例中,采用所述摄像头采集包含投影区域的初始图像;提取所述初始图像中的投影区域边缘坐标;依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;依据所述多个顶点坐标获得第一透视变换参数;获取所述初始图像中的多个第一特征点坐标;依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;依据所述校正参数调整所述投影图像在所述投影区域上的位置;简化了安装调试的步骤,可以方便快捷地对投影设备进行安装调试,节省时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1是本发明实施例的一种投影设备的校正方法实施例的步骤流程图;
图2是本发明实施例的一种测试图卡的示意图;
图3是本发明实施例的一种输入点的示意图;
图4是本发明实施例的一种四边形划分区域的示意图;
图5是本发明实施例的一种投影设备的校正装置实施例的结构框图。
具体实施方式
为了使本发明实施例所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明实施例进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,示出了本发明实施例的一种投影设备的校正方法实施例的步骤流程图,所述投影设备包括机体,所述机体与摄像头连接,所述机体包含显示缓存区,所述显示缓存区储存有投影图像,所述投影图像包括多个第三特征点坐标,具体可以包括如下步骤:
步骤101,采用所述摄像头采集包含投影区域的初始图像;
本发明实施例中,所述投影设备包括机体,所述机体与摄像头连接,具体地,该摄像头可以设置于所述机体上,与该机体形成一个整体,或者该摄像头以一个单独的部件存在,其通过有线或无线的方式连接所述机体,如将移动终端与所述机体连接,而该移动终端上具有摄像头;所述机体用于将所述投影图像投影至投影区域上,如投影至安装在墙上的屏幕;需要说明的是,所述摄像头用于采集包含所述投影区域的初始图像。
进一步地,该机体在组成上可以包含处理器、储存器及光学部件等,所述储存器可以包括只读存储器及随机存取存储器,本发明实施例对此不作限制;当所述机体在运行时,该储存器内可以包含有显示缓存区,所述显示缓存区储存有投影图像,所述投影图像包括多个第三特征点坐标。
需要说明的是,该投影图像可以包括测试图卡对应的图像,该第三特征点坐标可以包括投影图像中特征点的坐标数据。
具体而言,所述投影设备的机体用于将投影图像投影至所述投影区域上,显示对应的画面,即该初始图像包含投影图像投影于所述投影区域时的图像。
在本发明实施例中的校正方法之前,可以针对所述投影图像进行粗调,使投影图像的边缘与投影区域的边缘大致重合;完成粗调操作后,可以通过摄像头采集包含所述投影区域的初始图像。
步骤102,提取所述初始图像中的投影区域边缘坐标;
进一步应用到本发明实施例中,所述机体可以针对所述初始图像进行处理,提取所述初始图像中的投影区域边缘坐标。具体地,对所述初始图像的RGB像素值进行亮度计算,得到亮度图像,再使用滤波器对亮度图像进行卷积运算,识别出所述亮度图像中的投影区域边缘元素及非投影区域边缘元素,获得边缘检测图像;识别出所述边缘检测图像中的四条投影区域边缘的投影区域边缘坐标。
本发明实施例中,所述提取所述初始图像中的投影区域边缘坐标的步骤包括以下子步骤:
子步骤S21,针对所述初始图像的三原色像素值进行亮度计算,获得亮度图像;
子步骤S22,识别出所述亮度图像中的投影区域边缘元素及非投影区域边缘元素,获得边缘检测图像;
子步骤S23,获取到所述边缘检测图像中的至少一条投影区域边缘的投影区域边缘坐标。
此外,还可以通过其他的方式获取到所述投影区域边缘坐标,如将初始图像转换为灰度图像后,再将其二值化,获得二值图像,通过二值图像训练机器学习模型,再采用训练后的机器学习模型识别出该投影区域边缘坐标,本发明实施例对获取到所述投影区域边缘坐标的方式不作限制。
步骤103,依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;
实际应用到本发明实施例中,所述机体可以根据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;举例而言,将初始图像中的四条投影区域边缘区分为上边缘、下边缘、左边缘、右边缘;投影区域的左上角的顶点坐标由上边缘的左半段与左边缘的上半段的位置信息进行计算获得,即采用直线拟合的方式,形成上边缘的左半段的直线方程,及形成左边缘的上半段的直线方程;两段直线的交点即为投影区域的左上角的顶点坐标,可以根据上述的方法计算出投影区域的四个顶点坐标。
本发明实施例的一种优选实施例中,所述依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标的步骤包括以下子步骤:
子步骤S31,根据所述投影区域边缘坐标建立相交的某两条投影区域边缘的第一直线拟合方程,以所述某两条投影区域边缘对应的投影区域边缘坐标为输入,获取多个第一拟合参数;
子步骤S32,根据所述多个第一拟合参数及建立的第二直线拟合方程,获得所述多个顶点坐标。
步骤104,依据所述多个顶点坐标获得第一透视变换参数;
具体应用到本发明实施例中,该机体可以根据多个顶点坐标获得第一透视变换参数,所述顶点坐标包括第一顶点坐标、第二顶点坐标及第三顶点坐标的至少一种;其中,所述第一顶点坐标为初始图像中投影区域的顶点坐标;所述依据所述多个顶点坐标获得第一透视变换参数的步骤包括:调整坐标系的预设原点,根据所述第一顶点坐标获得所述第二顶点坐标;获取投影区域偏移量;根据所述投影区域偏移量调整所述第一顶点坐标,获得第三顶点坐标;根据所述第二顶点坐标及所述第三顶点坐标进行矩阵变换,获得第一透视变换参数。
需要说明的是,该第一顶点坐标为初始图像中投影区域的四个顶点坐标,而该第二顶点坐标是指调整坐标系预设原点后的四个顶点坐标;而该第三顶点坐标是指根据投影区域偏移量调整所述第一顶点坐标后得到的四个顶点坐标。
因为通过摄像头采集初始图像时,使用的是Matlab坐标系,预设原点位于图像的左上角,调整坐标系的预设原点至初始图像的中心点后,获得第二顶点坐标;再考虑投影区域分辨率的因素,将根据投影区域偏移量进行调整后的第一顶点坐标,作为第三顶点坐标。
将第三顶点坐标作为透视变换之前的位置坐标,及将第二顶点坐标作为为透视变换之后的位置坐标,计算出第一透视变换参数。
步骤105,获取所述初始图像中的多个第一特征点坐标;
具体应用到本发明实施例中,所述机体进一步地获取该初始图像中的多个第一特征点坐标;举例而言,该初始图像为测试图卡时投影至所述投影区域的图像,可以获取到该测试图卡的多个第一特征点坐标;具体地,对初始图像的投影区域内的第一特征点坐标进行搜索,获得对应的坐标数据。
步骤106,依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;
进一步应用到本发明实施例中,所述机体可以根据所述第一透视变换参数针对所述多个第一特征点坐标进行矩阵变换,获得相应的多个第二特征点坐标;
本发明实施例的一种优选实施例中,所述依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标的步骤包括以下子步骤:
子步骤S41,将所述多个第一特征点坐标及所述第一透视变换参数输入至透视变换矩阵,获取输出的特征点坐标;
子步骤S42,将所述输出的特征点坐标进行去噪声,获得相应的多个第二特征点坐标。
步骤107,依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;
本发明实施例中,将该第三特征点坐标作为透视变换之前的坐标位置,将该第二特征点坐标作为透视变换之后的坐标位置,计算得到第二透视变换参数。
具体应用到本发明实施例中,所述依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数的步骤包括:将所述多个第二特征点坐标及所述多个第三特征点坐标进行矩阵变换,获得所述第二透视变换参数。
步骤108,依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;
进一步地,计算出第二透视变换参数后,将所述多个第二特征点坐标及所述第二透视变换参数输入至透视变换矩阵,获取多个第四特征点坐标;获得多个第四特征点坐标后,将某个特定的第四特征点坐标及对应的第三特征点坐标进行比对,获得两者的位置变化的距离值。
具体而言,可以针对该第四特征点坐标及第三特征点坐标分别进行编号,将相同序号的特征点坐标进行比对,获得位置变化的距离值,以该距离值为校正参数,分别获取到初始图像中投影区域的右上角位置、右下角位置、左上角位置、左下角位置的校正参数。
本发明实施例的一种优选实施例中,所述依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数的步骤包括以下子步骤:
子步骤S51,将所述多个第二特征点坐标及所述第二透视变换参数输入至透视变换矩阵,获取多个第四特征点坐标;
子步骤S52,根据所述第四特征点坐标及所述第三特征点坐标计算出所述校正参数。
步骤109,依据所述校正参数调整所述投影图像在所述投影区域上的位置。
本发明实施例的一种具体应用中,根据所述校正参数调整所述投影图像在所述投影区域上的位置,即根据所述校正参数缩小所述投影图像,使其适合于所述投影区域的尺寸。
本发明实施例中,采用所述摄像头采集包含所述投影区域的初始图像;提取所述初始图像中的投影区域边缘坐标;依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;依据所述多个顶点坐标获得第一透视变换参数;获取所述初始图像中的多个第一特征点坐标;依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;依据所述校正参数调整所述投影图像在所述投影区域上的位置;简化了安装调试的步骤,可以方便快捷地对投影设备进行安装调试,节省时间。
为了使本领域技术人员更好地理解本发明实施例,下面以一个具体的示例进行说明。
一、检测初始图像中的投影区域边缘
针对初始图像的RGB像素值对亮度参数进行计算,得到亮度图像LuminanceImage。随后使用边缘检测模板对亮度图像LuminanceImage进行卷积运算,并根据设定的阈值,对当前像素位置是否是边缘进行判断。
由RGB像素值计算得到亮度值的方法是使用公式:
Y=(65.481/255)*R+(128.553/255)*G+(24.966/255)*B+16
亮度图像LuminanceImage计算完成之后的处理流程为:
(1)使用两组滤波器对亮度图像LuminanceImage分别进行卷积运算,从而对水平方向和竖直方向上的边缘进行检测。在水平方向上的滤波器是[1 1 -1 -1;1 1 -1 -1;1 1-1 -1;1 1 -1 -1],用于对竖直方向边缘进行检测;在竖直方向上的滤波器是[-1 -1 -1 -1;-1 -1 -1 -1;1 1 1 1;1 1 1 1],用于对水平方向边缘进行检测。分别完成两组卷积运算之后,将两者的运算结果进行相加,得到结果图像EdgeImage_1。
(2)对EdgeImage_1进行均值滤波运算,从而抑制噪声的影响。均值滤波采用的是3*3的模板,即使用滤波器(1/9)*[1 1 1;1 1 1;1 1 1]进行卷积运算。当前步骤得到的结果是EdgeImage_2。
(3)对EdgeImage_2进行阈值的判断。设阈值Thd_Edge等于80,对于各个像素点,如果EdgeImage_2中的取值大于Thd_Edge,则判定当前的像素点是边缘元素,否则当前的像素点是非边缘元素,边缘元素和非边缘元素的信息进行统计得到边缘信息图像EdgeImage_3。
(4)在边缘检测过程中,发现初始图像中某些高亮区域相对于普通亮度的差异较大,会被判为边缘,而我们检测的投影区域边缘(可以包括屏幕边缘,即所述投影区域可以包括屏幕)和特征图形都是属于低亮度的区域,需要对以上的高亮区域进行剔除。因此,增加了亮度限制模块。设当前的初始图像亮度图像LuminanceImage的最大值是Lumin_Max,设阈值Thresh_Lumin等于0.75,则有对于EdgeImage_3中的边缘元素,如果所在坐标位置对应亮度图像LuminanceImage的数值大于(Lumin_Max*0.75),则认为当前的区域是过亮的区域而进行剔除,改判为非边缘元素。
(5)通过以上处理,得到的边缘元素和非边缘元素为边缘检测的结果,即得到边缘检测图像EdgeInfo。
二、提取投影区域边缘坐标
在得到边缘检测图像EdgeInfo之后,需要根据当前的EdgeInfo图像信息,将投影区域边缘内侧边缘的各点的坐标位置进行检测。
2.1上边缘的检测
下面以上边缘的检测为例进行说明:
(1)搜索起始点的确定。设初始图像的分辨率是IMG_HEIGHT*IMG_WIDTH,则有边缘检测图像EdgeInfo的分辨率也是IMG_HEIGHT*IMG_WIDTH。选择初始图像的中心位置(IMG_HEIGHT/2,IMG_WIDTH/2)作为搜索的起始点。(注:本发明实施例中的坐标系采用的是Matlab的坐标系,原点坐标(0,0)位于图像的左上角,x轴是竖直向下的,y轴是水平向右的,因此,坐标(i,j)代表的坐标位置是位于图像的第i行第j列)。
(2)从起始点开始向上进行逐点检测,判断是否已经到达上边缘。检测的方法是:
(a)设当前的坐标是(i,j),判断当前的像素位置EdgeInfo(i,j)是否是边缘元素,如果是非边缘元素,则有开始对下一个位置EdgeInfo(i-1,j)进行检测;如果是边缘元素,则将会进行步骤(b)的处理。
(b)从当前的位置(i,j)向右方向进行持续检测,判断是否能够达到阈值的长度THRESHOLD_FOR_EDGE_LENGTH,目前程序中THRESHOLD_FOR_EDGE_LENGTH=round(60*(IMG_HEIGHT/1080)^0.75),随着图像分辨率的提升要求达到的阈值也会提升。采用当前步骤的原因是为了避免受到噪声点以及特征图形区域位置边缘元素的影响,防止以上位置被误判为上边缘,因此,要求检测到的边缘区域需要持续延伸达到一定的长度才能判定已经查找到上边缘。
具体向右方向进行检测的方法是:当前的位置是(m,n),则有下一个检测位置是位于向右一列,其列序号为(n+1),下一个延伸位置的可能的坐标位置位于(m-THRESHOLD_FOR_EDGE_WIDTH:m+THRESHOLD_FOR_EDGE_WIDTH,n+1),共包含(2*THRESHOLD_FOR_EDGE_WIDTH+1)个坐标位置。其中,THRESHOLD_FOR_EDGE_WIDTH由程序进行配置,目前的Matlab程序中配置是THRESHOLD_FOR_EDGE_WIDTH=round(3*(IMG_HEIGHT/1080)^0.6),随着图像分辨率的提升,检测的像素点的数目也会相应进行提升。
对(2*THRESHOLD_FOR_EDGE_WIDTH+1)个坐标位置,如果其中没有边缘元素,都是非边缘元素,则有,认为向右检测的过程已经中断;如果有边缘元素,则将会对每个坐标位置计算匹配的程度,从其中选择匹配度最高的一个作为待检测的边缘在下一列的选中位置,然后从当前的选中位置继续向右进行检测,直至中断或者达到要求的阈值。
计算匹配度的方法是对于(2*THRESHOLD_FOR_EDGE_WIDTH+1)中的每一个位置进行匹配度值的计算,从其中选择匹配度值最高的一项作为下一列的选中位置。而每个位置匹配度值的计算方法是:
设当前位置位于(2*THRESHOLD_FOR_EDGE_WIDTH+1)中的一个,坐标为(m,n),从当前的位置开始沿着与上边缘垂直(竖直方向)并且远离投影区域中心方向依次选取五个点(k=0,…,4),即选取点的坐标(m,n),(m-1,n),(m-2,n),(m-3,n),(m-4,n)分别分配系数Coeff(k)为1,0.95,0.9,0.85,0.83(k=0,…,4),并且对于以上的坐标位置,在相应的边缘检测图像EdgeInfo中,设置参数EdgeInfo_Value(k=0…4),如果当前的像素位置是边缘元素则有EdgeInfo_Value等于1,如果当前的像素位置是非边缘元素则有EdgeInfo_Value等于0,对以上五个位置分别计算EdgeInfo_Value(k)*Coeff(k),并将结果进行累加,得到Summation_ToCenter;随后,从(m,n)的下一个位置开始,沿着与上边缘垂直(竖直方向),并且靠近投影区域中心的方向依次选取五个点(k=0…4),即坐标为(m+1,n),(m+2,n),(m+3,n),(m+4,n),(m+5,n),对以上坐标分配系数Coeff”(k)为1,0.95,0.9,0.85,0.83(k=0,…,4),得到Coeff’(k)=Coeff”(k)*Coeff_OffCenter_Adj,其中Coeff_OffCenter_Adj目前在程序中的设置为0.45,对于以上的坐标位置,在相应的边缘检测结果图像EdgeInfo中,设置参数EdgeInfo_Value’(k=0…4),如果当前的像素位置是边缘元素则有EdgeInfo_Value’等于1,如果当前的像素位置是非边缘元素则有EdgeInfo_Value’等于0,对以上五个位置分别计算EdgeInfo_Value’(k)*Coeff’(k),并将结果进行累加,得到Summation_OffCenter;将Summation_ToCenter减Summation_OffCenter,得到最终的匹配值ScoreForAccurateEdgeDetection。
对(2*THRESHOLD_FOR_EDGE_WIDTH+1)中每个位置的匹配值ScoreForAccurateEdgeDetection进行计算,从其中选取数值最大的一个,其对应的坐标位置即为向右方检测边缘的下一个选中位置。
如果从(i,j)起始的向右方向检测过程的延伸的次数超过了阈值THRESHOLD_FOR_EDGE_LENGTH,则判定(i,j)是位于上边缘的元素;而如果从(i,j)起始的检测过程未超过阈值THRESHOLD_FOR_EDGE_LENGTH,则判定(i,j)是位于噪声区域或者是位于特征图形区域,需要回到步骤(a),从位置(i-1,j)开始继续进行检测。
如果对上边缘的检测过程向上检测到初始图像的最上面一行仍然未检测到,则有程序将会报错退出。在正常的情况下,将会检测到上边缘中的一点Point_UpEdge。
采用类似的方法,将初始图像的中心位置(IMG_HEIGHT/2,IMG_WIDTH/2)作为起始点,对于下边缘的阈值计算也采用向右方检测,而对左边缘和右边缘的阈值计算采用向下方检测,可以分别得到下边缘,左边缘和右边缘中的一点Point_DownEdge,Point_LeftEdge和Point_RightEdge。
随后将Point_UpEdge作为起点,进入到步骤(3),对上边缘各点的位置坐标进行检测。
(3)当前的步骤是对上边缘各点的位置坐标进行检测。
从已经检测到的上边缘中的一点Point_UpEdge作为起点分别向两个方向进行检测,对整个上边缘中各点的位置坐标参数进行检测。检测的方向分为两个方向,即向左方检测上边缘各位置的坐标(上边缘的左半段)和向右方检测上边缘各位置的坐标(上边缘的右半段),下面以上边缘从点Point_UpEdge向左方向(上边缘的左半段)进行检测为例进行说明,而向右方向(上边缘的右半段)的检测方法是与之相类似的。
检测的步骤为:
(a)将Point_UpEdge作为初始的检测位置,开始检测过程。检测的过程与步骤(2)的子步骤(b)中检测当前点是否是噪声或者特征图形的向右延伸长度的计算分析方法相类似。
(b)设当前的检测位置的坐标是(m,n),则有向左检测的过程将会检测下一列中上边缘的位置,其列坐标为(n-1),而在下一列中,将要检测的坐标范围是(m-THRESHOLD_FOR_EDGE_WIDTH:m+THRESHOLD_FOR_EDGE_WIDTH,n-1),共包含(2*THRESHOLD_FOR_EDGE_WIDTH+1)个坐标位置。其中,THRESHOLD_FOR_EDGE_WIDTH的配置是THRESHOLD_FOR_EDGE_WIDTH=round(3*(IMG_HEIGHT/1080)^0.6)。
对(2*THRESHOLD_FOR_EDGE_WIDTH+1)个坐标位置,如果其中没有边缘元素,都是非边缘元素,则有,认为向左检测的过程已经中断;如果有边缘元素,则将会对每个坐标位置计算匹配的程度,从其中选择匹配度最高的一个作为下一列的选中位置,从当前的选中位置继续向左进行检测。
设当前位置位于(2*THRESHOLD_FOR_EDGE_WIDTH+1)中的一个,坐标为(p,q),从当前的位置开始沿着与上边缘垂直(竖直方向)并且远离投影区域中心方向依次选取五个点(k=0,…,4),即选取点的坐标(p,q),(p-1,q),(p-2,q),(p-3,q),(p-4,q)分别分配系数Coeff(k)为1,0.95,0.9,0.85,0.83(k=0,…,4),并且对于以上的坐标位置,在相应的边缘检测图像EdgeInfo中,设置参数EdgeInfo_Value(k=0…4),如果当前的像素位置是边缘元素则有EdgeInfo_Value等于1,如果当前的像素位置是非边缘元素则有EdgeInfo_Value等于0,对以上五个位置分别计算EdgeInfo_Value(k)*Coeff(k),并将结果进行累加,得到Summation_ToCenter;随后,从(p,q)的下一个位置开始,沿着与上边缘垂直(竖直方向),并且靠近投影区域中心的方向依次选取五个点(k=0…4),即坐标为(p+1,q),(p+2,q),(p+3,q),(p+4,q),(p+5,q),对以上坐标分配系数Coeff”(k)为1,0.95,0.9,0.85,0.83(k=0,…,4),得到Coeff’(k)=Coeff”(k)*Coeff_OffCenter_Adj,其中Coeff_OffCenter_Adj目前在程序中的设置为0.45,对于以上的坐标位置,在相应的边缘检测图像EdgeInfo中,设置参数EdgeInfo_Value’(k=0…4),如果当前的像素位置是边缘元素则有EdgeInfo_Value’等于1,如果当前的像素位置是非边缘元素则有EdgeInfo_Value’等于0,对以上五个位置分别计算EdgeInfo_Value’(k)*Coeff’(k),并将结果进行累加,得到Summation_OffCenter;将Summation_ToCenter减Summation_OffCenter,得到最终的匹配值ScoreForAccurateEdgeDetection。
从最终的匹配值中,统计ScoreForAccurateEdgeDetection的最大值Value_Max,如果当前的Value_Max小于等于0,则表明当前的检测位置已经到达投影区域边缘的四个顶点的区域,当前的区域既包含水平方向上的边缘,也包含竖直方向上的边缘,导致不能找到Value_Max大于0的区域(对于投影区域的上边缘位置,上方是投影区域边缘,EdgeInfo_Value等于1,下方是投影区域区域,EdgeInfo_Value等于0,因此,ScoreForAccurateEdgeDetection的计算结果在正常情况下应当为正值)。在Value_Max小于等于0的情况下,将会终止上边缘的检测过程。而在Value_Max大于0的情况下,从ScoreForAccurateEdgeDetection中选择最大的取值所对应的坐标位置(g,h)作为下一列上边缘的检测位置。
此时,将当前的位置更新为(g,h),回到步骤(b)的初始位置继续进行下一列上边缘的坐标位置的检测。
在拍摄的过程中,如果镜头未正对投影区域进行拍摄,则有将会使投影区域的边缘发生透视变换,使初始图像中的投影区域边缘不再是矩形,某些边缘之间的夹角可能是钝角,例如,上边缘的检测过程中,投影区域边缘的上边缘与左边缘之间的夹角是钝角,某些情形下角度要明显大于90度,在这种情况下,上边缘在向左方进行检测时,在检测到左上角位置时,由于左边缘与上边缘之间的夹角是钝角,区分度变差(夹角为直角时,区分度明显),将有可能导致左边缘被误检测为上边缘而继续向左检测。因此,增加了监测的机制。
监测的机制为:
(a)设置一个参数DETECTION_SCORE,初始化为0。
(b)在检测的过程中,对上边缘的检测结果进行当前列与下一列的行坐标的分析比较,如果下一列的行坐标与当前列的行坐标的差值Diff_Value的绝对值大于等于2,则有将DETECTION_SCORE更新为(DETECTION_SCORE+Diff_Value),否则将DETECTION_SCORE的结果向零进行靠拢,具体的方式是设置STEP_FOR_EVEN等于1,如果DETECTION_SCORE等于0,则更新后DETECTION_SCORE仍然等于0,如果DETECTION_SCORE大于0,则有更新DETECTION_SCORE等于(DETECTION_SCORE-STEP_FOR_EVEN),而如果DETECTION_SCORE小于0,则有更新DETECTION_SCORE等于(DETECTION_SCORE+STEP_FOR_EVEN)。
(c)对DETECTION_SCORE的取值进行监视,并设置两个阈值,分别是高阈值DETECTION_THRESH_HIGH和低阈值DETECTION_THRESH_LOW。程序中设置DETECTION_THRESH_HIGH等于60,DETECTION_THRESH_LOW等于25。当DETECTION_SCORE逐渐积累,其绝对值已经超过低阈值DETECTION_THRESH_LOW,监测模块将会记录此时的位置POSITION_RECORD,如果随着检测过程,DETECTION_SCORE的绝对值又低于了低阈值DETECTION_THRESH_LOW,监测模块此时会将位置信息POSITION_RECORD进行清除,直至DETECTION_SCORE的绝对值又超过低阈值DETECTION_THRESH_LOW时,再次将超过低阈值DETECTION_THRESH_LOW的位置POSITION_RECORD进行记录。
(d)监测模块如果发现DETECTION_SCORE的绝对值超过了高阈值DETECTION_THRESH_HIGH,将会判定出现了其它边缘误判为上边缘的情况,将会终止上边缘的检测过程,将对POSITION_RECORD进行获取,在POSITION_RECORD位置之前的边缘信息进行保留,对POSITION_RECORD位置之后的信息将判定为无效信息而进行删除。
(e)在监测的过程中,开始时将会预留一段区域THRESH_FOR_STEADY用于达到稳定状态,经过当前的区域的稳定之后,再开启监测模块进行实时监测。在程序中,设置THRESH_FOR_STEADY等于60,即完成60列的检测之后,开启当前的监测模块对边缘的检测情况进行监测。
通过以上的监测过程,避免在未正对投影区域拍摄的情况下,出现四条边缘之间的误判。监测过程将会伴随上边缘的检测过程,在出现误判的情况下及时终止检测。当前的检测过程将会循环进行,直至达到终止条件。在检测的过程中,将对检测到的上边缘的坐标位置进行记录。
经过上述运算,将会对上边缘的左半段的各位置的坐标数据进行计算并获取计算结果。通过相类似的方式,可以对上边缘的右半段各位置的坐标数据进行计算并获取计算结果。通过以上处理实现了对上边缘(左半段与右半段)各点位置坐标的计算并获取计算结果。
3.2其余三条边缘的检测
上述的3.1介绍的是上边缘(左半段与右半段)的计算获取方法。通过与上边缘(左半段与右半段)计算获取方法相类型的方式,可以对下边缘(左半段与右半段),左边缘(上半段与下半段),右边缘(上半段与下半段)各点位置的坐标参数进行检测。
3.3计算出所述投影区域边缘的多个顶点坐标
对于投影区域边缘的四个顶点,可以通过上述检测到的四条边缘的坐标信息,计算对应的顶点坐标。其中,投影区域边缘的左上角的顶点坐标将会通过上边缘的左半段与左边缘的上半段的检测信息进行获取,投影区域边缘的右上角的顶点坐标将会通过上边缘的右半段和右边缘的上半段的检测信息进行获取,投影区域边缘的左下角的顶点坐标将会通过下边缘的左半段和左边缘的下半段的检测信息进行获取,投影区域边缘的右下角的顶点坐标将会通过下边缘的右半段和右边缘的下半段的检测信息进行获取。
下面对投影区域边缘的左上角的顶点坐标的计算方法进行说明。
投影区域边缘的左上角需要使用上边缘的左半段与左边缘的上半段的检测位置信息进行计算与获取。对于上边缘的左半段和左边缘的上半段,将分别采用直线拟合的方式,形成两段直线,两段直线的交点即为投影区域边缘的左上角的顶点坐标。
对于上边缘的左半段,是从中心Point_UpEdge开始向左检测,直至检测到左上角附近。对于以上的边缘检测信息,靠近左上角的部分在左上角附近容易产生波动,因此,需要剔除部分数据,而对于靠近中心Point_UpEdge的部分与左上角的距离较远,对左上角计算的贡献度低,也要进行剔除。因此,设检测到的上边缘左半段的边缘信息中,接近中心Point_UpEdge一端的起始位置的比例位置为0,接近左上角一端的结束位置的比例位置为1,则有,选取比例位置[StartPosParameter,EndPosParameter]区间作为有效的区域,通过以上区域的信息,对上边缘左半段所在的直线进行拟合。在目前的程序中,设置StartPosParameter等于0.2,设置EndPosParameter等于0.75。
对于以上区间中的有效边缘信息,采用拟合的方式,对直线的方程进行估计,得到直线拟合的方式:
Y=a*X+b。
对于左边缘的上半部分,输入变量是X,输出变量是Y,此时,X是横坐标,Y是纵坐标,对于左边缘的上半部分也选取有效区间[StartPosParameter,EndPosParameter]中的边缘的坐标信息进行拟合,得到直线拟合的结果。
在得到上边缘的左半部分和左边缘的上半部分的拟合直线之后,将得到两组方程。
m=a_1*n+b_1;
n=a_2*m+b_2;
m和n是未知数,其中,m代表的是图像的横坐标,n代表的是图像的纵坐标,a_1和b_1是上边缘左半部分拟合直线的参数,a_2和b_2是左边缘的上半部分拟合直线的参数。
通过两个方程可以对两个未知数m和n进行求解。当前参数(m,n)即为投影区域边缘的左上角的顶点坐标。
上面是投影区域边缘的左上角的顶点坐标的计算方法。而投影区域的左下角的顶点坐标可以通过下边缘的左半部分和左边缘的下半部分,采用相类似的方法进行计算。投影区域的右上角的顶点坐标可以根据上边缘的右半部分和右边缘的上半部分进行计算。投影区域的右下角的顶点坐标可以根据下边缘的右半部分和右边缘的下半部分进行计算。
三、获得第一透视变换参数
通过以上的处理,对投影区域边缘的四个顶点坐标在初始图像中的坐标位置进行了获取。通过以上四个顶点的坐标,可以对相机拍摄过程中的透视变换参数进行获取。
设投影区域边缘的四个顶点在初始图像中的坐标为(LeftUp.x,LeftUp.y),(LeftDown,x,LeftDown.y),(RightUp.x,RightUp.y),(RightDown.x,RightDown.y)。初始图像的坐标系使用的是Matlab坐标系,原点位于图像的左上角,x轴竖直向下,y轴水平向右。设初始图像的分辨率是IMG_HEIGHT*IMG_WIDTH,将坐标的原点由左上角平移到初始图像的中心点,得到投影区域边缘的四个顶点在初始图像中新的坐标A’(New.LeftUp.x,New.LeftUp.y),B’(New.LeftDown.x,New.LeftDown.y),C’(New.RightUp.x,New.RightUp.y),D’(New.RightDown.x,New.RightDown.y)。
当前的处理过程,目标是根据检测到投影区域边缘的四个顶点的坐标,确定相机拍摄过程中拍摄角度引入的透视变换矩阵。在正对投影区域中心拍摄的情况下,得到的投影区域边缘的四个顶点位置相对于投影区域中心是对称的。
设在Matlab坐标系下,在进行镜头拍摄角度的校正之后,投影区域的分辨率为ScreenHeight*ScreenWidth(在Matlab程序中,设ScreenHeight等于2160,而ScreenWidth等于3840),并将投影区域的中心的位置设为坐标(0,0),则有,投影区域四个顶点的偏移量在水平方向上是(ScreenWidth/2),在竖直方向上是(ScreenHeight/2),得到四个顶点的坐标A(ScreenPNG.LeftUp.x,ScreenPNG.LeftUp.y),B(ScreenPNG.LeftDown.x,ScreenPNG.LeftDown.y),C(ScreenPNG.RightUp.x,ScreenPNG.RightUp.y),D(ScreenPNG.RightDown.x,ScreenPNG.RightDown.y)。
将点ABCD(A左上角,B左下角,C右上角,D右下角)作为透视变换之前的位置坐标,点A’B’C’D’(A’左上角,B’左下角,C’右上角,D’右下角)作为透视变换之后的位置坐标,从而对透视变换矩阵进行求解。
透视变换矩阵的形式为:
x和y是透视变换之前的坐标,u和v是透视变换之后的坐标,m0,…,m7是透视变换的矩阵的八个参数。
当前的方程的求解将上面的矩阵转换为:
从而得到:
u=m0*x+m1*y+m2-m6*x*u-m7*y*u
v=m3*x+m4*y+m5-m6*x*v-m7*y*v
通过当前的方式,将非线性方程为线性方程。设输入四组控制点,透视变换之前的坐标为(x1,y1),(x2,y2),(x3,y3),(x4,y4),透视变换之后的坐标为(u1,v1),(u2,v2),(u3,v3),(u4,v4),则有建立矩阵形式:
利用已知的参数(x1,y1),(x2,y2),(x3,y3),(x4,y4),(u1,v1),(u2,v2),(u3,v3),(u4,v4),对上述公式中等式右边的8*8矩阵Matrix进行计算获取。然后,对Matrix的逆矩阵进行计算获取,然后将等式的两侧同时乘以Matrix的逆矩阵,则有,能够对参数m0,…,m7进行计算获取,从而得到透视变换矩阵,即获得第一透视变换参数。
四、获取所述初始图像中的多个第一特征点坐标
通过步骤三,建立了拍摄时角度引入的透视变换矩阵Matrix,下一步是对投影区域中的特征图形进行搜索。
首先,在镜头正对投影区域中心进行拍摄的情况下,在图像中投影区域边缘的四个顶点为ABCD(A左上角,B左下角,C右上角,D右下角),且ABDC构成一个矩形,参照图2,示出了本发明实施例的一种测试图卡的示意图,如图2所示,该图2中包含多个特征点,而16个特征图形(包含图2中的特征点)位于当前矩阵的内部,设在摄像头正对投影区域中心进行拍摄的图像中,投影区域的分辨率为ScreenHeight*ScreenWidth,下一步将选取当前的投影区域内部的一块区域作为特征图形的搜索区域。
对于上边缘和下边缘分别向内部平移收缩(1/32)*ScreenHeight,而对于左边缘和右边缘分别向内部平移收缩(1/32)*ScreenWidth,此时四条边缘会形成矩形REGION_EFFECTIVE的四个顶点EFGH(E左上角,F左下角,H右上角,G右下角)。
通过步骤四中得到的透视变换矩阵,可以得到EFGH在未正对投影区域中心情况下初始图像中的对应位置E’F’G’H’(E’左上角,F’左下角,H’右上角,G’右下角)。
因此,在实际的初始图像(未正对投影区域中心情况下的初始图像)中,位于四边形E’F’G’H’的内部并且检测为边缘元素的点,即为特征图形中的点(特征图形区域的待选点)。而在实际的初始图像中,E’F’G’H’通常是一个四边形,四条边通常不是恰好呈水平或者竖直方向分布。因此,需要通过几何位置关系判断当前的点是否位于四边形E’F’G’H’的内部。
判断当前点是否位于四边形内部的方法是对四条边缘与当前点的位置关系分别进行判断。参照图3,示出了本发明实施例的一种输入点的示意图,如图3所示:输入点P如果位于四边形E’F’G’H’内部,则需要分别满足四条边缘与点P之间的相对位置关系,即:
(1)E’F’PE’为逆时针分布;
(2)F’G’PF’为逆时针分布;
(3)E’H’PE’为顺时针分布;
(4)H’G’PH’为顺时针分布。
判断三个点之间位置关系是顺/逆时针分布,采用的是方式是:设输入的三个点为A(x1,y1),B(x2,y2),C(x3,y3),则有三角形ABC面积为:
Value_Square=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)
当前的面积是一个有符号的数,在Matlab坐标系中,如果ABCA是逆时针的顺序进行排列,则有Value_Square是正数;而如果ABCA是顺时针的顺序进行排列,则有Value_Square是负值;而如果ABC在同一条直线上,则有Value_Square等于0。
因此,通过Value_Square的数值的符号,可以对输入的三个点ABC的分布位置关系进行确定。
通过点P与四条边缘之间各自的位置分布关系,可以判断当前点P是否位于四边形E’F’G’H’的内部。
由于以上的处理方法对当前点判断是否位于四边形的内部时,需要对四条边缘分别进行计算,并且每次计算需要使用七次乘法,因此,为了降低计算的消耗,将四边形相关的区域进行了划分,参照图4,示出了本发明实施例的一种四边形划分区域的示意图,如图4所示:
对于输入的四边形E’F’H’G’,形成一个外轮廓矩形MNPQ和内轮廓矩形M’N’P’Q’(矩形的边都是呈现竖直方向或者水平方向排布)。使用Matlab的坐标系方向,对于四边形的左边缘E’F’,当前边缘上最远离四边形中心的列坐标确定外轮廓矩形MN边缘的位置,当前边缘上最靠近四边形中心的列坐标确定内轮廓矩形M’N’边缘的位置;对于四边形的右边缘G’H’,当前边缘上最远离四边形中心的列坐标确定外轮廓矩形PQ边缘的位置,当前边缘上最靠近四边形中心的列坐标确定内轮廓矩形P’Q’边缘的位置;对于四边形的上边缘E’G’,当前边缘上最远离四边形中心的行坐标确定外轮廓矩形MQ边缘的位置,当前边缘上最靠近四边形中心的行坐标确定内轮廓矩形M’Q’边缘的位置;对于四边形的下边缘F’H’,当前边缘上最远离四边形中心的行坐标确定外轮廓矩形NP边缘的位置,当前边缘上最靠近四边形中心的行坐标确定内轮廓矩形N’P’边缘的位置。
因此,对投影区域内部的特征图形中的点进行搜索的过程中,对于矩形M’N’P’Q’内部的边缘元素,将直接判定为特征图像中的点(特征点),而对于矩形MNPQ以内,矩形M’N’P’Q’以外的边缘元素,需要根据当前点的坐标位置与四边形E’F’H’G’四条边的位置关系,判断是否位于四边形E’F’H’G’的内部,如果位于内部,则当前的位置是特征点,否则当前的位置不是特征点,如此,获得多个第一特征点坐标。
五、对特征点进行镜头拍摄角度影响的校正
测试图卡中包含16个特征图形,需要根据当前输入点的行列坐标在所有待参考位置坐标的相对比例位置,确定步骤四中得到的特征图形中的点(即特征点)是属于哪一个特征图形。但是在拍摄的过程中,摄像头的镜头如果未正对投影区域中心进行拍摄,会使各行各列特征图形中的点不再保持平行的关系,严重情况下,会使不同的行或列特征图形中的点之间出现串行或串列,影响到对当前特征图形中的点的位置的划分与定位。
因此,需要对步骤四中得到的特征图形中的点(第一特征点坐标)进行镜头拍摄角度影响的校正,得到在镜头正对投影区域中心进行拍摄时的第二特征点坐标。
根据步骤三中得到的透视变换矩阵:
将步骤四中在初始图像中检测得到的特征图形中的点(特征图形待选点)位置,进行坐标系的变换,变换到步骤三中基于初始图像且原点位于初始图像中心点的坐标系,得到参数u和v。对透视变换矩阵求逆矩阵,得到等于[t11,t12,t13;t21,t22,t23;t31,t32,t33]。
则有满足:
对于w参数,满足:
t31*w*u+t32*w*v+t33*w=1
则有:
可以得到:
x=t11*w*u+t12*w*v+t13*w
y=t21*w*u+t22*w*v+t23*w
当前的坐标(x,y)即为输入的待选的特征图形中的点在正对镜头初始图像中的坐标位置,即获得输出的特征点坐标。通过以上处理,完成各个特征图形中的点对镜头拍摄角度影响的校正。
六、确定输出的特征点坐标的序号
确定输出的特征点坐标的序号,即对步骤五中得到的特征点,判断当前的特征点是属于16个特征图形区域中的哪一个。
处理的方法是对四行与四列特征图形之间的行/列分界线进行确定,从而确定当前的特征图形中的点元素所属的特征图形区域。
(1)首先是对四行特征图形之间的分界线进行确定。将步骤五得到的特征点按照行坐标递增的顺序进行排序。选择排序前25%比例的特征点的坐标作为最上面一行特征图形的待选范围,对当前待选范围的特征图形中的点的行坐标的中位数CenterPosition进行计算,并计算待选范围中各点的行坐标到CenterPosition的距离,并对距离值的中位数MedianDistance进行计算,设置控制阈值ControlThreshold等于5,对到CenterPosition距离大于(MedianDistance*ControlThreshold)的特征图形待选元素,判定是属于其它行中的元素进行剔除。对剩余的特征图形待选元素,使用上述3.3中介绍的拟合方法,对第一行特征图形所在的直线ROW_UP进行拟合。
选择排序后25%比例的特征图形待选元素的坐标作为最下面一行特征图形的待选范围,对当前待选范围的特征点的行坐标的中位数CenterPosition进行计算,并计算待选范围中各点的行坐标到CenterPosition的距离,并对距离值的中位数MedianDistance进行计算,设置控制阈值ControlThreshold等于5,对到CenterPosition距离大于(MedianDistance*ControlThreshold)的特征图形待选元素,判定是属于其它行中的元素进行剔除。对剩余的特征图像待选元素,使用上述的3.3中介绍的拟合方法,对第四行特征图形所在的直线ROW_DOWN进行拟合。
在步骤四中,得到特征图形搜索区域矩形REGION_EFFECTIVE的四个顶点EFGH(E左上角,F左下角,H右上角,G右下角),将ROW_UP与ROW_DOWN分别与矩形EFGH(矩形REGION_EFFECTIVE)的左边缘EF相交于点LeftUpCross和LeftDownCross,将ROW_UP与ROW_DOWN分别与矩形EFGH(矩形REGION_EFFECTIVE)的右边缘GH相交于点RightUpCross和RightDownCross。
在左边缘上的点LeftUpCross和点LeftDownCross之间进行四等分(三个分界点),在右边缘上的点RightUpCross和点RightDownCross之间进行四等分(三个分界点),将两条边缘之间的三个分界点按照相对应的顺序进行连接,即形成第一行和第二行,第二行和第三行,第三行和第四行特征图形之间的分界线。
在确定四行特征点之间的分界线之后,则有根据步骤五中介绍的通过Value_Square的符号对直线与点之间的位置关系进行确定的方法,对输入的特征图形待选元素的坐标是属于四行中的哪一行进行确定。
(2)随后是对各列之间的分界线进行确定。通过与确定行分界线相类型的方法,对特征图像待选元素的列坐标进行排序,然后,确定第一列和第四列特征图形的拟合直线,分别与特征搜索区域矩形EFGH的上边缘和下边缘进行相交,并对相对应的四等分的三个分界点进行连接,确定四列特征图形之间的分界线。对输入的坐标点,根据Value_Square的符号,对直线与点之间的位置关系进行确定,从而判断输入的特征点坐标属于四列中的哪一列。
(3)通过前面的步骤,对当前输出的特征点坐标位于四行四列中的行列序号进行了确定,从而能够确定当前的特征图形中的点是属于测试图卡的16个特征点中的哪一个。
七、确定16个第二特征点坐标
将分别对16个输出的特征点坐标的对应区域进行处理,对当前区域中的噪声点进行删除之后,对剩余有效点的坐标取平均值,得到当前的第二特征点坐标。
对当前的区域进行噪声滤除的方法是对属于当前特征图形区域的各待选元素依次进行分析处理:
在镜头角度校正之后的图像(即正对投影区域中心进行拍摄)中,假设输入的当前待选元素的坐标为(i,j),则下一步需要分析当前输入点临域的九个点的边缘检测和亮度参数,九个点的坐标分别是(i,j),(i-1,j),(i-2,j),(i+1,j),(i+2,j),(i,j-1),(i,j-2),(i,j+1),(i,j+2)。
对于以上输入的待选元素(i,j)所相应的九个坐标,利用步骤三中的透视变换矩阵,变换到实际拍摄的初始图像中,并判断变换之后在实际初始图像中的坐标位置是否为边缘元素,以及亮度参数是否符合要求。对亮度参数,设定阈值LuminanceThreshold为当前初始图像中最大亮度的一半。如果九个点的坐标在变换之后对应实际初始图像中的坐标位置所对应的EdgeInfo图像中的元素均满足是边缘元素并且在亮度图像中的取值小于LuminanceThreshold,则对于当前的待选元素(i,j)是属于特征图形进行保留;否则,当前的待选位置判定为噪声点,需要进行删除。
在对当前的特征图形区域的各待选特征图形进行噪声删除之后,对有效的特征图形的坐标取平均值,即得到当前特征图形对应的中心位置。
对16个特征图形进行以上的操作,完成对16个特征点的中心位置的计算,确定16个第二特征点坐标。
八、计算校正参数
在进行镜头角度校正之后的图像(正对投影区域中心进行拍摄的图像)中,已经得到投影区域边缘的四个顶点的坐标,以及16个第二特征点坐标,当前的模块将根据以上的参数对校正参数进行计算,即获取对投影区域的左上角,右上角,左下角,右下角的顶点坐标的校正参数。
对于投影区域左上角的顶点坐标的校正参数,将根据检测得到的投影区域边缘左上角的坐标,以及特征图形中的第一行第一列,第一行第二列,第二行第一列,第二行第二列四个特征点的坐标进行计算获取;投影区域左下角的校正参数,将根据检测得到的投影区域边缘左下角的坐标,以及特征图形中的第三行第一列,第三行第二列,第四行第一列,第四行第二列四个特征图形的坐标进行计算获取;投影区域右上角的校正参数,将根据检测得到的投影区域边缘右上角的坐标,以及特征图形中的第一行第三列,第一行第四列,第二行第三列,第二行第四列四个特征图形的坐标进行计算获取;投影区域右下角的校正参数,将根据检测得到的投影区域边缘右下角的坐标,以及特征图形中的第三行第三列,第三行第四列,第四行第三列,第四行第四列四个特征图形的坐标进行计算获取;以上的四个顶点,每个顶点包含水平和竖直方向上的两个校正参数,因此,总共包含八个参数。将以上八个参数传递给投影设备几何校正模块之后,投影设备将会完成四个顶点的校正。而投影设备的四条边的中心点也会随着四个顶点的调整进行相应的位置调整。
对于投影区域左上角的校正参数的计算方法是,在镜头拍摄角度校正之后的图像(镜头正对投影区域中心拍摄的图像)中,将两行两列的特征点(即第二特征点坐标)中,获取第一行第一列特征点的坐标Capture.LeftUp,第一行第二列特征点的坐标Capture.RightUp,第二行第一列特征点的坐标Capture.LeftDown,第二行第二列特征点的坐标Capture.RightDown。获取边缘左上角的坐标Capture.InputPosition。
对于显示缓存区,将原点设置在缓存区的正中心,而两行两列特征图形的坐标,可以根据测试图卡中16个特征图形的位置进行计算获取,得到在显示缓存区中的第一行第一列特征点(即第三特征点坐标)的坐标Buffer.LeftUp,第一行第二列特征点的坐标Buffer.RightUp,第二行第一列特征点的坐标Buffer.LeftDown,第二行第二列特征点的坐标Buffer.RightDown。
对于上面的两行两列特征图形,将建立投影设备的显示缓存区(分辨率3840*2160,即第三特征点坐标)与镜头拍摄角度校正之后的图像(镜头正对投影区域中心拍摄的图像,即第二特征点坐标)之间的透视变换关系,显示缓存区中的坐标是透视变换之前的坐标,镜头拍摄角度校正之后的图像(镜头正对投影区域中心拍摄的图像)中的坐标是透视变换之后的坐标。
第二透视变换参数的计算方法将参考步骤三中的方法进行实现。
随后,将在镜头拍摄角度校正之后的图像(镜头正对投影区域中心拍摄的图像)中,边缘左上角的坐标Capture.InputPosition,根据第二透视变换参数,并根据步骤五中介绍的方法,对投影区域边缘左上角在投影设备显示缓存区中的坐标位置Buffer.InputPosition(第二特征点坐标)进行计算,获得第四特征点坐标。
在投影设备中,根据边缘左上角对应的坐标位置Buffer.InputPosition(第四特征点坐标)相对于显示缓存区左上角的坐标位置(第三特征点坐标)的位置变化,从而得到对投影区域左上角的位置的校正参数。
以上是投影区域左上角位置的校正参数的计算方法,同理,可以得到投影区域右上角位置,左上角位置,左下角位置的校正参数。
在完成四个顶点的校正参数的计算之后,将以上校正参数提供给投影设备的几何校正模块,从而实现了投影设备的校正参数的自动化调整。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明实施例的一种投影设备的校正装置实施例的结构框图,所述投影设备包括机体,所述机体与摄像头连接,所述机体包含显示缓存区,所述显示缓存区储存有投影图像,所述投影图像包括多个第三特征点坐标,具体可以包括如下模块:
初始图像采集模块301,用于采用所述摄像头采集包含投影区域的初始图像;
投影区域边缘坐标提取模块302,用于提取所述初始图像中的投影区域边缘坐标;
顶点坐标计算模块303,用于依据所述投影区域边缘坐标计算出所述投影区域的多个顶点坐标;
第一透视变换参数获得模块304,用于依据所述多个顶点坐标获得第一透视变换参数;
第一特征点坐标获取模块305,用于获取所述初始图像中的多个第一特征点坐标;
第二特征点坐标获得模块306,用于依据所述第一透视变换参数针对所述多个第一特征点坐标进行处理,获得相应的多个第二特征点坐标;
第二透视变换参数获得模块307,用于依据所述多个第二特征点坐标及所述多个第三特征点坐标获得第二透视变换参数;
校正参数获得模块308,用于依据所述第二透视变换参数处理所述多个第二特征点坐标,获得校正参数;
调整模块309,用于依据所述校正参数调整所述投影图像在所述投影区域上的位置。
优选地,所述投影区域边缘坐标提取模块包括:
亮度图像获得子模块,用于针对所述初始图像的三原色像素值进行亮度计算,获得亮度图像;
边缘检测图像获得子模块,用于识别出所述亮度图像中的投影区域边缘元素及非投影区域边缘元素,获得边缘检测图像;
投影区域边缘坐标获取子模块,用于获取到所述边缘检测图像中的至少一条投影区域边缘的投影区域边缘坐标。
优选地,所述顶点坐标计算模块包括:
第一拟合参数获取子模块,用于根据所述投影区域边缘坐标建立相交的某两条投影区域边缘的第一直线拟合方程,以所述某两条投影区域边缘对应的投影区域边缘坐标为输入,获取多个第一拟合参数;
顶点坐标获得子模块,用于根据所述多个第一拟合参数及建立的第二直线拟合方程,获得所述多个顶点坐标。
优选地,所述顶点坐标包括第一顶点坐标、第二顶点坐标及第三顶点坐标的至少一种;其中,所述第一顶点坐标为初始图像中投影区域的顶点坐标;
所述第一透视变换参数获得模块包括:
第二顶点坐标获得子模块,用于调整坐标系的预设原点,根据所述第一顶点坐标获得所述第二顶点坐标;
投影区域偏移量获取子模块,用于获取投影区域偏移量;
第三顶点坐标获得子模块,用于根据所述投影区域偏移量调整所述第一顶点坐标,获得第三顶点坐标;
第一透视变换参数获得子模块,用于根据所述第二顶点坐标及所述第三顶点坐标进行矩阵变换,获得第一透视变换参数。
优选地,所述第二特征点坐标获得模块包括:
输出特征点坐标获得子模块,用于将所述多个第一特征点坐标及所述第一透视变换参数输入至透视变换矩阵,获取输出的特征点坐标;
第二特征点坐标获得子模块,用于将所述输出的特征点坐标进行去噪声,获得相应的多个第二特征点坐标。
优选地,所述第二透视变换参数获得模块包括:
第二透视变换参数获得子模块,用于将所述多个第二特征点坐标及所述多个第三特征点坐标进行矩阵变换,获得所述第二透视变换参数。
优选地,所述校正参数获得模块包括:
第四特征点坐标获取子模块,用于将所述多个第二特征点坐标及所述第二透视变换参数输入至透视变换矩阵,获取多个第四特征点坐标;
校正参数计算子模块,用于根据所述第四特征点坐标及所述第三特征点坐标计算出所述校正参数。
优选地,所述调整模块包括:
缩小子模块,用于根据所述校正参数缩小所述投影图像。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还公开了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的投影设备的校正的步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的投影设备的校正的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种投影设备的校正方法和一种投影设备的校正装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。