c语言均值滤波程序,均值滤波C语言代码实现的一种简单方式
计算均值滤波时,需要每次求数组的和,再求均值,一般先放入一个数组,循环移出最后一个旧的值循环移入新的值
一般原来的做法
/******************************************************************************/
/**
* @param[in] data[3] 每次处理一组三维的数据,每个数据都需要均值滤波
* fifo:中间存数据的数组三维数组,在使用前定义
* len: N个值的均值滤波,比如len=5,代表5个点取一个均值
* output:均值滤波后的数据,三维的
* idx:均值滤波后的值对应的下标
* @return
*
*
*******************************************************************************/
void AvgFilter1(float data[3], float fifo[][FILTER_SIZE], int len, float output[][BUF_SIZE], int idx)
{
float sum1, sum2, sum3;
uint8_t i;
//mexPrintf("%d", data[1]);
for (i = 1; i < len; i++)
{
fifo[0][i - 1] = fifo[0][i];
fifo[1][i - 1] = fifo[1][i];
fifo[2][i - 1] = fifo[2][i];
}
fifo[0][len - 1] = data[0];
fifo[1][len - 1] = data[1];
fifo[2][len - 1] = data[2];
sum1 = 0;
sum2 = 0;
sum3 = 0;
for (i = 0; i < len; i++)
{
sum1 += fifo[0][i];
sum2 += fifo[1][i];
sum3 += fifo[2][i];
}
output[0][idx] = (sum1 / len);
output[1][idx] = (sum2 / len);
output[2][idx] = (sum3 / len);
//mexPrintf("output:\n");
if (idx== BUF_SIZE)
{
for (i=0;i
可以修改为新的做法
/******************************************************************************/
/** SIZE: 相当于len, 均值滤波的个数
* @param[in] deal with data one by one and get the average
* data: three axis' data
* fifo: Cache intermediate data
* len: the length of average's data
* output: output of average's data
* @return
*
*
*******************************************************************************/
void AvgFilter(float data[3], float fifo[][SIZE], float output[][BUF_SIZE], int idx)
{
/* filter_buff, FILTER_SIZE */
static uint8_t data_index = 0;
static float sum_x=0, sum_y=0, sum_z=0;
float fir_x, fir_y, fir_z;
uint8_t fir_pos;
/* find the index-9' data */
fir_x = fifo[0][data_index];
fir_y = fifo[1][data_index];
fir_z = fifo[2][data_index];
fifo[0][data_index] = data[0];
fifo[1][data_index] = data[1];
fifo[2][data_index] = data[2];
data_index = (data_index + 1) % SIZE;
sum_x += data[0];
sum_y += data[1];
sum_z += data[2];
sum_x -= fir_x;
sum_y -= fir_y;
sum_z -= fir_z;
output[0][idx] = (sum_x / SIZE);
output[1][idx] = (sum_y / SIZE);
output[2][idx] = (sum_z / SIZE);
}
这样运算量大大减少,将数据存放到一个数组组成的环形buffer中,每次取当前index的前一个value[index],在sum和中减去value,再加上新的数据,即为当前数组的数据和,再求均值。
c语言均值滤波程序,均值滤波C语言代码实现的一种简单方式相关推荐
- c语言低通滤波程序,一阶低通滤波器c语言
1. 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一阶低通滤波.是使用软件编程实现普通硬件RC低通滤波器的功能. 一阶低通滤波的算法公式为: Y(n)=αX(n) (1-α)Y(n-1) 式中: ...
- c语言第一次作业程序题pta,c语言第一次作业程序题pta
c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...
- C语言的延时程序怎么改,C语言延时子程序准确设置
在给单片机写程序的时候往往需要一个微秒或者毫秒的延时子程序,但是C语言不同于汇编,很难根据语句确定准确的延时时间,经过各种查资料得到一种简单实用的方法:通过keil下断点调试确定时间. 就是编写一个延 ...
- c语言开发窗口程序,怎么用c语言做一个界面?
https://m.zjurl.cn/answer/6697137038547747083/?app=news_article&app_id=26&share_ansid=669713 ...
- 程序员如何发展第二职业?这几种副业方式超赚钱
很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑. 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了. 发展第二职业,可以让程序员们增加抗风险能力, ...
- python程序员如何发展第二职业?这几种副业方式超赚钱
很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑. 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了. 发展第二职业,可以让程序员们增加抗风险能力, ...
- c语言均值滤波程序,均值滤波和均值滤波算法程序
描述 均值滤波 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像 ...
- c语言程序设计学生程序查询,《c语言程序设计报告-学生信息管理系统》.doc
<c语言程序设计报告-学生信息管理系统> 中南大学 ? ? C语言程序设计实践报告 ? ? ? ? ? 题 目 学生信息管理系统 学生姓名 张眼 指导教师 刘伟荣 学 院 信息科学与工程学 ...
- 小程序开发语言python_小程序是用什么语言开发的?5种最佳语言分享
你应该学习哪种编程语言来探索AI的深度?当然,你会需要一个拥有许多优秀机器学习和深度学习库的语言.它还应具有良好的运行时性能,良好的工具支持,大量程序员社区以及健康的支持包生态系统.这仍然留下了很多不 ...
最新文章
- Facebook 开源高质量实例分割数据集 LVIS
- 七周七并发之线程与锁
- java将图片放进mysql中_在java代码中怎么从服务器上把图片拿来放到数据库里
- spring几种获取 HttpServletRequest 对象的方式
- windows 安装yaml支持和pytest支持等
- mysql innodb status_查看innodb的运行状态
- 【MOSS】快速调试Sharepoint站点
- java程序语言228_2019年Java面试题基础系列228道(5)
- linux下的文件系统,Linux根文件系统(“/”文件系统)下的目录介绍
- 得到当前python解释器的路径
- 关于CodeReview
- esri-leaflet入门教程(1)-leaflet介绍
- 推荐7 款实用好用的电脑软件
- 【北京迅为】i.MX6ULL终结者虚拟机安装Ubuntu系统
- 如何在网易云音乐上正常听周杰伦的歌曲
- XMind8破解版安装
- 爱快可以外接文件服务器吗,听说爱快路由器也支持NAS了?
- [Codeup]1814 问题 A: 剩下的树
- 【node】mac系统下升级node版本
- 【C#进阶二】C#中的正则表达式知识总结(字符转义/字符类/ 定位点/ 分组构造 /数量词/反向引用构造/替换构造/替代/正则表达式选项)(理论篇)
热门文章
- 【渝粤题库】广东开放大学 计算机应用基础(本) 形成性考核
- lora模块在牛联网和智慧农业中的应用案列
- DC/DC开关电源设计
- python怎么输入两行_python交互模式下输入换行/输入多行命令的方法
- ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据
- 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)
- 6000毫安以上智能手机_三星超长续航神机,6000毫安+128GB,上市半年不到跌至1499...
- pthread vs openMP之我见
- CIFAR和SVHN在各CNN论文中的结果
- linux中查找文件属于那个软件包的方法