均值滤波的定义及效果

算术均值滤波器的定义很简单,我们假设滑动窗口大小是 3*3, 我们使用 3*3 的窗口在原始输入图片上进行滑动,每滑动一次就计算滑动窗口中 9 个像素的均值作为目标图像像素。

均值滤波效果:我们输入一张图片,然后使用均值滤波进行滤波,得到我们的滤波后的图像。右图是我们用 5*5 的滑动窗口进行均值滤波后的结果,左边是我们对应的原始图像。

均值滤波存在两个明显的问题

<1> 某个突变像素回影响到周围像素的值

<2> 均值滤波会导致边缘信息丢失

这两个问题可以用中值滤波得到解决,但是中值滤波计算时间消耗比较大 。边缘信息会丢失的问题提出了一种改进的均值滤波器: 首先设定一个阈值, 当中心像素点的像素值与平均值差的绝对值大于阈值的时候才做滤波处理。这样既可以对噪声进行平滑,图像细节上的损失也很小。

实现代码:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <time.h>
using namespace std;
using namespace cv;void myblur(const Mat& src, Mat& dst, Size ksize)
{//若模板不是奇数模板,则报错退出if (ksize.width % 2 == 0 || ksize.height % 2 == 0){cout << "please input odd ksize!" << endl;exit(-1);}//根据ksize大小扩充模板边界int awidth = (ksize.width - 1) / 2;int aheight = (ksize.height - 1) / 2;Mat asrc;copyMakeBorder(src, asrc, aheight, aheight, awidth, awidth, BORDER_DEFAULT);//根据图像通道数遍历图像求均值//通道数为1if (src.channels() == 1){for (int i = aheight; i < src.rows + aheight; i++){for (int j = awidth; j < src.cols + awidth; j++){int sum = 0;int mean = 0;for (int k = i - aheight; k <= i + aheight; k++){for (int l = j - awidth; l <= j + awidth; l++){sum += asrc.at<uchar>(k, l);}}mean = sum / (ksize.width*ksize.height);dst.at<uchar>(i - aheight, j - awidth) = mean;}}}//通道数为3 //以扩展后的图像为基准,遍历原图像像素if (src.channels() == 3){for (int i = aheight; i < src.rows + aheight; i++){for (int j = awidth; j < src.cols + awidth; j++){int sum[3] = { 0 };int mean[3] = { 0 };//依次遍历模板像素,求取均值for (int k = i - aheight; k <= i + aheight; k++){for (int l = j - awidth; l <= j + awidth; l++){sum[0] += asrc.at<Vec3b>(k, l)[0];sum[1] += asrc.at<Vec3b>(k, l)[1];sum[2] += asrc.at<Vec3b>(k, l)[2];}}for (int m = 0; m < 3; m++){mean[m] = sum[m] / (ksize.width*ksize.height);dst.at<Vec3b>(i - aheight, j - awidth)[m] = mean[m];}}}}
}
int main()
{Mat src = imread("1.jpg");Mat dst1, dst2;dst1 = Mat::zeros(src.size(), src.type());myblur(src, dst1, Size(5, 5));imshow("myblur", dst1);blur(src, dst2, Size(5, 5));imshow("blur", dst2);waitKey();return 0;
}

原生API效果:

自实现效果:

C++手写均值滤波算法相关推荐

  1. python手写均值滤波器_python手写均值滤波

    本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下 原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加除以模板的尺寸大小取平均为滤波后的值. 代码如下: imp ...

  2. 均值滤波python实现_python手写均值滤波

    本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下 原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加除以模板的尺寸大小取平均为滤波后的值. 代码如下: imp ...

  3. python手写均值滤波锐化_中值滤波,均值滤波,锐化滤波原理

    1 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级 学号 姓名 指导教师 成绩 实验题目 实验时间 1. 题目概 ...

  4. 手写识别python_Python徒手实现识别手写数字—图像识别算法(K最近邻)

    Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...

  5. 负载均衡轮询算法和服务器性能,SpringCloud-Ribbon负载均衡机制、手写轮询算法

    Ribbon 内置的负载均衡规则 在 com.netflix.loadbalancer 包下有一个接口 IRule,它可以根据特定的算法从服务列表中选取一个要访问的服务,默认使用的是「轮询机制」 Ro ...

  6. 手写笔迹还原算法(InkCanvas)

    因产品需求,我们打造了自主的画笔组件InkCanvas,在我们的项目纸笔课堂.晓课堂中得到了很好的应用.同时我们也通过技术输出,在直播云项目中集成了组件的核心算法,升级了其涂鸦功能中的笔迹展示效果,在 ...

  7. 非局部均值滤波算法(NL-means)

    非局部均值滤波算法(NL-means) 今天来学习一下另一类滤波算法:非局部均值滤波算法(NL-means).非局部均值滤波算法最早于2005年由Buades等人发表在CVPR上,论文原文:A non ...

  8. 基于深度学习的手写数字识别算法Python实现

    摘 要 深度学习是传统机器学习下的一个分支,得益于近些年来计算机硬件计算能力质的飞跃,使得深度学习成为了当下热门之一.手写数字识别更是深度学习入门的经典案例,学习和理解其背后的原理对于深度学习的理解有 ...

  9. Python徒手实现识别手写数字—图像识别算法(K最近邻)

    Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...

最新文章

  1. rabbitmq python 消费者_菜鸟世界 -RabbitMQ---消费者示例
  2. DHCP自动分配地址;DHCP指定IP给客户端
  3. Android用摄像头的那点破事
  4. iOS基本UI控件总结
  5. python编程自学能学会吗-自学Python会有什么困难?老男孩自学python编程
  6. oracle v$system_event,45.Oracle杂记——Oracle常用动态视图v$system_event
  7. 计算机视觉牛人(转载)(最早在自动化所论坛上发现的)
  8. 《Python 黑科技》探查Mysql数据库,输出数据质量报告
  9. Android 系统(229)---OTA
  10. 垂直旋转转台电机选型_高精密YRT转台轴承概览
  11. vue用阿里云oss上传图片使用分片上传只能上传100kb以内的解决办法 1
  12. macos复制粘贴快捷键 快速_苹果电脑复制粘贴快捷键是什么 如何操作【图文】...
  13. 从零开始的计网学习——计算机网络概述(计网入门就看这篇!)
  14. 白盒测试——循环测试
  15. Android开发中所需颜色的RGB值
  16. Python基础知识-pycharm版-02
  17. alibab的滑动验证
  18. elementui 利用周选择器 获取周一到周五的日期 和当前周
  19. ava NIO(3): IO模型
  20. Nginx-第一天--HTTP

热门文章

  1. 程序员碰到哪种公司要赶快提桶跑路
  2. 华为无线AP和AC配置实验
  3. 2020年的春节,我们一起抗击新型冠状病毒
  4. IM品头论足:内存占用谁最省?
  5. 模型预测精度(数值regression)评价指标 - RMSE, MAE, MAPE Bias哪个指标更好?Forecast KPIs: RMSE, MAE, MAPE Bias
  6. $.each与$().each的区别
  7. 00后整顿职场?网传一公司反手成立“专管00后部门”
  8. 第一篇,祝各位圣诞快乐,也祝福自己!~
  9. jQuery入口函数
  10. springboot项目jar包启动脚本