博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
均值滤波
阅读量:6721 次
发布时间:2019-06-25

本文共 1305 字,大约阅读时间需要 4 分钟。

学习DIP第1天

              均值滤波,是比較简单的滤波方式。比較典型的是以3x3的模板对核心(或者称为锚点)的元素及其周围八个元素进行求和并除以元素个数(即9)得到的值将原值覆盖,主要的实现方法为四层循环,算法时间复杂度:

O(w*h*m*n)

        当中w,h为图像宽和长。m。n为模板宽和长。

该算法有优化方法,将在以后的博文中讨论。

        代码使用OpenCV1.0编写,因为代码水平有限,望请见谅0.0

#include 
#include
#include
#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
width-kernel_size/2;i++) for(int j=kernel_size/2;j
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的模板进行处理

均值滤波的缺点是:不能非常好的保存边缘信息

你可能感兴趣的文章
自动化运维的5大好处
查看>>
又遇到Python另外一个问题:函数作参数,怎么传递参数?
查看>>
springboot oauth2 跨域设置
查看>>
中文分词算法 之 词典机制性能优化与测试
查看>>
总结素材
查看>>
SpringBoot非官方教程 | 终章:文章汇总
查看>>
不懂技术,该如何进行互联网创业?
查看>>
MySQL show processlist说明
查看>>
Redis配置文件参数说明
查看>>
去除pdf的密码
查看>>
Nginx 的学习笔记
查看>>
Swift 懒加载 lazy
查看>>
Java中的OneToMany
查看>>
git@oschina 上的web项目基础框架
查看>>
个人整理.net下强大的开源控件
查看>>
ThinkPHP-模板指南-比较标签
查看>>
QTableView中表头宽度设置
查看>>
Java 数据结构
查看>>
敏捷(六)收集用户故事
查看>>
html显示json
查看>>