中值滤波和均值滤波C++代码

均值滤波和中值滤波代码

2008-11-24 16:07:36|  分类: 编程|举报|字号 订阅

//------------------均值滤波器

bool FilterAV(unsigned char *image,int height,int width)

{

int i,j;

unsigned char *p=(unsigned char*)malloc(height*width);

for(i=1;i<height-1;i++)

{

for(j=1;j<width-1;j++)

{

p[i*width+j]=(unsigned char)(((int)image[(i-1)*width+j-1]

+(int)image[(i-1)*width+j]

+(int)image[(i-1)*width+j+1]

+(int)image[i*width+j-1]

+(int)image[i*width+j]

+(int)image[i*width+j+1]

+(int)image[(i+1)*width+j-1]

+(int)image[(i+1)*width+j]

+(int)image[(i+1)*width+j+1])/9);

}

}

for(i=1;i<height-1;i++)

{

for(j=1;j<width-1;j++)

{

image[i*width+j]=p[i*width+j];

}

}

free(p);

return true;

}

//----------------------------中值滤波器

bool FilterMid(unsigned char *image,int height,int width)

{

int i,j,k,l;

int pos;

unsigned char temp;

unsigned char psr[9];

unsigned char *p=(unsigned char*)malloc(height*width);

for(i=1;i<height-1;i++)

{

for(j=1;j<width-1;j++)

{     //---3*3窗口矩阵

psr[0]=image[(i-1)*width+j-1];

psr[1]=image[(i-1)*width+j];

psr[2]=image[(i-1)*width+j+1];

psr[3]=image[i*width+j-1];

psr[4]=image[i*width+j];

psr[5]=image[i*width+j+1];

psr[6]=image[(i+1)*width+j-1];

psr[7]=image[(i+1)*width+j];

psr[8]=image[(i+1)*width+j+1];

//--------选择排序

for(k=0;k<9;k++)

{

pos=k;

for(l=k;l<9;l++)

{

if(psr[l]<psr[pos])

pos=l;

}

temp=psr[k];

psr[k]=psr[pos];

psr[pos]=temp;

}

//------取中值

p[i*width+j]=psr[4];

}

}

for(i=1;i<height-1;i++)

{

for(j=1;j<width-1;j++)

{

image[i*width+j]=p[i*width+j];

}

}

free(p);

return true;

}

时间: 2024-10-26 16:10:41

中值滤波和均值滤波C++代码的相关文章

图像平滑技术之盒滤波、均值滤波、中值滤波、高斯滤波、双边滤波的原理概要及OpenCV代码实现

图像平滑是指直接对源图像的每个像素数据做邻域运算以达到平滑图像的目的.实质上主要就是通达卷积核算子实现的,卷积核算子的相关知识大家可以参考我写的博文http://blog.csdn.net/wenhao_ir/article/details/51691410 图像平滑也称为模糊或滤波,是图像处理中常用的技术之一,进行平滑处理时需要用到滤波器核(其实就是卷积核算子),根据滤波器核函数来实现不同的滤波技术.下面介绍几种 常用的图像平滑方法的大概原理及OpenCV下的实现代码. 一.盒滤波(均值滤波)

学习 opencv---(7) 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波

本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤波","高斯滤波"三种常见的邻域滤波操作.而作为非线性滤波的"中值滤波"和"双边滤波",我们下次再分析. 因为文章很长,如果详细啃的话,或许会消化不良.在这里给大家一个指引,如果是单单想要掌握这篇文章中讲解的OpenCV线性滤波相关的三个函

【opencv入门之五】线性滤波(方框滤波、均值滤波、高斯滤波)

参考网站:http://blog.csdn.net/poem_qianmo/article/details/22745559 1.boxFilter函数--方框滤波 void boxFilter(InputArray src, //输入图像 OutputArray dst, //输出图像 int ddepth, //输出图像的深度,-1表示使用原图深度,即 src.depth() Size ksize, //内核的大小,Size(w,h) Point anchor=Point(-1,-1), /

【opencv学习笔记1】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性. 图像滤波的目的 a.消除图像中混入的噪声 b.为图像识别抽取出图像特征 图像滤波的要求 a.不能损坏图像轮廓及边缘 b.图像视觉效果应当更好 滤波器的定义 滤波器,顾名思义,是对波进行过滤的器件.(摘自网络) 以上的定义是针对物理器件的,但对于图像滤波而言显然也是适用的. 大家都用过放大镜,这里就以此举一个例

均值滤波,中值滤波,最大最小值滤波

http://blog.csdn.net/fastbox/article/details/7984721 讨论如何使用卷积作为数学工具来处理图像,实现图像的滤波,其方法包含以下几种,均值 滤波,中值滤波,最大最小值滤波,关于什么是卷积以及理解卷积在图像处理中作用参见这 里–http://blog.csdn.net/jia20003/article/details/7038938 均值滤波: 均值滤波,是图像处理中最常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高 频信号将会去掉,因此可以

【OpenCV】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性.(摘自网络) 图像滤波的目的 1,消除图像中混入的噪声 2,为图像识别抽取出图像特征 图像滤波的要求 1,不能损坏图像轮廓及边缘 2,图像视觉效果应当更好 滤波器的定义 滤波器,顾名思义,是对波进行过滤的器件.(摘自网络) 以上的定义是针对物理器件的,但对于图像滤波而言显然也是适用的. 大家都用过放大镜,这里就

opencv初学习-椒盐噪声-中值滤波-均值滤波-腐蚀膨胀

#include <opencv2\opencv.hpp>#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgcodecs\imgcodecs.hpp>#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<iomanip>void salt(cv

均值滤波,中值滤波,最大值滤波,最小值滤波

均值滤波: 均值滤波是图像处理中常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高频信号将被去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能.理想的均值滤波是用每个像素和它周围像素计算出来的均值替换图像中每个像素.采样Kernel数据通常是3x3的矩阵,如下所示: 从左到右,从上到下计算图像中的每个像素,最终得到处理后的图像.均值滤波可以加上两个参数,即迭代次数,kernel数据大小. 一个相同大小的kernel,经过多次迭代效果会越来越好. 同样:迭代次数相同,均值滤波的效果

【OpenCV】邻域滤波:方框、高斯、中值、双边滤波

原文:http://blog.csdn.net/xiaowei_cqu/article/details/7785365 邻域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积禅城右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用的邻域算子,输入像素加权得到输出像素: 其中权重核   为“滤波系数”.上面的式子可以简记为: [方框滤波] 最简单的线性滤波是移动平均或方框滤波,用 窗口中的像素值平均后输出,核函数