当前位置:首页 > 代码 > 正文

图像滤波matlab代码(基于matlab的图像滤波算法研究与设计)

admin 发布:2022-12-19 13:13 100


本篇文章给大家谈谈图像滤波matlab代码,以及基于matlab的图像滤波算法研究与设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样用matlab进行图像滤波处理

1、打开软件,读入图片。

2、分别建立3*3高斯滤波模板和平均滤波模板,并对加噪的图片进行滤波处理。显示原图、加噪后的图片和分别用高斯、平均模板滤波后的图片。

3、图片结果如图,可以看出平均模板滤波后噪声十分明显,高斯模板滤波后噪声影响相对较小,但也很容易看出。

4、使用中值滤波对图片进行处理,并显示处理后的图像。

5、从图片可以看出,中值滤波后的图像基本上看不出来噪声的影响。完成保存就可以了。

彩色图像中值滤波matlab语言实现程序

I=imread('lena.bmp');

inf=imfinfo('lena.bmp')

figure,imshow(I)

X=grayslice(I,64);

imshow(X,pink(64))

load trees

figure,image(10,10,X)

imwrite(X,map,'trees.bmp');

imfinfo('trees.bmp')

figure,imshow(X,map)

BW=im2bw(X,map,0.6);

figure,imshow(BW)

I=imread('lena.bmp');

inf=imfinfo('lena.bmp')

figure,imshow(I)

X=grayslice(I,64);

figure,imshow(X,pink(64))

A=imread('lena.bmp');

imshow(A)

B=fftshift(fft2(A));

figure;

imshow(log(abs(B)),[8,10])

clc;

clear all;

I=imread('lena.tif');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %用中值滤波,多维滤波,使用中心为-4,-8的拉普

% %拉斯滤波器,高斯低通滤波,拉普拉斯滤波器进行滤波处理

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure;%figure1

subplot(2,2,1);

imshow(I);

title('原始图像');

J=imnoise(I,'salt pepper',0.04);%加椒盐噪声

title('加椒盐噪声');

subplot(2,2,2);

imshow(J);

K=medfilt2(J,[4,4])%进行中值滤波;

subplot(2,2,3);

imshow(K);

title('进行中值滤波');

h=ones(3,3)/9;%多维滤波

w=h;

g=imfilter(I,w,'conv','replicate')

subplot(2,2,4);

imshow(g);

title('多维滤波');

%使用中心为-4,-8的拉普拉斯滤波器,

w4=[1 1 1;

1 -4 1;

1 1 1];

w8=[1 1 1;

1 -8 1;

1 1 1];

f=im2double(I);

g4=f-imfilter(f,w4,'replicate');

g8=f-imfilter(f,w8,'replicate');

imshow(f);

figure;%figure2

subplot(1,2,1);

imshow(g4);

title('中心为-4的拉普拉斯滤波');

subplot(1,2,2);

imshow(g8);

title('中心为-8的拉普拉斯滤波');

h3=fspecial('gaussian',[3,3],0.5);%高斯低通滤波

figure;%figure3

B4=filter2(h3,I);

subplot(1,2,1);

imshow(B4,[ ]);

title('高斯低通滤波');

h4=fspecial('laplacian',0);%使用拉普拉斯滤波器

B5=filter2(h4,I);

subplot(1,2,2);

imshow(B5,[ ]);

title('拉普拉斯滤波器');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %从空域的角度进行亮度变换

% %把灰度等级是10-100的变化到10-255

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure;%figure4

subplot(2,2,1);

imshow(I);

title('原始图像');

J2=imadjust(I,[],[],0.5);% 增强低灰度级

subplot(2,2,2);

imshow(J2);

title('增强低灰度级');

J3=imadjust(I,[ ],[ ],2);%增强高灰度级

subplot(2,2,3);

imshow(J3);

title('增强高灰度级');

a1=100/255;%把灰度等级是10-100的变化到10-255

a2=255/255;

a3=10/255;

J2=imadjust(I,[a3,a1],[a3,a2],[]);

subplot(2,2,4);

imshow(J2);

title('把灰度等级是10-100的变化到10-255');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %从频域的角度进行亮度变换

% %fft2

% %由于能量主要集中在低频部分

% %所以对低频进行处理可以得到理想的效果

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('lena.tif');

up=0.5;%设置处理频率上限

down=0.09%%设置处理频率下限

figure;%figure5

subplot(421);

imshow(I);

title('原始图像');

f=double(I);

subplot(4,2,3);

imshow(log(abs(f)),[]);

title('unit8转化为double');

g=fft2(f);

g=fftshift(g);

subplot(4,2,5);

imshow(log(abs(g)),[]);

title('FFT2变化后的图像');

[M,N]=size(g);% 转换数据矩阵

y1=max(max(abs(g)));%求出最大频率

y2=min(min(abs(g)));%%求出最小频率

y3=(y1-y2)*up+y2;%设置滤波上限

y4=(y1-y2)*down+y2;%%设置滤波下限

for i=1:M

for j=1:N

if (abs(g(i,j))y4)

g(i,j)=g(i,j)^1.1;%对低频部分进行灰度增强

end

end

end

result=ifftshift(g);

J2=ifft2(result);

J3=uint8(abs(J2));

subplot(427);

imshow(J3,[ ]);

title('频域处理后的图像');

subplot(422)

imhist(I,64);

subplot(424)

imhist(f,64);

subplot(426)

imhist(g,64);

subplot(428)

imhist(J3,64);

急急急!图像逆滤波与维纳滤波的程序代码(matlab)

clc;clear all;

%读原始图像%

format long

Blurred=imread('fig525(b).bmp');

subplot(1,2,1);imshow( Blurred);title('原图像');

%自编函数进行维纳滤波%

k=0.0025;

[m,n]=size(Blurred);

spectrum=zeros(m,n);

H=zeros(m,n);

for u=1:m

for v=1:n

H(u,v)=exp(-k*((u-m/2)^2+(v-n/2)^2)^(5/6));

spectrum(u,v)=H(u,v)^2;

end

end

f=double(Blurred);

F1=fftshift(fft2(f));

HW=H./(spectrum+0.001);

restore1=HW.*F1;

restored=real(ifft2(ifftshift(restore1)));

subplot(1,2,2);imshow(restored,[]);title('自编函数进行维纳滤波');

%调用matlab提供的维纳滤波函数%

figure;

hw1=real(ifft2(ifftshift(H)));%转化到空域上来

result1=deconvwnr(Blurred,hw1,0.001);

result2=ifftshift(result1);%再去图像进行1,3象限对调,2与4象限对调

subplot(1,2,1);imshow(result2,[]);title('调用维纳滤波函数');

基于MATLAB,对彩色图像进行中值滤波

1、阅读图片,以pout.tif为例,加上盐和胡椒噪音。

2、分别建立3×3高斯滤波器模板和平均滤波器模板,并对经过噪声添加的图像进行滤波。显示原始图像,噪声图像和由高斯和平均模板过滤的图像。

3、图片结果如图所示。可以看出,平均模板滤波后的噪声非常明显。高斯模板滤波的噪声影响相对较小。

4、之后我们选择输入代码进行过滤,并显示处理后的图像。

5、中值滤波图像基本上不显示噪声的影响。效果如下。

一道基于matlab的数字图像滤波

clear;

close

all;

I

=

imread('eight.tif');

J

=

imnoise(I,'salt

pepper',0.02);

K

=

medfilt2(J);

imshow(J);title('噪声干扰图像')

figure,

imshow(K);title('medfilt2滤波图像')

X=J;a=2;b=2;

k=floor(a*b/2)+1;

[M,N]=size(X);

uint8

Y=zeros(M,N);

funBox=zeros(a,b);

temp=zeros(a*b);

for

i=1:M-a

for

j=1:N-b

funBox=X(i:i+a,j:j+b);

temp=funBox(:);

tempSort=sort(temp);

Y(i,j)=tempSort(k);

end;

end;

figure,

imshow(Y);title('自编程序滤波图像')

clear;

close

all;

c=imread('123.png');

%把彩色图片转化成灰度图片,256级

figure,imshow(c),title('原始图象');

%显示原始图象

g=imnoise(c,'gaussian',0.1,0.002);

%加入高斯噪声

figure,imshow(g),title('加入高斯噪声之后的图象');

%显示加入高斯噪声之后的图象

%实验步骤二:用系统预定义滤波器进行均值滤波

n=1;

A=fspecial('average',n);%生成系统预定义的3X3滤波器

Y=filter2(A,g)/255;

%用生成的滤波器进行滤波,并归一化

figure,imshow(Y),title('系统函数滤波图像');

%显示滤波后的图象

a(1:n,1:n)=1;

%a即n×n模板,元素全是1

p=size(g);

%输入图像是p×q的,且pn,qn

x1=double(g);

x2=x1;

%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素

for

i=1:p(1)-n+1

for

j=1:p(2)-n+1

c=x1(i:i+(n-1),j:j+(n-1)).*a;

%取出x1中从(i,j)开始的n行n列元素与模板相乘

s=sum(sum(c));

%求c矩阵(即模板)中各元素之和

x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);

%将模板各元素的均值赋给模板中心位置的元素

end

end

%未被赋值的元素取原值

d=uint8(x2);

%实验步骤三:用自己的编写的函数进行均值滤波

%调用自编函数进行均值滤波,n为模板大小

figure,imshow(d),title('自编程序滤波图像');

%显示滤波后的图象

图像滤波matlab代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于基于matlab的图像滤波算法研究与设计、图像滤波matlab代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/8627.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载