图像增强实验代码.docx
- 文档编号:16717555
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:15
- 大小:524.90KB
图像增强实验代码.docx
《图像增强实验代码.docx》由会员分享,可在线阅读,更多相关《图像增强实验代码.docx(15页珍藏版)》请在冰点文库上搜索。
图像增强实验代码
图像增强
%1均衡化处理
I=imread('testpic\flower.jpg');
subplot(2,3,1),imshow(I);title('原图')
B=rgb2gray(I);
subplot(2,3,2),imshow(B);title('灰度图像');
subplot(2,3,3),imhist(B,50);title('直方图');
g=histeq(B);
subplot(2,3,4),imshow(g);title('均衡化后的图像');
subplot(2,3,5),imhist(g);title('均衡化后的直方图');
%2平滑滤波
I=imread('testpic\Lena.bmp');
a=imnoise(I,'salt');%加盐噪
subplot(2,2,1),imshow(I);title('原图');
subplot(2,2,2),imshow(a);title('加噪后');
%自带函数
h=fspecial('average');%3*3的邻域平均模板,生成均值滤波器
y=imfilter(a,h);%对图像进行滤波
subplot(2,2,3),imshow(y);title('自带函数');
%自写函数
Inew=myMidalp(a,3);%调用函数
subplot(2,2,4),imshow(Inew);title('自写函数');
自写函数myMidalp:
function[d]=myMidalp(x,n)
%x是给定的图像,n是滤波器的大小;本函数实现平滑滤波
a(1:
n,1:
n)=1;%a即n*n模板,元素全是1
[height,width]=size(x);
x1=double(x);
x2=x1;
fori=1:
width-n+1
forj=1:
height-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);
%3运用拉普拉斯算子梯度增强法进行图像锐化
[I,map]=imread('testpic\flower.jpg');
I=double(I);
[Gx,Gy]=gradient(I);%计算梯度
G=sqrt(Gx.*Gx+Gy.*Gy);%注意是矩阵点乘
J=I;
K=find(G<=7);%查找非零元素
J(K)=0;Q=find(G>=7);
J(Q)=255;
subplot(1,2,1),imshow(uint8(I));title('原图');
subplot(1,2,2),imshow(J,map);title('锐化后');
%4用中值滤波器进行滤波
I=imread('testpic/Lena.bmp');
noise=imnoise(I,'salt');
Inew=myMidal(noise,3);
subplot(1,2,1),imshow(noise);title('原图加噪后');
subplot(1,2,2),imshow(Inew);title('滤波后');
自写函数myMidal:
function[d]=myMidal(x,n)
%x是给定的图像,n是滤波器的大小;本函数实现中值滤波
[heigthwidth]=size(x);
x1=double(x);
x2=x1;
fori=1:
width-n+1
forj=1:
heigth-n+1
c=x1(i:
i+n-1,j:
j+n-1);%矩阵n行*n列
e=reshape(c,1,n*n);%将c变成向量
mm=median(e);%取中间值
x2(i+(n-1)/2,j+(n-1)/2)=mm;%模板中间坐标
end
end
d=uint8(x2);
%最大值滤波器
I2=imread('testpic\flower.jpg');
I1=rgb2gray(I2);
n=2;c=2;
mask=ones(n,n);
[r1,c1]=size(I1);
subplot(2,2,1);imshow(I2);title('原始图像');
subplot(2,2,2);imshow(I1);title('灰度图像');
I1=double(I1);
I1_max=I1;
mid=floor(n/2);
foru=1:
r1-n+1
forv=1:
c1-n+1
A=I1(u:
u+n-1,v:
v+n-1);
A=A.*mask;
I1_max(u+mid,v+mid)=max(max(A));
end
end
subplot(2,2,3);imshow(I1_max(mid+1:
r1-mid,mid+1:
c1-mid),[]);title('最大值图像');
%最小值滤波器
I2=imread('testpic\flower.jpg');
I1=rgb2gray(I2);
n=2;c=2;
mask=ones(n,n);
[r1,c1]=size(I1);
subplot(2,2,1);imshow(I2);title('原始图像');
subplot(2,2,2);imshow(I1);title('灰度图像');
I1=double(I1);
I1_min=I1;
mid=floor(n/2);%floor:
向下取整
foru=1:
r1-n+1
forv=1:
c1-n+1
A=I1(u:
u+n-1,v:
v+n-1);
A=A.*mask;
I1_min(u+mid,v+mid)=min(min(A));
end
end
subplot(2,2,3);imshow(I1_min(mid+1:
r1-mid,mid+1:
c1-mid),[]);title('最小值图像');
%5理想型
I=imread('testpic\lena.bmp');
F=fft2(I);
newF=fftshift(F);
[MN]=size(I);
d0=80;
c1=floor(M/2);
c2=floor(N/2);
h1=zeros(M,N);%理想型
fori=1:
M
forj=1:
N
d=sqrt((i-c1)^2+(j-c2)^2);
ifd<=d0;
h1(i,j)=1;
else
h1(i,j)=0;
end
end
end
Guv=h1.*newF;
Gxy=ifft2(Guv);
imshow(uint8(Gxy));title('理想型-80阈值');
%巴特沃斯
I=imread('testpic\lena.bmp');
F=fft2(I);
newF=fftshift(F);
[MN]=size(I);
d0=80;
c1=floor(M/2);
c2=floor(N/2);
h2=zeros(M,N);%巴特沃斯型
n=1;%巴特沃斯阶数
fori=1:
M
forj=1:
N
d=sqrt((i-c1)^2+(j-c2)^2);
h2(i,j)=1/(1+(d/d0)^(2*n));
end
end
Guv=h2.*newF;
Gxy=ifft2(Guv);
imshow(uint8(Gxy));title('巴特-80阈值,阶数1');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 增强 实验 代码