matlab smooth原理,Matlab smooth函数原理
由于项目上要用到平滑一维数组数据,参考Matlab smooth函数转成c++代码
//x,g均为数组,具体内容略
plot(x,g);hold on,plot(x,smooth(g,50),‘r‘);
z1= (g1-smooth(g1,50)‘); figure,plot(x,z1,‘.-‘)
蓝色为平滑前,红色为平滑后
为了要找到缺陷,即灰度值突变很大地方,可以平滑前后相减,注意这里平滑窗宽尽量选大,选择原则是较小甚至不影响缺陷突变的地方
平滑前后相减
举例
例如g=[1 2 1 5 1 1 1 3 1 1 1]
smooth(g,5)‘
ans =
1.0000 1.3333 2.0000 2.0000 1.8000 2.2000 1.4000 1.4000 1.4000 1.0000 1.0000
smooth(g,10)‘
ans =
1.0000 1.3333 2.0000 1.7143 1.7778 1.7778 1.6667 1.2857 1.4000 1.0000 1.0000
以窗宽10为例(因为除的奇数,所以最大为9) (matlab下标以1开始,而vc从0开始)
令b=(k-1)/2;
当i小于b时
Y[0]=g[0] =1
Y[1]=(g[0]+g[1]+g[2])/3=4/3=1.3333
Y[2]=(g[0]+g[1]+g[2]+g[3]+g[4])/5=2
Y[3]=(g[0]+g[1]+g[2]+g[3]+g[4]+g[5]+g[6])/7=1.7143
Y[3]= (g[3+(-3)]+g[3+(-2)]+g[3+(-1)]+g[3+(0)]+g[3+1]+g[3+2]+g[3+3])/(2*3+1)
那么从j=-i:i (这里k是变动的)
Y[i]=0;
For( j=-i;j
{
Y[i]+=g[i+j]
}
Y[i]=y[i]/(2*i+1);
当i大于等于时 ,同时length(g)-i>b (这里k是固定的)
如果n为偶数,那么应该是k=n-1;然后范围是-(k-1)/2: (k-1)/2 b=(k-1)/2
Y[4]=(g[0]+g[1]+g[2]+g[3]+g[4]+g[5]+g[6] +g[7]+g[8])/9=1.7778
Y[5]=(g[1]+g[2]+g[3]+g[4]+g[5]+g[6] +g[7]+g[8] +g[9])/9=1.7778
Y[6]=(g[2]+g[3]+g[4]+g[5]+g[6]+g[7]+g[8] +g[9]+g[10])/9=1.6667
Y[6]= (g[6+(-4)]+g[6+(-3)]+g[6+(-2)]+g[6+(-1)]+g[6]+g[7]+g[8] +g[9]+g[10])/9…..
Y[i]=(g[i+(-b)]+g[i+(-b+1)]+g[i+(-b+2)]+g[i+(-b+3)]+g[i+(-b+4)]+g[i+(-b+5)]+g[i+(-b+6)] +g[i+(-b+7)]+g[i+(-b+8)])/k
-b:b即
If(i>b)||(i=b)
{
Y[i]=0;
For( j=-b;j
{
Y[i]+=g[i+j]
}
Y[i]=y[i]/k;}
当i大于b同时length(g)-i<=b从后往前推
Y[7]=( g[4]+ g[5]+g[6]+g[7]+g[8] +g[9]+g[10])/7=1.2857
Y[8]=( g[6]+g[7]+g[8] +g[9]+g[10])/5=1.4
Y[9]=(g[8] +g[9]+g[10])/3=1
Y[10]=(g[10] =1
当i=7时,i1=10-7=3
那么Y[7]= (g[7+(-3)]+g[7+(-2)]+g[7+(-1)]+g[7+(0)]+g[7+1]+g[7+2]+g[7+3])/(2*3+1)
当i=8时,i1=2
那么Y[8]= (g[8+(-2)]+g[8+(-1)]+g[8+(0)]+g[8+1]+g[8+2])/(2*2+1)
令 i1=(n-1)-i,那么从-i1:i1
Y[i]=0;
For( j=-i1;j
{
Y[i]+=g[i+j]
}
Y[i]=y[i]/(2*i1+1);
C++代码如下,nn为数组元素个数;
int b=(k-1)/2;
vectorZ(nn);if(nn>k)
{for(int i=0;i
{if(i
{
Z[i]=0;for(int j=-i;j
{
Z[i]+=D[i+j];
}
Z[i]=Z[i]/(2*i+1);
}if(((i>b)||(i=b))&((nn-i)>b))
{
Z[i]=0;for( int j=-b;j
{
Z[i]+=D[i+j];
}
Z[i]=Z[i]/k;
}else{
Z[i]=0;int i1=(nn-1)-i;for( int j=-i1;j
{
Z[i]+=D[i+j];
}
Z[i]=Z[i]/(2*i1+1);
}
}
}
平滑前
平滑后
平滑前后相减
原文:https://www.cnblogs.com/sggggr/p/12506378.html
matlab smooth原理,Matlab smooth函数原理相关推荐
- MATLAB中移动平均滤波器smooth函数的用法
文章目录 1 smooth的函数原型 2 yy = smooth(y)解析 3 yy = smooth(y,span)解析 4 yy = smooth(y,span,method)解析 5 smoot ...
- matlab里面q函数,q函数原理及matlab计算
q函数原理及matlab计算 1 误差函数定义为它的性质如下:2 互补误差函数定义为它具有如下性质:3 Q 函数与误差函数的关系Matlab 中没有 Q 函数,所以此时不能直接使用 Q 函数,解决方法 ...
- Matlab中sub2ind函数原理及用法!
Matlab中sub2ind函数原理及用法!
- histeq matlab原理,MATLAB中histeq的原理以及自写的具体实现函数
1.什么是直方图? 直方图是数字图像处理中一个简单而重要的常用工具,它从总体上刻画了一幅图像的灰度内容. 具体来说,直方图描述的是图像中具有各灰度级的出现的概率(像素的个数),其横坐标为灰度级,纵坐标 ...
- histeq从用法到原理——Matlab直方图均衡化函数
转载于http://blog.sina.com.cn/s/blog_14d1511ee0102wwyt.html (公式未正常显示,请看原文链接) 一.用法 histeq是Matlab中的一个工具箱函 ...
- matlab光顺拐点,Matlab的smooth方法(降噪\光顺\移动平均)
对于需要对原始数据降噪和光顺处理的需求,matlab提供了一个基础的湍动平均函数 语法 y = smooth(y) gpuarrayYY = smooth(gpuarrayY) yy = smooth ...
- matlab工具箱三维还原原理,matlab三维重建工具箱
MATLAB的血管三维重建源代码_基础医学_医药卫生_专业资料.图片下载 2001 数学建模 A 题 附录 1:图像二值矩阵的 0-1 互换的 matlab 程序代码(zhuanhua.m) .... ...
- matlab光场成像,光场相机重聚焦原理③——Matlab光场工具包使用重聚焦及多视角效...
光场相机重聚焦原理③--Matlab光场工具包使用重聚焦及多视角效 光场相机重聚焦原理③--Matlab光场工具包使用.重聚焦及多视角效果展示 目录 1.从相机里导出白图像(White Images) ...
- 通信原理matlab实验课程设计,通信原理matlab课程设计报告
通信原理matlab课程设计报告 1 目录 一问题描述-----------------------------------------3 二实验原理------------------------- ...
- MATLAB BPSK通信系统调制解调仿真原理及代码(二)
此仿真是瑞丽衰落信道与高斯信道的仿真对比,高斯信道的原理及仿真代码前文已有讲述. 高斯信道下的原理及代码请见 MATLAB BPSK通信系统调制解调仿真原理及代码(一)_惜洛-Jankin的博客-CS ...
最新文章
- VS Code上也能玩转Jupyter Notebook,这是一份完整教程
- linux下创建多进程,linux之多进程fork:进程创建
- jpa postgresql 使用uuid作为主键
- 小程序 input 换行_小程序 input双向数据绑定
- 银行各类理财收益渐涨 各类宝钱景尚不明朗
- SQL Server游标+延迟执行简介
- 基于SSM实现的网上书城系统【附源码】(毕设)
- 锐捷云教室 服务器型号,锐捷智慧云课堂方案(云教室+简单)
- 关于datetimepicker 鼠标滚动调节日期变化遇到的问题
- 转载nbsp;图像阈值选取
- qq企业邮箱创建过程
- Android网络通信(一)
- strcpy s 的用法
- APP定制开发,移动市场重要的生存利器
- 图像去噪,深度学习去噪,普通方法
- obv代码matlab,obv指标源代码,标准obv指标源代码
- 读《微波工程(第三版)》笔记 (4:波方程和基本平面波的解)
- c4d安装没有出现语言文字,c4d中文教程大合集 HDT映速教程 C4D自学全攻略(四部全集)...
- 【Cesium】Cesium学习之CZML的使用
- 全志H3 linux系统recovery制作过程
热门文章
- 996 icu 不算什么?生活在继续
- 分享72个PHP源码,总有一款适合您
- 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf
- 智邦国际CRM系统核心功能作用
- HCNP——动态路由协议及分类和最长前缀匹配
- DTOJ 2313:定价(absurd)
- JavaScript 语言入门
- 锐捷NBR100恢复出厂设置
- 深度学习评价指标总结及代码实现
- keras2onnx转换时出现AttributeError: ‘KerasTensor‘ object has no attribute ‘graph’错误