发明内容
本发明要解决的技术问题在于,针对现有技术使用巨幕时,无法使多个小屏幕的边缘处完全对齐的缺陷,提供一种实现投影屏幕的无缝对齐的图像处理方法及***。
本发明解决其技术问题所采用的技术方案是:构造了一种实现投影屏幕的无缝对齐的图像处理方法,所述方法包括以下步骤:
S1图像分配器载入用户预先保存的网格图像;
S2.在D3D表面根据贝塞尔定律分别调整所述网格图像中相邻网格曲线上的控制点、以及曲面上的控制点,以实现投影屏幕的相邻网格的边缘无缝对齐;
S3.将调整后的网格图像保存至网格文件中;
S4.图像演示器实时显示在D3D表面调整后的网格图像。
在本发明所述的方法中,其特征在于,所述步骤S1之前还包括:
S0.在视频混合渲染器上根据图像分配器和图像演示器分别创建D3D对象、以及分配至少一个D3D表面。
在本发明所述的方法中,所述步骤S2进一步包括:
S21.判断所述网格图像中相邻网格之间的边缘差别是否大于预设值,若是,则在D3D表面根据贝塞尔定律调整所述网格图像中相邻网格曲面上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐,若否,则在D3D表面根据贝塞尔定律调整所述网格图像中相邻网格曲线上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐。
在本发明所述的方法中,所述步骤S2还包括:
S22.在D3D表面根据贝塞尔定律调整所述网格图像中相邻网格交叉的控制点,以实现投影屏幕的相邻网格交叉位置的无缝对齐。
在本发明所述的方法中,所述步骤S2还包括:
S23.在D3D表面调整所述网格图像中相邻网格的像素点,以实现投影屏幕的相邻网格的明暗度一致。
本发明还构造了一种实现投影屏幕的无缝对齐的***,所述***包括:
图像分配器,用于载入用户预先保存的网格图像;
曲面曲线调整模块,用于在D3D表面根据贝塞尔定律分别调整所述网格图像中相邻网格曲线上的控制点、以及曲面上的控制点,以实现投影屏幕的相邻网格的边缘无缝对齐;
保存模块,用于将调整后的网格图像保存至网格文件中;
图像演示器,用于实时显示在D3D表面调整后的网格图像。
在本发明所述的***中,其特征在于,所述***还包括:
图像创建分配模块,用于在视频混合渲染器上根据图像分配器和图像演示器分别创建D3D对象、以及分配至少一个D3D表面。
在本发明所述的***中,所述调整模块进一步包括:
判断单元,用于判断所述网格图像中相邻网格之间的边缘差别是否大于预设值,若是,则调整所述网格图像中相邻网格曲面上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐,若否,则调整所述网格图像中相邻网格曲线上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐。
在本发明所述的***中,所述***还包括:
交叉点调整模块,用于在D3D表面根据贝塞尔定律调整所述网格图像中相邻网格交叉的控制点,以实现投影屏幕的相邻网格交叉位置的无缝对齐。
在本发明所述的***中,所述***还包括:
像素点调整模块,用于在D3D表面调整所述网格图像中相邻网格的像素点,以实现投影屏幕的相邻网格的明暗度一致。
实施本发明的实现投影屏幕的无缝对齐的图像处理方法及***,根据贝塞尔定律通过分别调整网格图像中相邻网格曲线上的控制点、以及曲面上的控制点,实现了投影屏幕的无缝对齐,使图像平滑整齐,并利用D3D的各种特效对图像进行处理。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参考图1,为根据本发明的实现投影屏幕的无缝对齐的图像处理方法实施例一的流程图。如图1所示,该方法开始于步骤S100,在视频混合渲染器上根据图像分配器和图像演示器分别创建D3D对象、以及分配至少一个D3D表面,以处理并显示网格图像,在本发明的各种实施例中,整幅图像是由网格组成的,所以叫网格图像,网格图像中的网格的大小可由用户自己定义,相邻网格交叉的位置就是点,网格上一行或者一列的线段组成曲线,曲线的集合就是曲面,如图1A所示,例如,P1,P2,....是交叉点,(P1,P2,P3),(P1,P4,P7,P10)是曲线,P1,P3,P10,P12是曲面,在此不一一列举。
随后,下一步骤S200,图像分配器载入用户预先保存的网格图像。
随后,下一步骤S300,在D3D表面根据贝塞尔定律分别调整网格图像中相邻网格曲线上的控制点、以及曲面上的控制点,以实现投影屏幕的相邻网格的边缘无缝对齐,在本发明的各种实施例中,相邻网格曲线上的控制点、以及曲面上的控制点是通过鼠标控制的。
下面简单介绍一下贝塞尔定律,对于网格曲线上给定的点P0、P1、...、Pn,其n阶贝塞尔曲线为:
其中,n为大于0的自然数,优选地,当n=1时,为线性贝塞尔曲线。
上述公式还可用递归的形式表达,采用
表示由点P0、P1、...、Pn所决定的贝塞尔曲线。则其n阶贝塞尔曲线可表示为:
简单的说,n阶的贝塞尔曲线,即双n-1阶贝塞尔曲线之间的插值。
相应地,贝塞尔曲面由贝塞尔曲线方程构建,一般使用三次曲线方程构建贝塞尔曲面,一条曲线需要四个控制点,那么整个曲面则需要16个控制点,本领域的技术人员应当了解,这里不再赘述。
随后,下一步骤S400,将调整后的网格图像保存至网格文件中。
该方法结束于步骤S500,图像演示器实时显示在D3D表面调整后的网格图像。
请参考图2,为根据本发明的实现投影屏幕的无缝对齐的图像处理方法实施例二的流程图。如图2所示,该方法开始于步骤S100,在视频混合渲染器上根据图像分配器和图像演示器分别创建D3D对象、以及分配至少一个D3D表面,以处理并显示网格图像。
随后,下一步骤S200,图像分配器载入用户预先保存的网格图像。
随后,下一步骤S310,判断网路图像中相邻网格之间的边缘差别是否大于预设值,若是,则在D3D表面根据贝塞尔定律调整网络图像中相邻网格曲面上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐,若否,则在Direct3D表面根据贝塞尔定律调整网络图像相邻网格曲线上的控制点,以实现投影屏幕的相邻网格之间的边缘无缝对齐,转步骤S400,简单的说,如果相邻网格之间的边缘差别太大,则可在边缘选一个面进行无缝对齐,如果相邻网格之间的边缘差别不大,则可在边缘选一个线进行无缝对齐,在本发明的实施例中,预设值是***或者根据用户的需求进行设置。
或者,下一步骤S320,在Direct3D表面根据贝塞尔定律调整网络图像中相邻网格交叉的控制点,以实现投影屏幕的相邻网格交叉位置的无缝对齐,转步骤S400。
或者,下一步骤S330,在D3D表面调整相邻网格的像素点,以实现投影屏幕的相邻网格的明暗度一致,转步骤S400。
在本发明的各种实施例中,在D3D表面对网格图像进行处理可使用以下快捷键进行切换,例如:
E 切换编辑模式
ALT+1 选点模式
ALT+2 选线模式
ALT+3 选面模式
S 将编辑结果保存到网格文件
L 载入已有的网格图像
+ 画面变亮
- 画面变暗
ESC 清除当前选择
随后,下一步骤S400,将调整后的网格图像保存至网格文件中。
该方法结束于步骤S500,图像演示器实时显示在D3D表面调整后的网格图像。
上述步骤在各自独立的模块内完成,并不影响现有软件的处理步骤,只需指定处理容器,就可对网格图像进行处理并输出,其中,网格文件输出是标准的网格文件,因此支持MAYA,3DMAX等专业的3D建模软件对视频效果进行编辑。
请参考图3,为根据本发明的实现投影屏幕的无缝对齐的图像处理***的结构示意图。如图3所示,该***包括图像创建分配模块1、图像分配器2、曲面曲线调整模块3、交叉点调整模块4、像素点调整模块5、保存模块6以及图像演示器7,其中,曲面曲线调整模块3包括判断单元31,下面具体说明各个部分:
图像创建分配模块1,用于在视频混合渲染器上根据图像分配器2和图像演示器7分别创建D3D对象、以及分配至少一个D3D表面,以处理并显示网格图像。
图像分配器2,用于载入用户预先保存的网格图像。在本发明的实施例中,通过以下程序可实现图像分配器2,该程序是与外部应用程序通讯的接口,外部应用程序通过提供的图像分配器2载入网格图像。
IVMRSurfaceA11ocator9:public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE InitializeDevice(
/* [in] */DWORD_PTR dwUserID,
/* [in] */VMR9A11ocationInfo *1pA11ocInfo,
/* [out][in]*/DWORD *1pNumBuffers)=0;
virtual HRESULT STDMETHODCALLTYPE TerminateDevice(
/*[in]*/DWORD_PTR dwID)=0;
virtual HRESULT STDMETHODCALLTYPE GetSurface(
/* [in] */DWORD_PTR dwUserID,
/* [in] */DWORD SurfaceIndex,
/* [in] */DWORD SurfaceFlags,
/* [out]*/IDirect3DSurface9**1p1pSurface)=0;
virtual HRESULT STDMETHODCALLTYPE AdviseNotify(
/*[in]*/IVMRSurfaceA11ocatorNotify9*1pIVMRSurfA11ocNotify)=0;
};
曲面曲线调整模块3,用于在D3D表面根据贝塞尔定律分别调整网络图像中相邻网格曲线上的控制点、以及曲面上的控制点,以实现投影屏幕的相邻网格的边缘无缝对齐。
交叉点调整模块4,用于在D3D表面根据贝塞尔定律调整网络图像中相邻网格交叉的控制点,以实现投影屏幕的相邻网格交叉位置的无缝对齐。
像素点调整模块5,用于在Direct3D表面调整相邻网格的像素点,以实现投影屏幕的相邻网格的明暗度一致。
保存模块6,将调整后的网格图像保存至网格文件中。
图像演示器7,用于实时显示在D3D表面调整后的网格图像。在本发明的实施例中,通过以下程序可实现图像演示器7,该程序是与外部应用程序通讯的接口,外部应用程序通过提供的图像演示器7实时显示在D3D表面调整后的网格图像。
IVMRImagePresenter9:public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE StartPresenting(
/* [in] */ DWORD_PTR dwUserID)=0;
virtual HRESULT STDMETHODCALLTYPE StopPresenting(
/* [in] */ DWORD_PTR dwUserID)=0;
virtual HRESULT STDMETHODCALLTYPE PresentImage(
/* [in] */ DWORD_PTR dwUserID,
/* [in] */ VMR9PresentationTnfo *1pPresInfo)=0;
};
判断单元31,用于判断网格图像中相邻网格之间的边缘差别是否大于预设值,若是,则在D3D表面根据贝塞尔定律分别调整网络图像中相邻网格曲面上的控制点,以实现投影屏幕的所述相邻网格之间的边缘无缝对齐,若否,则在D3D表面根据贝塞尔定律调整网络图像中相邻网格曲线上的控制点,以实现投影屏幕的所述相邻网格之间的边缘无缝对齐。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。