最近有感于部分网友对高斯模糊滤镜的研究,现总结如下。高斯模糊是数字图像模板处理法的一种。其模板是根据二维正态分布(高斯分布)函数计算出来的。
正态分布最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。故名高斯模糊。
一维正态分布的函数定义:
型随机变量的分布,第一参数μ是遵从正态分布的随机变量的均值,第二个参数σ2是此随机变量的方差,所以正态分布记作N(μ,σ2 )。 遵从正态分布的随机变量的概率规律为取 μ邻近的值的概率大 ,而取离μ越远的值的概率越小;σ越小,分布越集中在μ附近,σ越大,分布越分散。正态分布的密度函数的特点是:关于μ对称,在μ处达到最大值,在正(负)无穷远处取值为0,在μ±σ处有拐点。它的形状是中间高两边低 ,图像是一条位于x轴上方的钟形曲线。当μ=0,σ2 =1时,称为标准正态分布,记为N(0,1)。
两个常数的意义:μ-期望,σ^2 方差。
下面我们解决第一个疑问:高斯模糊滤镜中的半径是什么?答案是高斯半径就是公式中的σ。
高斯曲线的图形和半径的含义如下图(来自Adobe SDK中技术支持专家的文档)所示:
可见高斯半径(σ)对曲线形状的影响,σ越小,曲线越高越尖,σ越大,曲线越低越平缓。对二维图像来说,是一个钟形曲面,高斯半径越小,曲面越高越尖越陡峭;高斯半径越大,曲面越低越平缓。因此高斯半径越小,则模糊越小,高斯半径越大,则模糊程度越大。我们将看到ps对高斯半径的范围定义是【0.1~250】。当半径为0.1时,高斯模板在计算后只有中间像素为1,其他像素均=0(实际上只是趋近0),即图像不会有变化。
第二个疑问,高斯模板大小和高斯半径的关系?这是一个一直困扰我们的误解。因为我们的思维进入了物理实现的误区。在物理实现中,高斯模板有界,从而使我们忽略了这个问题的真正答案:高斯模板在逻辑上是无边界的。也就是说高斯模板本质上是逻辑上无穷拓展曲面的一个近似。因此,模板大小我们应该认为它是无穷大的。只不过在计算的时候,因为在远处趋近0,因此在某个阈值之下我们不再考虑这些值,这个阈值就是模板边界。
下面,二维高斯曲面的公式(x,y代表像素的模板坐标,模板中心位置为原点):
即:g(x,y)= ( 1 / (2*pi*σ^2) ) * exp( -(x^2+y^2)/(2*σ^2) ) ;
根据这个公式,我们可以计算出不同半径下的高斯模板,实际上模板是无穷大的,只是在中心较远处,他们会趋近0.例如,我们计算出r=0.7时的一个归一化后的高斯模板:
高斯模板(guass radius=0.700000)
在网络上众所周知流传的高斯3*3模板实际上是对高斯曲面的一个整数除法形式的近似:
1 2 1
2 4 2 /16
1 2 1
实际验证,我们发现这个3*3模板实际上是对高斯半径约为0.849时的一个近似,当r=0.849时,其3*3归一模板为(在MATLAB中,输入h=fspecial('gaussian', 3, 0.849);即可得到这个模板):
(guass radius=0.849000)
0.062467 0.125000 0.062467
0.125000 0.250131 0.125000
0.062467 0.125000 0.062467
然后我们可以用Matlab中的imfilter来对图像进行高斯模糊的处理:
img = imread('c:\demo.bmp');
h = fspecial('gaussian', 3, 0.849);
img2 = imfilter(img, h);
subplot(121), imshow(img); title('原图')
subplot(122), imshow(img2); title('高斯模糊后')
效果如下:
我们可以在Matlab中用如下语句绘制高斯曲面:
绘制高斯曲面的Matlab代码
效果如下图:
在数字信号处理中,高斯模糊算法是一种滤波器,它的时域和频域曲线如下所示:
从频域曲线看出,高斯模糊本质上一种低通滤波器。体现在图像处理上,图像的边缘等灰度变化剧烈的地方对应高频信息,将被滤除。
最后,我们给出计算高斯模糊模板的C语言代码,请注意,由于高斯模板是对称的,实际上我们只需要计算出大约1/4模板即可。但这里的代码我们没有做这样的优化。我们输出的模板是(2*N+1)*(2N+1),高斯半径用r表示。
计算高斯模板
同时,作为比较,我们给出在Matlab中生成高斯模板的代码(fspecial的代码局部,其中p3是第三个参数即高斯半径):
case 'gaussian' % Gaussian filter siz = (p2-1)/2; %注:p2即模板边长,默认值为33 std = p3; %注:p3即高斯半径,默认为为0.5 [x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1)); arg = -(x.*x + y.*y)/(2*std*std); h = exp(arg); h(h<eps*max(h(:))) = 0; sumh = sum(h(:)); %注:模板归一化 if sumh ~= 0, h = h/sumh; end;
更多对Photoshop高斯模糊滤镜的算法总结相关文章请关注PHP中文网!

你可以通过以下方式以最经济的方式获得Photoshop的使用权:1.利用7天的免费试用期体验软件功能;2.寻找学生或教师折扣,以及季节性促销;3.使用第三方网站上的优惠券;4.订阅AdobeCreativeCloud的月度或年度计划。

在Photoshop中创建视觉概念可以通过以下步骤实现:1.创建新文档,2.添加背景层,3.使用画笔工具绘制基本形状,4.调整颜色和亮度,5.添加文本和图形,6.使用蒙版进行局部编辑,7.应用滤镜效果,这些步骤帮助设计师从零开始构建完整的视觉作品。

Photoshop不是免费的,但有几种方式可以低成本或免费使用:1.免费试用期为7天,期间可体验所有功能;2.学生和教师优惠可将成本减半,需提供学校证明;3.CreativeCloud套餐适合专业用户,包含多种Adobe工具;4.PhotoshopElements和Lightroom为低成本替代方案,功能较少但价格更低。

Photoshop值得投资,因为它提供了强大的功能和广泛的应用场景。1)核心功能包括图像编辑、图层管理、特效制作和色彩调整。2)适合专业设计师和摄影师,但业余爱好者可考虑替代品如GIMP。3)订阅AdobeCreativeCloud可按需使用,避免一次性高额支出。

Photoshop在创意图像设计中的核心用途是其强大的功能和灵活性。1)它允许设计师通过图层、蒙版和滤镜将创意转化为视觉现实。2)基本用法包括裁剪、调整大小和颜色校正。3)高级用法如图层样式、混合模式和智能对象可创建复杂效果。4)常见错误包括图层管理不当和滤镜使用过度,可通过整理图层和合理使用滤镜解决。5)性能优化和最佳实践包括合理使用图层、定期保存文件和使用快捷键。

Photoshop在网页设计中可用于创建高保真原型、设计UI元素和模拟用户交互。1.使用图层、蒙版和智能对象进行基础设计。2.通过动画和时间线功能模拟用户交互。3.利用脚本自动化设计过程,提高效率。

之前的文章《一步一步教你使用ps将盘子图片添加印花效果(收藏)》中,给大家介绍了一种小技巧,怎么使用ps将盘子图片添加印花效果。下面本篇文章给大家介绍怎么利用ps笔刷给字体添加裂纹效果,我们一起看看怎么做。

在Photoshop中,可以通过图层样式和滤镜创建文字效果。1.创建新文档并添加文字。2.应用图层样式如阴影和外发光。3.使用滤镜如波浪效果,并添加斜面和浮雕效果。4.使用蒙版调整效果范围和强度,以优化文字效果的视觉冲击力。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中