java均值滤波代码 均值滤波的模板

使用C++代码完成 均值滤波器、中值滤波器、最大值滤波器、最小值滤波器分别对灰度图进行滤波

//中值滤波和均值大概这个样子

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了山南免费建站欢迎大家使用!

int nByteWidth=nWidth*3;

if (nByteWidth%4) nByteWidth+=4-(nByteWidth%4);

BYTE p[9],s;

int i,j;

for(y=1;ynHeight-1;y++)

{

for(x=3;xnWidth*3-3;x++)

{

//把一个像素周围的8个像素值分别赋值给p[0]到p[8]

p[0]=lpInput[x-3+(y-1)*nByteWidth];

p[1]=lpInput[x+(y-1)*nByteWidth];

p[2]=lpInput[x+3+(y-1)*nByteWidth];

p[3]=lpInput[x-3+y*nByteWidth];

p[4]=lpInput[x+y*nByteWidth];

p[5]=lpInput[x+3+y*nByteWidth];

p[6]=lpInput[x-3+(y+1)*nByteWidth];

p[7]=lpInput[x+(y+1)*nByteWidth];

p[8]=lpInput[x+3+(y+1)*nByteWidth];

//将p[0]到p[8]从小到大排列

for(j=0;j5;j++)

{

for(i=j+1;i9;i++)

{

if (p[j]p[i])

{

s=p[j];

p[j]=p[i];

p[i]=s;

}

}

}

//将各点的中值赋值给该像素

lpOutput[x+y*nByteWidth]=p[4];

}

//----------------------------------------

int sr,sg,sb;

int nByteWidth=nWidth*3;

if (nByteWidth%4) nByteWidth+=4-(nByteWidth%4);

for(y=1;ynHeight-1;y++)

{

for(x=1;xnWidth-1;x++)

{

p=x*3+y*nByteWidth;

sb=0;

sg=0;

sr=0;

for(y1=-1;y1=1;y1++)

for(x1=-1;x1=1;x1++)

{

//像素本身及其周围的八个像素(3X3窗口内的像素)的blue值之和

sb+=lpInput[(y+y1)*nByteWidth+(x+x1)*3];

//像素本身及其周围的八个像素(3X3窗口内的像素)的green值之和

sg+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+1];

//像素本身及其周围的八个像素(3X3窗口内的像素)的red值之和

sr+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+2];

}

//将red,green,blue值的平均值赋值给该像素

lpOutput[p+2]=sr/9;

lpOutput[p+1]=sg/9;

lpOutput[p]=sb/9;

}

}

均值滤波

  均值滤波是指用当前像素点周围N·N个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,即可完成整幅图像的均值滤波。

例如,希望对图7-7中位于第5行第5列的像素点进行均值滤波。

根据上述运算,针对每一个像素点,都是与一个内部值均为1/25的5×5矩阵相乘,得到均值滤波的计算结果,如图7-11所示。

将使用的5×5矩阵一般化,可以得到如图7-12所示的结果。

式中,M和N分别对应高度和宽度。一般情况下,M和N是相等的,例如比较常用的3×3、5×5、7×7等。如果M和N的值越大,参与运算的像素点数量就越多,图像失真越严重。

在OpenCV中,实现均值滤波的函数是cv2.blur(),其语法格式为:

式中:

通常情况下,使用均值滤波函数时,对于锚点anchor和边界样式borderType,直接采用其默认值即可。

【例7.2】针对噪声图像,使用不同大小的卷积核对其进行均值滤波,并显示均值滤波的情况。

  从图中可以看出,使用5×5的卷积核进行滤波处理时,图像的失真不明显;而使用30×30的卷积核进行滤波处理时,图像的失真情况较明显。

  卷积核越大,参与到均值运算中的像素就会越多,即当前点计算的是更多点的像素值的平均值。因此,卷积核越大,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重。在实际处理中,要在失真和去噪效果之间取得平衡,选取合适大小的卷积核。

编写用均值滤波去噪的matlab程序,用两种方法实现.(重谢)

1、双循环语句,移动平均法。

p双循环语句,移动平均法/p p%均值滤波/p

pclc,clear;/p

pf=imread('lena.bmp');/p

psubplot(121),imshow(f),title('原图');/p

pf1=imnoise(f,'gaussian',0.002,0.0008);/p

p%subplot(222),imshow(f1),title('添加高斯噪声图');/p

pk1=floor(3/2)+1;/p

pk2=floor(3/2)+1;/p pX=f1;/p

p[M,N]=size(X);/p puint8 Y=zeros(M,N);/p

pfunBox=zeros(3,3);/p pfor i=1:M-3 /p

p for j=1:N-3 /p p funBox=X(i:i+3,j:j+3); /p

p s=sum(funBox(:));/p p h=s/9; /p

p Y(i+k1,j+k2)=h; /p p end;/p

pend;/p pY=Y/255;/p

psubplot(122),imshow(Y),title('均值滤波');/p

p实现图:/p

2、filter2。

pfilter2/p

pclear all;/p

pI=imread('lena.bmp');/p

p%读入预处理图像/p

pimshow(I)/p p%显示预处理图像/p

pK1=filter2(fspecial('average',3),I)/255;/p p%进行3*3均值滤波/p

pK2=filter2(fspecial('average',5),I)/255;/p p%进行5*5均值滤波/p

pK3=filter2(fspecial('average',7),I)/255;/p p%进行7*7均值滤波/p

pfigure,imshow(K1)/p pfigure,imshow(K2)/p

pfigure,imshow(K3)/p

怎样用MATLAB实现中值和均值滤波

中值滤波楼上答了,5*5的均值滤波代码 w2=fspecial('average',[5 5]); %% 先定义一个滤波器 h=imfilter(a,w2,'replicate'); %%让图像通过滤波器 imshow(h); imwrite(h,'8.jpg');

均值滤波是

I=medfilt2(a,[3 3],'symmetric')

可以在matlab中查询medfilt函数的用法,本例是使用3*3的滤波器采用镜像边界法做均值滤波。

网页名称:java均值滤波代码 均值滤波的模板
链接地址:https://www.cdcxhl.com/article8/ddecsip.html

成都网站建设公司_创新互联,为您提供企业建站域名注册品牌网站设计移动网站建设软件开发动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作