CN102750726B - 一种基于OpenGL实现景深效果的方法 - Google Patents
一种基于OpenGL实现景深效果的方法 Download PDFInfo
- Publication number
- CN102750726B CN102750726B CN201110370718.6A CN201110370718A CN102750726B CN 102750726 B CN102750726 B CN 102750726B CN 201110370718 A CN201110370718 A CN 201110370718A CN 102750726 B CN102750726 B CN 102750726B
- Authority
- CN
- China
- Prior art keywords
- information
- depth
- cache information
- color cache
- pixel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明实施例公开了一种基于OpenGL实现景深效果的方法,所述方法包括以下步骤:获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息;根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息;计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息;根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息并对所述图像进行渲染。本发明的实施例中,通过基于OpenGL的Mipmap原理与泊松分布结合,计算不同层级的图像场景信息实现景深,提高了实现景深的效率和效果。
Description
技术领域
本发明涉及图像/视频处理领域,尤其涉及一种基于OpenGL实现景深效果的方法。
背景技术
景深是指在摄影机镜头或其他成像器前沿着能够取得清晰图像的成像景深相机器轴线所测定的物体距离范围。在聚焦完成后,在焦点前后的范围内都能形成清晰的像,这一前一后的距离范围,便叫做景深。在镜头前方(调焦点的前、后)有一段一定长度的空间,当被摄物体位于这段空间内时,其在底片上的成像恰位于焦点前后这两个弥散圆之间。被摄体所在的这段空间的长度,就叫景深。换言之,在这段空间内的被摄体,其呈现在底片面的影象模糊度,都在容许弥散圆的限定范围内,这段空间的长度就是景深。在图像/视频处理软件中,经常要用到三维合成器来实现许多三维合成效果,在真实的三维世界中,景深是很重要的效果,因此景深的实现在三维合成器中是不可或缺的。
像素深度是指存储每个像素所用的位数,它也是用来度量图像的分辨率。像素深度决定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。例如,一幅彩色图像的每个像素用R,G,B三个分量表示,若每个分量用8位,那么一个像素共用24位表示,就说像素的深度为24,每个像素可以是16 777 216(2的24次方)种颜色中的一种。在这个意义上,往往把像素深度说成是图像深度。表示一个像素的位数越多,它能表达的颜色数目就越多,而它的深度就越深。虽然像素深度或图像深度可以很深,但各种VGA的颜色深度却受到限制。例如,标准VGA支持4位16种颜色的彩色图像,多媒体应用中推荐至少用8位256种颜色。由于设备的限制,加上人眼分辨率的限制,一般情况下,不一定要追求特别深的像素深度。此外,像素深度越深,所占用的存储空间越大。相反,如果像素深度太浅,那也影响图像的质量,图像看起来让人觉得很粗糙和很不自然。在用二进制数表示彩色图像的像素时,除R,G,B分量用固定位数表示外,往往还增加1位或几位作为属性(Attribute)位。例如,RGB 5:5:5表示一个像素时,用2个字节共16位表示,其中R,G,B各占5位,剩下一位作为属性位。在这种情况下,像素深度为16位,而图像深度为15位。属性位用来指定该像素应具有的性质。例如在CD-I系统中,用RGB 5:5:5表示的像素共16位,其最高位(b15)用作属性位,并把它称为透明(Transparency)位,记为T。T的含义可以这样来理解:假如显示屏上已经有一幅图存在,当这幅图或者这幅图的一部分要重叠在上面时,T位就用来控制原图是否能看得见。例如定义T=1,原图完全看不见;T=0,原图能完全看见。在用32位表示一个像素时,若R,G,B分别用8位表示,剩下的8位常称为α通道(alpha channel)位,或称为覆盖(overlay)位、中断位、属性位。它的用法可用一个预乘α通道(premultipliedalpha)的例子说明。假如一个像素(A,R,G,B)的四个分量都用规一化的数值表示,(A,R,G,B)为(1,1,0,0)时显示红色。当像素为(0.5,1,0,0)时,预乘的结果就变成(0.5,0.5,0,0),这表示原来该像素显示的红色的强度为1,而现在显示的红色的强度降了一半。用这种办法定义一个像素的属性在实际中很有用。例如在一幅彩色图像上叠加文字说明,而又不想让文字把图覆盖掉,就可以用这种办法来定义像素,而该像素显示的颜色又有人把它称为混合色(key color)。在图像产品生产中,也往往把数字电视图像和计算机生产的图像混合在一起,这种技术称为视图混合(video keying)技术,它也采用α通道。
泊松分布(Poisson distribution),是一种统计与概率学里常见到的离散机率分布(discrete probability distribution),由法国数学家西莫恩·德尼·泊松(Siméon-Denis Poisson)在1838年时发表。
Mpmap是一种电脑图形图像技术,用于在三维图像的二维代替物中达到立体感效应。Mipmap技术与材质帖图技术结合,根据距观看者远近距离的不同,以不同的分辨率将单一的材质帖图以多重图像的形式表现出来并代表平面纹理:尺寸最大的图像放在前面显著的位置,而相对较小的图像则后退到背景区域。每一个不同的尺寸等级定义成一个Mipmap水平。Mipmap技术帮助避免了不想要的锯齿边缘(称为锯齿状图形)在图像中出现,这种锯齿状图形可能是由于在不同分辨率下使用bit map图像产生的。
在基于OpenGL实现景深效果时,把场景的深度信息和场景分别渲染到一张纹理中,然后通过模糊处理后合成新的场景,新的场景中就带有了景深效果。
发明人在完成本发明的过程,发现现有技术存在以下不足:
实现景深的效率低,尤其是在做模糊处理的过程中,高斯模糊处理的方法效率非常低;
实现景深的效果不理想,因为泊松分布采样具有不确定性,限制了景深实现的效果。
发明内容
本发明实施例提供了一种基于OpenGL实现景深效果的方法,本发明的实施例中,通过基于OpenGL的Mipmap原理与泊松分布结合,计算不同层级的图像场景信息,实现景深的效果。
本发明实施例提供了一种基于OpenGL实现景深效果的方法,包括以下步骤:
获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息;
根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息;
计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息;
根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息;
根据所述最终的色彩缓存信息对所述图像进行渲染,实现景深效果。
所述获取图像的原始色彩缓存信息前,包括:
判断图像处理设备是否开启深度缓存且摄像机为渲染模式。
所述获取图像的原始色彩缓存信息,包括:
若开启了深度缓存且摄像机为渲染模式,获取所述深度缓存信息和所述色彩缓存信息;
将所述深度缓存信息和所述色彩缓存信息绑定到指定的纹理中。
所述根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息,包括以下步骤:
A、根据所述深度缓存信息和所述色彩缓存信息计算焦距深度:
B、用所述焦距深度替换所述原始色彩缓存信息中alpha通道的值,得到运算色彩缓存信息;
C、将所述运算色彩缓存信息绑定到指定的纹理中,生成所述新的色彩缓存信息。
所述根据所述深度缓存信息和所述色彩缓存信息计算焦距深度,具体包括:
计算像素点与虚拟视点的距离:
distance=farPlane*nearPlane/((1-depth)*farPlane+depth*nearPlane)
其中,distance为像素点与虚拟视点的距离,farPlane为所述摄像机的远平面,nearPlane为所述摄像机的近平面,depth为像素深度;
计算焦距深度:
d=distance-focalPlaneDistance;
如果d<0,focalDepth=d/(focalPlaneDistance-nearBlurDistance);
如果d>0或者d=0,focalDepth=d/(farBlurDistance-focalPlaneDistance);
其中,d为像素点平面与焦距平面的距离,focalPlaneDistance为焦距平面距离,focalDepth为焦距深度,nearBlurDistance为最近模糊平面距离,farBlurDistance为最远模糊平面距离。
所述计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息,包括:
计算泊松分布圆直径:
discDiameter=abs(focalDepth*2-1)*maxCoC;
其中,discDiameter为像素点级泊松分布圆直径,maxCoC为最大泊松分布圆直径;
计算层级信息:
lod=log2(discDiameter);
其中lod为层级信息。
本发明的实施例中,通过基于OpenGL的Mipmap原理与泊松分布结合,计算不同层级的图像场景信息实现景深,提高了实现景深的效率和效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种基于OpenGL实现景深效果的方法的流程图;
图2是本发明实施例中一种基于OpenGL实现景深效果的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一提供了一种基于OpenGL实现景深效果的方法,如图1所示,包括以下步骤:
步骤S101,获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息。
步骤S102,根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息。
步骤S103,计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息。
步骤S104,根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息。
步骤S105,根据所述最终的色彩缓存信息对所述图像进行渲染,实现景深效果。
本发明的实施例中,通过基于OpenGL的Mipmap原理与泊松分布结合,计算不同层级的图像场景信息实现景深,提高了实现景深的效率和效果。
本发明实施例二提供了一种基于OpenGL实现景深效果的方法,如图2所示,包括以下步骤:
步骤S201,判断所述图像处理设置的缓存信息是否开启,所述摄像机是否为渲染模式;
若开启了深度缓存且摄像机为渲染模式,获取所述深度缓存信息和色彩缓存信息,继续执行步骤S202;否则继续执行步骤S201。
步骤S202,获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息,将所述深度缓存信息和所述色彩缓存信息绑定到指定的纹理中。
步骤S203,根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息,具体包括:
A、根据所述深度缓存信息和所述色彩缓存信息计算焦距深度,包括:
计算像素点与虚拟视点的距离,如公式1所示:
distance=farPlane*nearPlane/((1-depth)*farPlane+depth*nearPlane) (1)
其中,distance为像素点与虚拟视点的距离,farPlane为所述摄像机的远平面,nearPlane为所述摄像机的近平面,depth为像素深度;
计算焦距深度,如公式2至4所示:
d=distance-focalPlaneDistance (2)
如果d<0,
focalDepth=d/(focalPlaneDistance-nearBlurDistance) (3)
如果d>0或者d=0,
focalDepth=d/(farBlurDistance-focalPlaneDistance) (4)
其中,d为像素点平面与焦距平面的距离,focalPlaneDistance为焦距平面距离,focalDepth为焦距深度,nearBlurDistance为最近模糊平面距离,farBlurDistance为最远模糊平面距离;
B、用所述焦距深度替换所述原始色彩缓存信息中alpha通道的值,得到运算色彩缓存信息;
C、将所述运算色彩缓存信息绑定到指定的纹理中,生成所述新的色彩缓存信息。
步骤S204,计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息,包括:
计算泊松分布圆直径,如公式5所示:
discDiameter=abs(focalDepth*2-1)*maxCoC (5)
其中,
discDiameter为像素点级泊松分布圆直径;
maxCoC为最大泊松分布圆直径。
计算层级信息(level of detail,lod),如公式6所示:
lod=log2(discDiameter) (6)
其中根据经验,lod最大值为3比较合适,因此可以进行限幅。
步骤S205,根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息。
步骤S206,根据所述最终的色彩缓存信息对所述图像进行渲染,实现景深效果。
本发明的实施例中,通过基于OpenGL的Mipmap原理与泊松分布结合,计算不同层级的图像场景信息实现景深,提高了实现景深的效率和效果。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于OpenGL实现景深效果的方法,其特征在于,包括以下步骤:
获取图像的原始色彩缓存信息,所述原始色彩缓存信息包括深度缓存信息和色彩缓存信息;
根据所述深度缓存信息和所述色彩缓存信息计算新的色彩缓存信息;包括以下步骤:
A、根据所述深度缓存信息和所述色彩缓存信息计算焦距深度:
B、用所述焦距深度替换所述原始色彩缓存信息中alpha通道的值,得到运算色彩缓存信息;
C、将所述运算色彩缓存信息绑定到指定的纹理中,生成所述新的色彩缓存信息;
所述根据所述深度缓存信息和所述色彩缓存信息计算焦距深度,具体包括:
计算像素点与虚拟视点的距离:
distance=farPlane*nearPlane/((1-depth)*farPlane+depth*nearPlane)
其中,distance为像素点与虚拟视点的距离,farPlane为摄像机的远平面,nearPlane为所述摄像机的近平面,depth为像素深度;
计算焦距深度:
d=distance-focalPlaneDistance
如果d<0,focalDepth=d/(focalPlaneDistance-nearBlurDistance)
如果d>0或者d=0,focalDepth=d/(farBlurDistance-focalPlaneDistance)
其中,d为像素点平面与焦距平面的距离,focalPlaneDistance为焦距平面距离,focalDepth为焦距深度,nearBlurDistance为最近模糊平面距离,farBlurDistance为最远模糊平面距离;
计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息;
根据所述原始色彩缓存信息、所述新的色彩缓存信息、所述像素点的泊松分布圆直径和所述图像层级信息计算最终的色彩缓存信息;
根据所述最终的色彩缓存信息对所述图像进行渲染,实现景深效果。
2.如权利要求1所述一种基于OpenGL实现景深效果的方法,其特征在于,所述获取图像的原始色彩缓存信息前,包括:
判断图像处理设备是否开启深度缓存且摄像机为渲染模式。
3.如权利要求2所述一种基于OpenGL实现景深效果的方法,其特征在于,所述获取图像的原始色彩缓存信息,包括:
若开启了深度缓存且摄像机为渲染模式,获取所述深度缓存信息和所述色彩缓存信息;
将所述深度缓存信息和所述色彩缓存信息绑定到指定的纹理中。
4.如权利要求1所述一种基于OpenGL实现景深效果的方法,其特征在于,所述计算所述图像的像素点的泊松分布圆直径,根据所述像素点的泊松分布圆直径计算图像层级信息,包括:
计算泊松分布圆直径:
discDiameter=abs(focalDepth*2-1)*maxCoC
其中,discDiameter为像素点级泊松分布圆直径,maxCoC为最大泊松分布圆直径;
计算层级信息:
lod=log2(discDiameter)
其中lod为层级信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110370718.6A CN102750726B (zh) | 2011-11-21 | 2011-11-21 | 一种基于OpenGL实现景深效果的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110370718.6A CN102750726B (zh) | 2011-11-21 | 2011-11-21 | 一种基于OpenGL实现景深效果的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750726A CN102750726A (zh) | 2012-10-24 |
CN102750726B true CN102750726B (zh) | 2017-09-19 |
Family
ID=47030874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110370718.6A Active CN102750726B (zh) | 2011-11-21 | 2011-11-21 | 一种基于OpenGL实现景深效果的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750726B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968814B (zh) * | 2012-11-22 | 2015-11-25 | 华为技术有限公司 | 一种图像渲染的方法及设备 |
CN105574818B (zh) * | 2014-10-17 | 2020-07-17 | 中兴通讯股份有限公司 | 一种景深渲染方法和装置 |
CN106558089B (zh) * | 2015-09-21 | 2019-11-01 | 展讯通信(上海)有限公司 | 图像景深绘制方法及装置 |
CN106384378A (zh) * | 2016-08-31 | 2017-02-08 | 上海交通大学 | 一种基于GPU的广义mipmap插值实时景深渲染方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3366894B2 (ja) * | 2000-03-30 | 2003-01-14 | コナミ株式会社 | 3次元画像合成装置及び方法、情報記憶媒体、プログラム配信装置及び方法 |
CN1396564A (zh) * | 2001-07-09 | 2003-02-12 | 三星电子株式会社 | 用于表示3维情景中基于图像的绘制信息的方法 |
CN101681021A (zh) * | 2007-04-06 | 2010-03-24 | 全球仿生光学有限公司 | 大景深成像系统和虹膜识别系统 |
-
2011
- 2011-11-21 CN CN201110370718.6A patent/CN102750726B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3366894B2 (ja) * | 2000-03-30 | 2003-01-14 | コナミ株式会社 | 3次元画像合成装置及び方法、情報記憶媒体、プログラム配信装置及び方法 |
CN1396564A (zh) * | 2001-07-09 | 2003-02-12 | 三星电子株式会社 | 用于表示3维情景中基于图像的绘制信息的方法 |
CN101681021A (zh) * | 2007-04-06 | 2010-03-24 | 全球仿生光学有限公司 | 大景深成像系统和虹膜识别系统 |
Non-Patent Citations (1)
Title |
---|
图像处理器并行计算应用研究;张杨;《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》;20060915;第4.3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN102750726A (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111325824B (zh) | 图像数据展示方法、装置、电子设备及存储介质 | |
Chaurasia et al. | Depth synthesis and local warps for plausible image-based navigation | |
USRE43545E1 (en) | Virtual skywriting | |
McGuire et al. | Weighted blended order-independent transparency | |
US20060087556A1 (en) | Stereoscopic image display device | |
CN108564527A (zh) | 基于神经网络的全景图内容补全和修复的方法及装置 | |
US11830051B2 (en) | System and method for high quality renderings of synthetic views of custom products | |
CN102750726B (zh) | 一种基于OpenGL实现景深效果的方法 | |
US10783695B2 (en) | Glyph rendering in three-dimensional space | |
CN106651870A (zh) | 多视角三维重建中图像失焦模糊区域的分割方法 | |
CN107005689B (zh) | 数字视频渲染 | |
CN108416722A (zh) | 一种图像显示方法、存储介质及终端设备 | |
Schott et al. | Depth of field effects for interactive direct volume rendering | |
KR102352092B1 (ko) | 영상처리방법과 장치, 기억매체 및 전자기기 | |
Bratkova et al. | Artistic rendering of mountainous terrain. | |
CN112085855B (zh) | 交互式图像编辑方法、装置、存储介质及计算机设备 | |
CN111951369B (zh) | 一种细节纹理的处理方法和装置 | |
KR102065632B1 (ko) | 복수의 가상 카메라를 이용한 게임 내 360 vr 영상 획득 장치 및 방법 | |
KR20120118462A (ko) | 이미지 기반의 비주얼 헐에서의 오목 표면 모델링 | |
CN113093903B (zh) | 一种图像显示方法及显示设备 | |
Arpa et al. | Perceptual 3D rendering based on principles of analytical cubism | |
CN114288671A (zh) | 贴图制作方法、装置、设备及计算机可读介质 | |
Wyvill et al. | Optical models | |
EP4150560A1 (en) | Single image 3d photography with soft-layering and depth-aware inpainting | |
CN115311395A (zh) | 三维场景渲染方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |