均值滤波
来源:互联网 发布:秋天 连衣裙 搭配 知乎 编辑:程序博客网 时间:2024/05/18 00:37
学习DIP第1天
均值滤波,是比较简单的滤波方式,比较典型的是以3x3的模板对核心(或者称为锚点)的元素及其周围八个元素进行求和并除以元素个数(即9)得到的值将原值覆盖,基本的实现方法为四层循环,算法时间复杂度:
O(w*h*m*n)
其中w,h为图像宽和长,m,n为模板宽和长。该算法有优化方法,将在以后的博文中讨论。
代码使用OpenCV1.0编写,由于代码水平有限,望请见谅0.0
#include <cv.h>#include <highgui.h>#include <stdio.h>#define GETPIX(image,x,y) ((unsigned char) (image->imageData)[(x)*image->width+(y)])#define SETPIX(image,x,y,value) (((image->imageData)[(x)*image->width+y])=((unsigned char)value))void mean(IplImage *src,IplImage * dst,int kernel_size){unsigned int temp=0;for(int i=kernel_size/2;i<src->width-kernel_size/2;i++)for(int j=kernel_size/2;j<src->height-kernel_size/2;j++){temp=0;for(int m=-kernel_size/2;m<=kernel_size/2;m++)for(int n=-kernel_size/2;n<=kernel_size/2;n++)temp+=GETPIX(src,i+m,j+n);SETPIX(dst,i,j,(unsigned char)(temp/(kernel_size*kernel_size)));}}int main(){IplImage * image = cvLoadImage("e:\\OpenCV_Image\\lena.jpg",0);IplImage * test =cvCreateImage(cvSize(512,512),image->depth,1);mean(image,test,11);cvNamedWindow("SRC");cvNamedWindow("DST");cvShowImage("SRC",image);cvShowImage("DST",test);cvWaitKey();cvReleaseImage(&image);cvDestoryWindow("SRC"); cvDestoryWindow("DST");}
从上到下依次采用3x3,5x5,11x11的模板进行处理
均值滤波的缺点是:不能很好的保存边缘信息
2 0
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波&阈值均值滤波
- 均值滤波 中值滤波 对称均值滤波
- 中值滤波VS.均值滤波
- 均值滤波vs中值滤波
- 图像处理:均值滤波
- K近邻均值滤波
- 对称邻近均值滤波
- 快速均值滤波
- 中值和均值滤波
- 均值滤波快速算法
- 均值滤波函数
- 移动均值滤波
- 1011. World Cup Betting (20)
- 第十一周项目4 特殊的三位数
- 实现微信浏览器内打开App Store链接
- java基础类型String、StringBuffer、StringBuilder
- 实验室第八周周工作总结
- 均值滤波
- dll动态库开发-模拟socket通信
- log4j 详细使用
- 温故-C++ PRIMER 2014-11-23
- 如何把引用的jar包和本项目一起导出成jar文件
- sqlite中文排序相关
- Oracle之Check约束实例详解
- 将一个数组的非零元素移动到数组的前面,零元素置于数组的后面
- js如何判断用户是否是用微信浏览器