对Photoshop高斯模糊滤镜的算法总结

        最近有感于部分网友对高斯模糊滤镜的研究,现总结如下。高斯模糊是数字图像模板处理法的一种。其模板是根据二维正态分布(高斯分布)函数计算出来的。 
        正态分布最早由a.棣莫弗在求二项分布的渐近公式中得到。c.f.高斯在研究测量误差时从另一个角度导出了它。p.s.拉普拉斯和高斯研究了它的性质。故名高斯模糊。

        一维正态分布的函数定义:

        对Photoshop高斯模糊滤镜的算法总结
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.php.cn/

–>//guass radius=0.700000
0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   
0.000000   0.000000   0.000001   0.000012   0.000033   0.000012   0.000001   0.000000   0.000000   
0.000000   0.000001   0.000093   0.001976   0.005481   0.001976   0.000093   0.000001   0.000000   
0.000000   0.000012   0.001976   0.042189   0.117046   0.042189   0.001976   0.000012   0.000000   
0.000000   0.000033   0.005481   0.117046   0.324724   0.117046   0.005481   0.000033   0.000000   
0.000000   0.000012   0.001976   0.042189   0.117046   0.042189   0.001976   0.000012   0.000000   
0.000000   0.000001   0.000093   0.001976   0.005481   0.001976   0.000093   0.000001   0.000000   
0.000000   0.000000   0.000001   0.000012   0.000033   0.000012   0.000001   0.000000   0.000000   
0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000  

 

         在网络上众所周知流传的高斯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(‘高斯模糊后’)
   

          效果如下:

          对Photoshop高斯模糊滤镜的算法总结
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.php.cn/

–>%绘制高斯模糊曲面!——————–
r=0.849; %高斯半径(从0.1到250)
x=-3:0.2:3;
y=x;
[X,Y]=meshgrid(x,y);
Z=exp(-(X.^2+Y.^2)./(2*r*r))/(2*pi*r*r);
mesh(X,Y,Z)

         效果如下图: 

        对Photoshop高斯模糊滤镜的算法总结
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.php.cn/

–>#include math.h>
#include stdio.h>
#define N       3                     /* 模板大小:(2N+1) * (2N+1) */
void main()
{
    double a[2*N+1][2*N+1];    /* 高斯模板 */
    double r=0.6;                     /* 高斯半径:[ 0.1, 250] */
    double A=1/(2*M_PI*r*r);
    int i,j;
    for(i=-1*N;iN;i++)
        for(j=-1*N;jN;j++)
            a[i+N][j+N]=A*exp((-1)*(i*i+j*j)/ (2*r*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

 更多对Photoshop高斯模糊滤镜的算法总结相关文章请关注PHP中文网!

 

登录后复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2983377.html

(0)
上一篇 2025年3月12日 04:26:45
下一篇 2025年3月12日 04:26:53

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Photoshop滤镜的选择技巧

    photoshop的滤镜主要有五个方面的作用:优化印刷图象、优化web图象、提高工作效率、提供创意滤镜和创建三维效果。滤镜的出现,极大地增强了photoshop 的功能,有了滤镜,我们就可以轻易地创造出十分专业的艺术效果。但photosho…

    编程技术 2025年3月12日
    200
  • 怎样编写一个Photoshop滤镜– Scripting Plug-ins

                在第一篇文章中我们建立了一个没有ui的基本滤镜框架,并且引入pipl资源使之能被ps加载到菜单。在第二篇文章中我们又引入了滤镜参数和相应的对话框资源,并且讲解了对话框在滤镜调用流程中的显示时机。这一篇文章我们将使滤镜…

    2025年3月12日
    200
  • 怎样编写一个Photoshop滤镜(1)

                在很久前我曾经写过一篇文章简要讲述了photoshop的滤镜开发的基本概念,并描述了滤镜和ps之间的协作关系,也提供了一个雨滴效果滤镜的demo。但是缺少源代码。而且我们将要产生疑问,我们如何从头开始编写一个phot…

    2025年3月12日 编程技术
    200
  • 怎样编写一个Photoshop滤镜(2)

                在上一篇文章中,我们讲解了怎样创建一个photoshop滤镜的项目,以及如何为滤镜嵌入pipl资源使滤镜可以被ps识别和加载。并且我们已经建立了一个最简单最基本的滤镜框架。在这篇文章中,我们将细化滤镜和ps之间的调用…

    2025年3月12日
    200
  • 怎样编写一个Photoshop滤镜 — 在对话框上增加缩略图

                在上一篇文章里,我们讲解了为滤镜添加术语资源,从而使我们的滤镜可以被ps的scripting system感知和描述,这样即友好支持了ps的“动作”面板。在这一篇文章中,我们将对此前的demo进行进一步的细化,例如在…

    2025年3月12日
    200

发表回复

登录后才能评论