matlab中fspecial中生成高斯模板的解释以及c语言实现

下面这个函数是模拟fspecial中的生成高斯模板的函数。

function h=makefilter(size,sigma)

%size为模板大小

%sigma为标准差

%下面的代码其实是从fspecial中摘录出来的,我做了一些更改放到自己写的函数里面便于解释

%计算高斯模板的中心位置

siz = ([size size]-1)/2;

sig = sigma;

%用meshgrid是为了加速,不用for循环

[x y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));

%计算exp(-(x^2+y^2)/(2*sig^2))

%我想你肯定有一个疑问,那就是为什么不除以2*pi*sig^2

%因为不除也没有关系,因为最后归一化之后会约掉

arg = -(x.*x+y.*y)./(2*sig*sig);

h = exp(arg);

%不知道它为什么要这样,忘懂得人解释一下

h(h

%求和,用来归一化

sumh = sum(h(:));

%防止求和之后出现为0的情况,然后再归一化一下使高斯,模板为小数

if sumh ~=0

h=h/sumh;

end

end

运行结果:

>> makefilter(3,0.5)

ans =

0.0113 0.0838 0.0113

0.0838 0.6193 0.0838

0.0113 0.0838 0.0113

下面给出C的代码

#include

#include

#include

double** makeGaussianFilter(int iSize, double sigma);

double** malloc2DArray(int iRow, int iCol);

void free2DArray(double** p,int iRow);

int _tmain(int argc, _TCHAR* argv[])

{

double** filter = makeGaussianFilter(3,0.5);

for (int i=0; i<3; i++)

{

for (int j=0; j<3; j++)

{

printf("%lf\t",filter[i][j]);

}

printf("\n");

}

_getch();

free2DArray(filter,3);

return 0;

}

double** makeGaussianFilter(int iSize, double sigma)

{

double** filter = malloc2DArray(iSize,iSize);

int center = (iSize-1)/2;

double sum = 0;

double x2 = 0;

double y2 = 0;

for (int i=0; i

{

x2 = pow(double(i-center),2);

for (int j=0; j

{

y2 = pow(double(j-center),2);

sum += filter[i][j] = exp(-(x2+y2)/(2*sigma*sigma));

}

}

if (sum!=0)

{

//归一化

for (int i=0; i

{

for (int j=0; j

{

filter[i][j] /= sum;

}

}

}

return filter;

}

double** malloc2DArray(int iRow, int iCol)

{

double **filter = new double*[iRow];

for (int i=0; i

{

filter[i] = new double[iCol];

}

return filter;

}

void free2DArray(double** p,int iRow)

{

for (int i=0; i

{

delete []p[i];

}

delete []p;

}

结果:

总结:有时候不一定按照公式的算法去做,可以简化计算。

fspecial matlab 自己实现,matlab中fspecial中生成高斯模板的解释以及c语言兑现相关推荐

  1. matlab中conv滤波,其中是Matlab(imfilter)和TensorFlow中偶数滤波器(6x6)的中心像素(转速表nn.conv2d)?...

    在我的硕士论文中,我正在将一个卷积操作从一个Matlab代码移植到TensorFlow(pythonapi)中.例外的是,在Matlab中使用了一个均匀的滤波器大小(6x6).在 通过调试Matlab ...

  2. python变量存为matlab,详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  3. matlab 颜色势能,Matlab在模拟晶面势能分布中的应用

    ComputerKnowledgeand Technology 电脑知识与技术 本栏目责任编辑:唐一东人工智能及识别技术 第 6 卷第 31 期 (2010 年 11 月) Matlab 在模拟晶面势 ...

  4. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

  5. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关

    [Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处外链网址已屏蔽 norm范数使用 help norm norm ...

  6. 水库调度matlab,基于MATLAB模糊系统在水库调度中的应用初探_廖明潮

    文章编号:1009-4881(2004)01-0022-03 收稿日期:2003-04-25 修回日期:2003-12-15 作者简介:廖明朝(1968-),男,湖北省洪湖市人,讲师. 基于MATLA ...

  7. matlab括号区别,matlab中各种括号(),[],与{}的区别与认识

    matlab中各种括号(),[],与{}的区别与认识 发布时间:2018-06-04 10:37, 浏览次数:469 , 标签: matlab 原文 在matlab中,常常会遇到(),[],和{},这 ...

  8. matlab在电磁场与电磁波中的应用,matlab在电磁场与电磁波学习中的应用.docx

    matlab在电磁场与电磁波学习中的应用.docx MATLAB在电磁场与电磁波学习中的应用裴逸菲(燕京理工学院信息科学与技术学院,河北廊坊065201)摘要针对电磁场与电磁波在大学课程中的理论性强. ...

  9. matlab安装m_map,MATLAB中安装m_map后不能用,求解

    MATLAB中安装m_map后不能用,求解 因为画图,所以今天在MATLAB中安装了m_map,之后还写了几个m文件,后来MATLAB突然卡住,就关了,之后再打开,就显示如下: Warning: Di ...

  10. matlab 函数优化问题,matlab求解最优化问题 Matlab在最优化问题中的应用举例.doc

    matlab求解最优化问题 Matlab在最优化问题中的应用举例 导读:就爱阅读网友为您分享以下"Matlab在最优化问题中的应用举例"的资讯,希望对您有所帮助,感谢您对92的支持 ...

最新文章

  1. java RSA加密解密实现(含分段加密)
  2. devserver配置_03-零基础学webpack4.0之html相关配置
  3. vim 删除行_【收藏】138条 Vim 命令、操作、快捷键全
  4. 查看matlab当前路径,MATLAB R2012a 的当前路径和路径搜索
  5. leetcode 7. 反转整数(python3)
  6. 益阳计算机应用专业推荐一下,益阳职业技术学院10大好专业推荐
  7. 网络层传输协议(详解)
  8. LapSRN 超分辨率
  9. html的特殊符号五角星,五角星怎么打出来?打出五角星符号的方法
  10. spark的三种部署模式
  11. 设计窗口模拟教室座位表java,基于web的考研自习教室座位管理(完整源码+论文全套+教学视频)...
  12. ipad触摸测试软件,平板电脑屏幕灵敏度测试:iPad系列最出色
  13. 哔哩哔哩 2019校园招聘 开发工程师-2018.09.21
  14. leetcode每日一题第三十二天-剑指 Offer 65. 不用加减乘除做加法(easy??middle了吧)
  15. js控制蓝牙笔翻页功能(键盘事件)
  16. 百度编辑器Editor 1.4.3.2 asp.net版最新使用方法
  17. 高血压补钾降压该咋吃
  18. PHP接入网易易盾验证码
  19. 图片和网络的第三方的地址汇总
  20. 产品经理设计产品流程都有哪些步骤

热门文章

  1. 微信小程序开发之路(3)— 添加一个Button按钮点击事件
  2. 工程师分享——SMT贴片机编程的主要流程 2021-08-11
  3. 惠普打印机没有扫描问题解决
  4. 共享hp无线扫描到计算机,共享HP / HP扫描仪的OpenWrt路由器
  5. php通讯hpsocket,HP-Socket 远程通信 服务端 客户端 源码
  6. f和摄氏度怎么换算_华氏度怎么换算成摄氏度啊?
  7. 常见算法工程师面试题总结(机器学习,深度学习)
  8. 微信小程序 测试号管理(appid和密钥)
  9. 英伟达官网怎么找老版本的显卡驱动
  10. PDF免费压缩、在线压缩