图像处理方法、装置和设备
技术领域
本发明涉及计算机技术领域,尤其涉及图像处理方法、装置和设备。
背景技术
目前投影技术的应用很广泛,比如,会议室中开会时,常常需要汇报人员将电脑中的内容投影到指定的屏幕上。如果投影效果不好则需要工作人员手动调整。
在现有技术中,如果投影仪所投射的影像发生形变(比如,扭曲为梯形),则需要工作人员手动对投影仪投影效果进行调整,该调整过程,往往是通过调投影镜头的角度或位置,或者通过移轴的方式调整;调整效果不是很好,而且调整效率比较低。还有很多投影仪只能针对发生水平便宜进行调整,无法实现多方向同时调整。
基于此,需要一种简单、高效的对投影图像进行处理以便实现无形变投影的方案。
发明内容
有鉴于此,本发明实施例提供图像处理方法、装置和设备,本发明需要一种简单、高效的对投影图像进行处理以便实现无形变投影的方案。
第一方面,本发明实施例提供一种图像处理方法,包括:
获取基于原图像投影生成的第一投影图像的倾斜角度;
根据所述第一投影图像的倾斜角度,确定第二投影图像的第一顶点位置信息;
根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,确定用于坐标转换的变化矩阵;
利用所述变化矩阵对所述原图像中各像素的进行坐标转换以获得目标图像。
第二方面,本发明实施例提供一种图像处理装置,包括:
获取模块,用于获取基于原图像投影生成的第一投影图像的倾斜角度
第一计算模块,用于根据所述第一投影图像的倾斜角度,确定得到第二投影图像的第一顶点位置信息;
第二计算模块,用于根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,确定用于坐标转换的变化矩阵;
转换模块,用于利用所述变化矩阵对所述原图像中各像素的进行坐标转换以获得目标图像。
第三方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面中的图像处理方法。该电子设备还可以包括通信接口,用于与其他设备或通信网络通信。
本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第一方面中的图像处理方法。
本发明实施例提供的图像处理方法,根据原图像投影获得的第一投影图像倾斜角度等数据计算得到对应的第二投影图像。进一步地,根据原图像的第二顶点位置信息和第二投影图像的第一顶点位置信息计算得到用于进行坐标转换的变化矩阵。利用该变化矩阵的逆矩阵,将原图像进行坐标转换得到目标图像。基于该图像处理方案,不仅可以实现对原图像自动转换为目标图像,还可以实现对水平方向和垂直方向的图像处理;能够简化对投影图像的调整方法,提升图像调整效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种投影效果的结构示意图;
图2为本发明实施例提供的图像处理方法的流程示意图;
图3为本发明实施例提供的第一投影图像与第二投影图像的结构示意图;
图4为本发明实施例提供的图像处理装置的示意图;
图5为与图4所示实施例提供的图像处理装置对应的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
在介绍本发明实施例提供的图像处理方法之前,先对后续实施例中涉及到的一些概念和坐标确定的基本原理进行说明。
这里所说的原图像可以理解为通过投影模块(比如,投影仪)投射出的标准原始图像,该原图像没有发生形变,假设该投影设备具有的解像力为nWitch*nHeight,对应的原图像的四个顶点的坐标可以为(0,0)、(nWidth-1,0)、(0,nHeight-1)和(nWidth-1,nHeight-1)。
如图1所示,基于投影模块(比如,投影仪的镜头)向前方屏幕进行投影,若投影模块与屏幕之间不是垂直关系,而是存在小于九十度角的夹角,则呈现在屏幕上的图像不是规矩的矩形,而且发生形变后的梯形投影。进一步地,基于投影模块A与投影得到的原图像四个顶点(分别为B、C、D、E)构建的椎体,所述第一投影图像是由于投影模块与用于呈现投影的屏幕之间存在夹角(换言之,投影模块的光轴与屏幕不是垂直关系),那么得到的第一投影图像的四个顶点为图中B1、C1、D、E。为了能够使得原图像在投影到屏幕之间就进行调整,可以调整原始图像各像素点对应的坐标,使得图像发生反向形变,生成第二投影图像,第二投影图像的四个顶点是B、C、D1、E1。需要说明的是,第一投影图像的倾斜角与第二投影图像的倾斜角角度大小相同,方向相反。
这里所说的倾斜角度是第一投影图像与原图像之间的夹角;容易理解,在实际应用中,第一投影图像与原图像之间产生夹角的方向可以是水平方向夹角,也可以是垂直方向夹角;若是水平方向产生夹角,则第一投影图像在水平方向上发生形变为梯形投影,若是垂直方向产生夹角,则第一投影图像在垂直方向上发生形变为梯形投影。
图2为本发明实施例提供的图像处理方法的流程图,本实施例中的图像处理方法可以由投影仪装置来执行。如图2所示,该方法包括如下步骤:
步骤S202:获取基于原图像投影生成的第一投影图像的倾斜角度。
在实际应用中,若投影仪与屏幕之间是垂直的关系,投影仪投射到屏幕上的图像是标准的原图像,一般来说,常见的投影仪所投射的图像是矩形,如图1中的图形BCDE。原图像按照投影设备的分辨率进行投影显示,也就是原图像中各坐标对应的像素点的像素值是根据投影设备参数投影呈现的。
如前文所述可知,第一投影图像是如图1中的B1C1DE。需要说明的是,有的情况中,第一投影图像并不是四边形,还可能是三角形或者五边形等,对应的顶点的数量也变为三个顶点或者五个顶点。在本申请中举例说明四个顶点的第一投影图像,并不构成对本申请技术方案的限制。
步骤S204:根据所述第一投影图像的倾斜角度,确定第二投影图像的第一顶点位置信息。
如前文所述可知,在不改变投影模块与屏幕之间的物理关系(比如,夹角、距离等)时,若要使得投影到屏幕上的原第一投影图像变为矩形,则需要对投影模块投射出的图像进行反向调整,换言之,要使得待投射的第二投影图像与第一投影图像具有相同的边长和倾斜角度值,但是倾斜角度的方向相反。
这里所说的第二投影图像如图1中BCD1E1所构成的图形所示。第一顶点位置信息,可以理解为包括第二投影图像中四个顶点与投影装置的距离,顶点基于原图像的坐标信息等等。
步骤S206:根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,确定用于坐标转换的变化矩阵。
需要说明的是,这里所说的第二顶点位置信息,可以理解为顶点B1、顶点C1、顶点D和顶点E这四个点的相关位置信息。这里所说的相关位置信息包括顶点与投影装置的距离,顶点基于原图像的坐标信息等等。第一顶点位置信息可以理解为第二投影图像的四个顶点的坐标。
容易理解,若投影装置与屏幕之间的物理位置关系不能发生变动,那么可以通过调整投影装置在投影前各像素点的坐标位置。换言之,在投影图像发生形变为梯形投影之前,先对调整投影仪各待投像素点对应的坐标以及像素值。以便可以得到调整后的矩形投影图像。
步骤S208:利用所述变化矩阵对所述原图像中各像素的进行坐标转换以获得目标图像。
在实际应用中,由于需要将原图像中各像素点的坐标转换为目标图像中的坐标,因此,需要将根据前文所述得到的矩阵转换为逆矩阵。其中,原图像中的各个像素点的坐标称为第一坐标,容易理解,在原图像中可以有多个第一坐标。
进一步地,将第一坐标与逆矩阵相乘得到第二坐标,基于该第二坐标使得原图像中各像素得以呈现在目标图像中。
在本说明书一个或者多个实施例中,所述第一投影图像的倾斜角度为所述第一投影图像与所述原图像之间的夹角。
如图3所示可知,由于投影模块与屏幕之间存在夹角,导致投影图像发生形变。所述第一投影图像的倾斜角度可以理解为第一投影图像与所述第一投影图像的水平投影之间的夹角;也可以理解为是投影模块光轴与投影屏幕之间的夹角,或者是深度模组光轴与投影屏幕之间的夹角。
在本说明书一个或者多个实施例中,所述第一投影图像为四边形的图像;
所述获取基于原图像投影生成的第一投影图像的倾斜角度,包括:获取所述第一投影图像的四个顶点到深度模组之间的深度距离;基于所述四个顶点的所述深度距离确定所述倾斜角度。
需要说明的是,这里所说的深度距离,可以理解为深度模组获取到的深度模组举例投影屏幕之间的距离。在本申请实施例中,为了能够精准的测量深度模组与第一投影图像各顶点的距离,需要将深度模组与投影模块平行设置,在同一个水平面,并且,深度模组的光轴(换言之,中心轴)与投影模块的光轴(中心轴)是平行的,以便于投影屏幕与投影模块光轴之间的夹角,和投影屏幕与深度模组的光轴之间的夹角相同;当然,这里所说的夹角相同并非完全一致,可能因为测量精度或者外界因素等影响导致两个夹角存在可接受的微小偏差。
具体来说,如图3所示,假设,AB1之间的距离是S1,AC1之间的距离是S2,AD之间的距离是S3、AE之间的距离是S4。我们以B1C1所在的与投影模块平面平行的面作为参考面S,该面会与投影模块与D、E所在直线相交在D1、E1点,由此B1、C1、D、E就在平面S上,其中,B1C1的中点与投影模块的距离成为S5;我们根据公式:D1C1=2*S5*sin(a/2);D1C1即为D1与C1之间的实际物理距离值。进一步地,由公式x=arctan((S3-S1)/D1S2),就可求出水平梯形倾斜角度。
在本说明书一个或者多个实施例中,所述根据所述第一投影图像的倾斜角度,计算得到第二投影图像的第一顶点位置信息,具体可以包括:获取所述第一投影图像的倾斜角度的相反数;根据所述原图像的四个顶点坐标、所述深度距离、所述倾斜角度的相反数,得到所述第二投影图像的第一顶点位置信息。
在实际应用中,为了能够测得深度距离,可以通过深度模组进行测量。如图3所示,测得的第一投影图像四个顶点B1、C1、D、E与深度模组或者投影模块之间的距离分别是S1、S2、S3和S4。需要说明的是,深度模组与投影模块是平行设置的,所以在计算距离时,可以基于深度模组或者投影模块进行计算,计算得到的距离值是相近的。为了能够直接获取深度距离,在本申请实施例中通过深度模组直接获取深度距离。
在得到深度距离之后,基于投影模块投影得到该四个顶点在原图像中的坐标。如图3所示,具体来说:根据前文所述可以计算得出的倾斜角度,以及原图像的宽度nWidth、原图像的高度nHeight。由图可知,可以求得H,由投影模块的视场角FOV为b,进一步地,可以求得FL的长度,根据(FL-H)/FL=B1C1/DE,其中我们知道DE是图像高nHeight,故B1C1的长度就可以求得,那梯形四个顶点的位置就可以得出。
在本说明书一个或者多个实施例中,所述第二顶点位置信息包括所述原图像的四个顶点坐标,所述第一顶点位置信息包括所述第二投影图像的四个顶点坐标;
所述根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,计算得到用于进行坐标转换的变化矩阵,可以包括:根据第一投影图像的四个顶点坐标和所述第二投影图像的四个顶点坐标,利用Opencv算法计算得到用于进行坐标转换的变化矩阵。
具体来说,假设投影模块的解像力为nWidth-1*nHeight-1,对应的,原图像的四个顶点坐标分别为(0,0)(nWidth-1,0)(0,nHeight-1)(nWidth-1,nHeight-1);第二投影图像的四个顶点做包分别为(0,0)(X1,0)(X2,Y1)(X2,Y2)。利用OpenCV算法,可以基于上述四个顶点坐标值计算出。
其中,表示图像线性变换;
T2=[a13 a23]T用于产生图像透视变换;
T3=[a31 a32]表示图像平移。
在本说明书一个或者多个实施例中,利用所述变化矩阵对所述原图像中各像素的第一坐标进行坐标转换生成第二坐标,可以包括:获取所述变化矩阵的逆矩阵;将原图像中各像素的第一坐标与所述逆矩阵相乘,得到对应的第二坐标,确定所述第一坐标与所述第二坐标之间的关联关系。
如前文所述可知,由于投影模块与屏幕之间存在夹角,导致投影模块投射到屏幕上所显示的图像发生形变(比如,变为梯形)。为了使得原图像中的各像素点对应呈现在目标图像中,需要将第一坐标利用逆矩阵转换得到第二坐标,并将对应的像素值显示在对应的第二坐标中。由于第二坐标与第一坐标并非严格的一一对应的关系,因此,需要对像素值进行调整,以便目标图像能够以矩形的形式展示原图像中的内容。
在本说明书一个或者多个实施例中,将所述原图像中各像素通过所述第二坐标呈现在目标图像中的方式,可以包括:基于所述第一坐标和所述第二坐标之间的关联关系,根据四个所述第一坐标对应的像素值转换为一个所述第二坐标的像素值;确定所述目标图像中各像素点的像素值,以便呈现所述目标图像。
如前文所述可知,由于第一坐标与第二坐标之间并非一一对应的关系,所以将原图像中的像素显示在由第二坐标构成的目标图像中时,需要根据第一坐标与第二坐标之间的关联关系,利用双线性插值法将原图像中的各像素值转换为目标图像中的像素值。
举例来说,假如想得到未知函数f在点P=(x,y)的值,假设已知函数f在Q11=(x1,y1)、Q12=(x1,y2),Q21=(x2,y1)以及Q22=(x2,y2)四个点的值。最常见的情况,f就是一个像素点的像素值。首先在x方向进行线性插值,得到
然后在y方向进行线性插值,得到
综合起来就是双线性插值最后的结果:
在本说明书一个或者多个实施例中,若所述第二坐标超过原图像坐标的范围,则对该所述第二坐标的像素值进行调整。
需要说明的是,假设,原图像坐标范围为(0,0)~(nWidth-1,nHeight-1)在利用变化矩阵对第一坐标进行转换时,如果转换得到的第二坐标超过原图像坐标的范围,包括:如小于0,或是大于(nWidth-1)/(nHeight-1),那个该目标坐标的像素用(0,0,0)来补齐,当然也可以用(255,255,255)补齐。对于其他在阈值范围内的根据双线性插值法获得该目标图像各点的像素数据值,完成由原图像(正常矩形图像)转换为第二投影图像(梯形图像)的变换。
基于同样的思路,如图4所示,本申请实施例还提供一种图像处理装置,包括:
获取模块41,用于获取基于原图像投影生成的第一投影图像的倾斜角度;
第一计算模块42,用于根据所述第一投影图像的倾斜角度,确定第二投影图像的第一顶点位置信息;
第二计算模块43,用于根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,确定用于坐标转换的变化矩阵;
转换模块44,用于利用所述变化矩阵对所述原图像中各像素的进行坐标转换以获得目标图像。
需要说明的是,所述第一投影图像的倾斜角度为所述第一投影图像与所述原图像之间的夹角。
所述第一投影图像为四边形的图像;
所述获取模块41,用于获取所述第一投影图像的四个顶点到深度模组之间的深度距离;基于所述四个顶点的所述深度距离计算确定所述倾斜角度。
所述第一计算模块42,用于获取所述第一投影图像的倾斜角度的相反数;
根据所述原图像的四个顶点坐标、所述深度距离、所述倾斜角度的相反数,得到所述第二投影图像的第一顶点位置信息。
需要说明的是,所述第二顶点位置信息包括所述原图像的四个顶点坐标,所述第一顶点位置信息包括所述第二投影图像的四个顶点坐标;
所述第二计算模块43,用于根据第一投影图像的四个顶点坐标和所述第二投影图像的四个顶点坐标,利用Opencv算法计算得到用于进行坐标转换的变化矩阵。
所述转换模块44,用于获取所述变化矩阵的逆矩阵;
将原图像中各像素的第一坐标与所述逆矩阵相乘,得到对应的第二坐标,确定所述第一坐标与所述第二坐标之间的关联关系。
所述转换模块44,用于基于所述第一坐标和所述第二坐标之间的关联关系,根据四个所述第一坐标对应的像素值转换为一个所述第二坐标的像素值;确定所述目标图像中各像素点的像素值,以便将所述原图像转换呈现为所述目标图像。
需要说明的是,若所述第二坐标超过原图像坐标的范围,则对该所述第二坐标的像素值进行调整。
上描述了坐标确定装置的内部功能和结构,在一个可能的设计中,坐标确定装置的结构可实现为一电子设备,该电子设备比如为智能投影设备、景深模组等,如图5所示,该电子设备可以包括:处理器51和存储器52。其中,所述存储器52用于存储支持电子设备执行上述图1-图4所示实施例中提供的图像处理方法的程序,所述处理器51被配置为用于执行所述存储器52中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器51执行时能够实现如下步骤:
获取基于原图像投影生成的第一投影图像的倾斜角度;
根据所述第一投影图像的倾斜角度,确定第二投影图像的第一顶点位置信息;
根据所述原图像的第二顶点位置信息和所述第一顶点位置信息,确定用于坐标转换的变化矩阵;
利用所述变化矩阵对所述原图像中各像素的进行坐标转换以获得目标图像。
可选地,所述处理器51还用于执行前述图1-图4所示实施例中的全部或部分步骤。
其中,所述电子设备的结构中还可以包括通信接口53,用于该电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图1-图4所示方法实施例中图像处理方法所涉及的程序。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程坐标确定设备的处理器以产生一个机器,使得通过计算机或其他可编程坐标确定设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程坐标确定设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程坐标确定设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。