图像均值滤波java代码,数字图像处理 均值滤波

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

方法一:filter2

成都创新互联公司专注于成都企业网站建设,响应式网站设计,商城开发。成都网站建设公司,为成都等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

clear all;

I=imread('lena.bmp');

%读入预处理图像

imshow(I)

%显示预处理图像

K1=filter2(fspecial('average',3),I)/255;

%进行3*3均值滤波

K2=filter2(fspecial('average',5),I)/255;

%进行5*5均值滤波

K3=filter2(fspecial('average',7),I)/255;

%进行7*7均值滤波

figure,imshow(K1)

figure,imshow(K2)

figure,imshow(K3)

方法二:双循环语句,移动平均法

%均值滤波

clc,clear;

f=imread('lena.bmp');

subplot(121),imshow(f),title('原图');

f1=imnoise(f,'gaussian',0.002,0.0008);

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

k1=floor(3/2)+1;

k2=floor(3/2)+1;

X=f1;

[M,N]=size(X);

uint8 Y=zeros(M,N);

funBox=zeros(3,3);

for i=1:M-3

for j=1:N-3

funBox=X(i:i+3,j:j+3);

s=sum(funBox(:));

h=s/9;

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

end;

end;

Y=Y/255;

subplot(122),imshow(Y),title('均值滤波');

实现图:

均值滤波

一. 均值滤波简介和原理

均值滤波,是图像处理中常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高频信号将会去掉。均值滤波可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素。

    以3*3均值滤波器为例,均值滤波器算法原理如下图:

二. 用均值滤波器对椒盐噪声污染后的图像去噪

    python 源码:

import cv2

import numpy as np

# mean filter

def mean_filter(img, K_size=3):

H, W, C = img.shape

# zero padding

pad = K_size // 2

out = np.zeros((H + pad * 2, W + pad * 2, C), dtype=np.float)

out[pad: pad + H, pad: pad + W] = img.copy().astype(np.float)

tmp = out.copy()

# filtering

for y in range(H):

    for x in range(W):

        for c in range(C):

            out[pad + y, pad + x, c] = np.mean(tmp[y: y + K_size, x: x + K_size, c])

out = out[pad: pad + H, pad: pad + W].astype(np.uint8)

return out

# Read image

img = cv2.imread("../paojie_sp1.jpg")

# Mean Filter

out = mean_filter(img, K_size=5)

# Save result

cv2.imwrite("out.jpg", out)

cv2.imshow("result", out)

cv2.waitKey(0)

cv2.destroyAllWindows()

三. 实验结果:

    可以看到,均值滤波后,图像中噪声虽然有所减弱,但是图像变模糊了。因为均值滤波器过滤掉了图像中的高频分量,所以图像的边缘都变模糊了。(去除一定量椒盐噪声,可以考虑使用中值滤波)

四. 参考内容:

怎样用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的滤波器采用镜像边界法做均值滤波。

求分析均值滤波去除图像噪声效果不好的原因(有图有代码,VC++)

应该另外开辟一个空间保存新计算的图像像素值,你这样是把前面计算好的中值或者均值算到它临近点的3*3区域里了,这样的效果应该是图像从左上到右下越来越白或者越来越黑。

对于椒盐噪声,中值滤波的效果好;对于高斯噪声,均值滤波的效果好。

用matlab图像处理均值滤波 不转换成灰度 直接把彩色的图片进行处理的代码

rgb=imread('flower.jpg');

fR=rgb(:,:,1);

fG=rgb(:,:,2);

fB=rgb(:,:,3);

w=fspecial('average');

fR_filtered=imfilter(fR,w);

fG_filtered=imfilter(fG,w);

fB_filtered=imfilter(fB,w);

rgb_filtered=cat(3,fR_filtered,fG_filtered,fB_filtered);

用MATLAB编程实现均值滤波算法?

1:smoothingAverageFilterMain.mclc;clear;fid = fopen('lenai.raw');temp= fread(fid, [256,256]);LenaRaw=uint8(temp');subplot(1,2,1) Imshow(LenaRaw);title('原始图像')subplot(1,2,2) Imshow(smoothingAverageFilter(LenaRaw,3));title('自制函数,使用用3*3模板,均值滤波图像')2:smoothingAverageFilter.mfunction returnData=smoothingAverageFilter(arg,arg2)[Iwidth,Ilength]=size(arg);temp=double(arg);returnData=zeros(Iwidth,Ilength);totalLength=arg2*arg2;for i=1:Iwidth-arg2+1 for j=1:Ilength-arg2+1 % temp(i,j)=average(arg(i:i+arg2,j:j+arg2)); sum=0.0; for n=1:arg2 for k=1:arg2 sum=sum+temp(i+n-1,j+k-1); end end returnData(i,j)=sum/totalLength; endendreturnData=uint8(returnData);end


网站栏目:图像均值滤波java代码,数字图像处理 均值滤波
URL分享:http://azwzsj.com/article/hopsjc.html