发明名称 一种基于GPU的移动端高质量美颜的实时处理方法
摘要 本发明公开了一种基于GPU的移动端高质量美颜的实时处理方法,它包括图像获取步骤、图像处理步骤和图像融合步骤。本发明借助GPU的硬件加速特性,对本方法的多个子步骤进行处理,可以解决使用CPU时的效率低下问题,同时本方法提出并使用的各个子步骤都能很好的应用于GPU加速处理,在保证效率实时的同时,可以得到即时的效果呈现,应用于单幅图像的特效处理;同时,本发明提出一种易于理解且性能优异的图像去噪算法处理框架,利用基于图像积分图的快速图像去噪方案,保证计算速度与采样窗口的大小无关,同时很好的去除图像噪声如斑点的同时保持细节。
申请公布号 CN105976308A 申请公布日期 2016.09.28
申请号 CN201610284768.5 申请日期 2016.05.03
申请人 成都索贝数码科技股份有限公司 发明人 赖守波;韩志宏;余刚
分类号 G06T3/00(2006.01)I 主分类号 G06T3/00(2006.01)I
代理机构 成都金英专利代理事务所(普通合伙) 51218 代理人 袁英
主权项 一种基于GPU的移动端高质量美颜的实时处理方法,其特征在于:它包括图像获取步骤、图像处理步骤和图像融合步骤;所述的图像获取步骤包括:输入一副RGB彩色图像;所述的图像处理步骤包括三个基于GPU硬件加速的逐像素独立执行的子步骤:图像的整体美化子步骤、图像的增强处理子步骤和生成图像的皮肤区域的遮罩处理子步骤;所述的整体美化子步骤包括以下子步骤:S111:将输入图像的RGB颜色空间转化到YUV颜色空间,同时保留UV通道;S112:设置采样窗口大小,判断采样窗口的大小是否大于预设的阈值:如果是则使用积分图,否则使用盒子滤波;所述的使用积分图包括以下子步骤:S11211:生成亮度图像的积分图,包括一次项与二次项的积分图,其中迭代公式分别如下:sum<sub>i,j</sub>=sum<sub>i,j‑1</sub>+sum<sub>i‑1,j</sub>‑sum<sub>i‑1,j‑1</sub>+f<sub>i,j</sub>;<maths num="0001"><math><![CDATA[<mrow><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi></mrow></msub><mo>-</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msubsup><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mn>2</mn></msubsup><mo>;</mo></mrow>]]></math><img file="FDA0000980735400000011.GIF" wi="1206" he="79" /></maths>式中,sum表示直接和,sumsq表示平方和,f表示亮度值,保存上述得到的两幅积分图像;S11212:对于图像中的所有像素逐个处理,在以每个像素为中心的窗口中,分别计算此窗口中所有像素的均值和方差,计算公式如下:<maths num="0002"><math><![CDATA[<mrow><mi>E</mi><mo>=</mo><mfrac><mrow><msub><mi>sum</mi><mrow><mi>i</mi><mo>+</mo><mi>N</mi><mo>,</mo><mi>j</mi><mo>+</mo><mi>N</mi></mrow></msub><mo>-</mo><msub><mi>sum</mi><mrow><mi>i</mi><mo>+</mo><mi>N</mi><mo>,</mo><mi>j</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>sum</mi><mrow><mi>i</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>+</mo><mi>N</mi></mrow></msub><mo>+</mo><msub><mi>sum</mi><mrow><mi>i</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow><mrow><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>*</mo><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000980735400000012.GIF" wi="1373" he="151" /></maths><maths num="0003"><math><![CDATA[<mrow><mi>E</mi><mi>s</mi><mi>q</mi><mo>=</mo><mfrac><mrow><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>+</mo><mi>N</mi><mo>,</mo><mi>j</mi><mo>+</mo><mi>N</mi></mrow></msub><mo>-</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>+</mo><mi>N</mi><mo>,</mo><mi>j</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>+</mo><mi>N</mi></mrow></msub><mo>+</mo><msub><mi>sumsq</mi><mrow><mi>i</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow><mrow><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>*</mo><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000980735400000013.GIF" wi="1610" he="150" /></maths>VAR=Esq‑E<sup>2</sup>式中,E表示均值,VAR表示方差;i,j分别表示相对于图像左上角的垂直和水平方向的坐标,N表示窗口半径;所述的使用盒子滤波的计算公式如下:<maths num="0004"><math><![CDATA[<mrow><mi>E</mi><mo>=</mo><mfrac><mrow><munderover><mo>&Sigma;</mo><mrow><mi>m</mi><mo>=</mo><mo>-</mo><mi>N</mi></mrow><mi>N</mi></munderover><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mo>-</mo><mi>N</mi></mrow><mi>N</mi></munderover><msub><mi>f</mi><mrow><mi>i</mi><mo>+</mo><mi>m</mi><mo>,</mo><mi>j</mi><mo>+</mo><mi>n</mi></mrow></msub></mrow><mrow><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>*</mo><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000980735400000014.GIF" wi="700" he="271" /></maths><maths num="0005"><math><![CDATA[<mrow><mi>E</mi><mi>s</mi><mi>q</mi><mo>=</mo><mfrac><mrow><munderover><mo>&Sigma;</mo><mrow><mi>m</mi><mo>=</mo><mo>-</mo><mi>N</mi></mrow><mi>N</mi></munderover><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mo>-</mo><mi>N</mi></mrow><mi>N</mi></munderover><msubsup><mi>f</mi><mrow><mi>i</mi><mo>+</mo><mi>m</mi><mo>,</mo><mi>j</mi><mo>+</mo><mi>n</mi></mrow><mn>2</mn></msubsup></mrow><mrow><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>*</mo><mo>(</mo><mn>2</mn><mo>*</mo><mi>N</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000980735400000021.GIF" wi="686" he="239" /></maths>VAR=Esq‑E<sup>2</sup>式中,E表示均值,VAR表示方差;m,n分别表示垂直和水平方向与当前像素位置的相对距离;S113:图像去噪:对于每一个像素,在得到基于此像素为中心的窗口的均值和方差后,根据得到的均值和方差进行平滑滤波,所述的平滑滤波的校正方式为:<maths num="0006"><math><![CDATA[<mrow><mi>k</mi><mo>=</mo><mfrac><mrow><mi>V</mi><mi>A</mi><mi>R</mi></mrow><mrow><mi>V</mi><mi>A</mi><mi>R</mi><mo>+</mo><mi>&beta;</mi><mo>+</mo><mi>&epsiv;</mi></mrow></mfrac></mrow>]]></math><img file="FDA0000980735400000022.GIF" wi="394" he="151" /></maths>f<sub>i,j</sub>=E*(1‑k)+f<sub>i,j</sub>*k式中,β表示调节的参数值,其值越大,表示平滑的程度越大,则去除的噪声越大;ε是一个接近于0的小数,其目的是为了防止被除数为0时的异常;从对像素值进行校正的公式中可以得出,当调节的参数值越大时,该像素值越接近E;S114:对图像进行锐化处理,对图像的纹理细节进行补偿提升,处理公式为:<maths num="0007"><math><![CDATA[<mrow><msub><mi>S</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>+</mo><mfrac><mrow><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi></mrow></msub><mo>-</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>*</mo><mn>4</mn></mrow><mn>4</mn></mfrac><mo>*</mo><mi>&alpha;</mi></mrow>]]></math><img file="FDA0000980735400000023.GIF" wi="1292" he="157" /></maths>式中,S表示锐化后的图像,α表示锐化的程度,即4‑邻域拉普拉斯梯度对像素值的贡献百分比,α值越大,锐化程度越大;S115:图像锐化处理之后,再与去噪前RGB转换得到的UV通道合并成YUV图像;S116:将步骤S115得到的YUV图像再次转换回RGB颜色空间,以供后续进一步处理;所述的图像的增强处理子步骤采用非线性图像增强,对图像进行整体美白处理,通过提升图像的暗部细节的同时保持亮度细节的方式实现,首先将图像归一化至[0,1]的范围内,然后采用指数函数映射的方法进行处理:<maths num="0008"><math><![CDATA[<mrow><msub><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msubsup><mi>f</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>p</mi></msubsup></mrow>]]></math><img file="FDA0000980735400000024.GIF" wi="246" he="87" /></maths>式中,p表示美白的程度;所述的生成图像的皮肤区域的遮罩处理子步骤包括以下子步骤:S121:检测图像的皮肤区域:使用阈值处理,首先划分出皮肤与非皮肤的粗选区域,通常人的皮肤区域的RGB统计值为[a,b,c],其中a、b、c为对多张图像的皮肤与非皮肤区域进行统计分类而得到的一组值,检测时当图像的像素值大于统计值时则划分为皮肤区域,否则为非皮肤区域,得到一个皮肤区域的初步检测;S122:得到皮肤区域的遮罩后,对遮罩作进一步的细化处理:采用指定窗口大小的高斯模糊进行遮罩处理,高斯函数的二维公式如下:<maths num="0009"><math><![CDATA[<mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><msup><mi>&pi;&sigma;</mi><mn>2</mn></msup></mrow></mfrac><msup><mi>e</mi><mrow><mo>-</mo><mfrac><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac></mrow></msup></mrow>]]></math><img file="FDA0000980735400000031.GIF" wi="633" he="189" /></maths>式中,x,y分别表示垂直和水平方向与当前操作像素的相对距离,σ表示标准差;所述的图像融合步骤包括:在图像处理步骤完成后,根据得到的皮肤区域的遮罩分别对整体美白后的图像及整体去噪后的图像进行逐像素融合,整合公式为:Final<sub>i,j</sub>=B<sub>i,j</sub>*(1‑α<sub>i.j</sub>)+F<sub>i,j</sub>*α<sub>i.j</sub>式中,B表示整体去噪后的图像,F表示整体美白后的图像,α表示得到的皮肤区域的遮罩,Final表示图像融合结果;完成融合后得到最后的结果图像,将结果图像进行输出。
地址 610041 四川省成都市高新区新加坡工业园新元大道南二路2号