美文网首页程序员
GPU锐化增强算法

GPU锐化增强算法

作者: yongbaoqiji | 来源:发表于2023-11-22 10:53 被阅读0次

目前常见基于GPU实现锐化算法,大体以拉普拉斯锐化为主,区别是应用的算子略有区别,算法较为简单而得以广泛应用,而USM因其运算复杂,且锐化效果没有特别的优势,所以应用较少。
拉普拉斯锐化的核心思想是利用二阶微分,将原图像和拉普拉斯卷积后图像的高频成分叠加,增强边界的灰度值,进而实现锐化。

1. 二阶微分原理:

对于一维离散函数,其一阶微分的定义如下:

\frac{\partial{f}}{\partial{x}}=f(x+1)-f(x)

一维离散函数的二阶微分定义为:
\frac{\partial{f}^2}{\partial{x^2}}=f(x+1)+f(x-1)-2f(x)

对于二维图像,二阶微分:

x轴方向:
\frac{\partial{f}^2}{\partial{x^2}}=f(x+1,y)+f(x-1,y)-2f(x,y)

y轴方向:
\frac{\partial{f}^2}{\partial{y^2}}=f(x,y+1)+f(x,y-1)-2f(x,y)

因此:
\frac{\partial{f^2(x,y)}}{\partial{x^2}\partial{y^2}}=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)

以上,二阶微的操作分可以理解为,对图像像素点f(x,y)按照

\left[ {\begin{array}{cc} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \\ \end{array} } \right]

算子进行卷积。

然后将卷积的结果,即提取的边缘高频成份,叠到原图像像素点上,生成锐化的图像。

根据以上,可以定义出一个二维图像的锐化过程定义为:
f(x,y)=f(x,y)-\frac{\partial{f^2(x,y)}}{\partial{x^2}\partial{y^2}}

Laplace操作的核心思想:

一阶微分表征了在某个方向上灰度的变化率,而二阶微分表征的是一阶微分的变化情况。

二阶微分关心的是图像灰度的突变而不强调灰度缓慢变化的区域,因此,二阶微分比一阶微分边缘的定位能力更强,在边缘检测中发挥着更加重要的作用,是适合锐化图像的立项特征,

这就是拉普拉斯二阶微分算子锐化图像的核心思想。

下面是四种类型图像边缘的二阶微分曲线,可以帮助理解上面的思想。

图1

2. 锐化方案:

2.1 方案1
\left[ {\begin{array}{cc} -1 & 0 & -1 \\ 0 & 4 & 0 \\ -1 & 0 & -1 \\ \end{array} } \right]
直接使用RGB三通道中G通道,原因是G分量对灰度贡献最大,选取周边2个斜对角线方向进行卷积,卷积结果与原图进行mix,得到锐化结果。

2.2 方案2

\left[ {\begin{array}{cc} -1 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & -1 \\ \end{array} } \right]
变换到YUV空间后,按照Luminace通道,选取周边4个方向(水平,垂直及2条斜角对角线)中二阶差值最大的一个方向进行卷积。

将最后的卷积结果分量乘以锐化强度后,直接叠加到原图Y通道,最后变换到RGB色域。

2.3 方案3
\left[ {\begin{array}{cc} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \\ \end{array} } \right]

直接使用RGB三通道按照以上算子进行锐化卷积;

将最后的卷积结果分量乘以锐化强度后,直接叠加到原图。

2.4 方案4
\left[ {\begin{array}{cc} -1 & -2 & -1 \\ -2 & 12 & -2 \\ -1 & -2 & -1 \\ \end{array} } \right]
在方案1的基础上,分别给予水平/垂直,2斜对角线方向不同的权重,取4个方向进行卷积。

3. 锐化实现:

以上4种方案,方案1的实现原理简单,但方案2的锐化噪点更低。
方案2的锐化基于Y通道进行,即二阶微分高频分量是在灰度空间叠加。
下面基于方案2给出示意:

3.1 RGB纹理锐化

中心像素点一次采样:

"   color = texture2D(u_texRGB, v_texCoord).rgb;\n" +

周围像素点采样4个点采样:

// 仅列出一个方向
"   p1 = dot(rgb2gray, (texture2D(texRGB, texCoord + step * vec2(-1, -1)).rgb));\n" +

计算2个方向拉普拉斯二阶微分差值最值,可以直接简化为:

// 仅列出一个方向
"   f1 = 2 * color - p1 - p4;\n" +

计算增强分量,其中sharpness代表自定义强度:
delta=sharpness\cdot{f}\cdot{0.5}

基于FullRange情况的YUV->RGB:
\left[ {\begin{array}{cc} R+delta \\ G+delta \\ B+delta \\ \end{array} } \right]= \left[ {\begin{array}{cc} 1.0 & 0.0 & 1.402 \\ 1.0 & -0.344 & -0.714 \\ 1.0 & 1.772 & 0.0 \\ \end{array} } \right]+ \left[ {\begin{array}{cc} Y+delta \\ U \\ V \\ \end{array} } \right]

可知,

"   vec3 new_color = rgb + vec3(delta, delta, delta);\n" +

以上,计算的delta直接叠加到RGB三通道上,就实现了基于RGB的锐化。

3.2 YUV纹理锐化

YUV纹理可以直接对Y通道纹理进行采样,同时需要考虑LimitRange和FullRange,
因使用的转换矩阵不同,以上算法需要区分兼容。

基于LimitRange情况的YUV->RGB如下:

\left[ {\begin{array}{cc} R \\ G \\ B \\ \end{array} } \right]= \left[ {\begin{array}{cc} 1.164 & 0.0 & 1.596 \\ 1.164 & -0.391 & -0.813 \\ 1.164 & 2.018 & 0.0 \\ \end{array} } \right]+ \left[ {\begin{array}{cc} Y-0.00625 \\ U-0.5 \\ V-0.5 \\ \end{array} } \right]
基于3.1步骤,根据以上矩阵,适配的shader如下:

"   float limit_range_res = 0.0625; \n" +
"   float limit_range_scope = 1.164; \n" +
"   p1 = texture2D(texY, v_texCoord + step * vec2(-1, -1)).r - limit_range_res; \n" +
// 省略其他方向
// 锐化高频成份
"   float delta = sharpness * limit_range_scope * f * 0.5;\n" +
// 此处省略YUV采样计算出RGB的过程
"   vec3 new_color = rgb + vec3(delta, delta, delta);\n" +

FullRange的情况不再赘述。

未经声明,禁止转载,喜欢的给个赞吧!

相关文章

  • 数字图像处理简答题

    1.图像锐化与图像平滑有何区别与联系? 答:图象锐化是用于增强边缘,导致高频分量增强,会使图象清晰;图象平滑用于去...

  • NBP UltraSharp for Mac(PS锐化清晰插件面

    NBP UltraSharp for Mac是一款PS锐化清晰插件面板,功能强大的NBP专有锐化算法,可独立控制,...

  • 图像锐化算法

    今天我们来介绍下什么是锐化。之前我们介绍过模糊算法。模糊算法是去除掉图像的高频信息,保留低频信息以此来达到模糊图像...

  • 六.图像增强

    空域平滑 图像锐化 彩色增强技术 频域增强 增强的目的: 改善图像视觉效果,提高清晰度:平滑、降噪——图像清晰 利...

  • 图像锐化与增强滤镜软件Topaz Detail 3

    Topaz Detail 3 for Mac是Photoshop上一款图像锐化与增强滤镜插件,Topaz Deta...

  • X11算法

    暗黑币 DarkCoin 创造了X11算法,该算法适合CPU和GPU挖矿(GPU效率更优),相比其它scrypt系...

  • 图片处理-opencv-10.图像锐化与边缘检测

    图像锐化与边缘检测 1.Roberts算子 Roberts算子又称为交叉微分算法,它是基于交叉差分的梯度算法,通过...

  • 图像处理基础-均值滤波

    普通均值滤波 图像处理中,有几种常见的基础算法,比如“模糊”、“灰度”、“浮雕”、“黑白”、“底片”、“锐化”。这...

  • 增强算法

    adaboost自提升 随机森林RFimage.pngimage.png

  • 锐化

    1.精细锐化(皮肤锐化、毛发锐化) ①选择Lab颜色模式(只针对亮度通道调整即可) ②选中亮色通道,添加滤镜【锐化...

网友评论

    本文标题:GPU锐化增强算法

    本文链接:https://www.haomeiwen.com/subject/umgiwdtx.html