matlab图像处理各种程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像变换(傅立叶变换), 图像增强, 边缘检测, 滤波, 图像压缩等.
实验工具:MA TLAB软件
课程设计时间:2008年12月
实验部分
1. 图像变换
程序代码及说明
clear all
N=100;
f=zeros(50,50); %产生一个50*50的全0数组
f(15:35,23:28)=1;
%定义图像数组,从15行到35行,23列到28列附值为1,为白色,其他区域为黑色figure(1) %创建窗口的图形对象,句柄为1
imshow(f,'notruesize') %显示图像f
F=fft2(f,N,N); %在二维傅立叶变换前把f截断或者添加0,使其成为N*N的数组F2=fftshift(abs(F)); %把傅立叶变换的零频率部分移到频谱的中间
figure(2)
x=1:N;y=1:N; %定义x和y的范围
mesh(x,y,F2(x,y));colormap(gray);colorbar
%绘制立体网状图,将图形对象的色度改为灰度图像,colorbar给坐标轴添加色彩条%构建一个类似于figure(1)的矩形函数
N=200;
f=zeros(100,100);
f(30:70,45:55)=1;
%定义图像数组,从30行到70行,45列到55列附值为1,为白色,其他区域为黑色imshow(f,'notruesize');
%然后对f进行二维快速傅立叶变换:以下列出你自己编写的代码…
N=200;
f=zeros(100,100);
f(30:70,45:55)=1;
imshow(f,'notruesize');
title('原始图像');
F=fft2(f,N,N); %对图像f进行二维快速傅立叶变换
grid on %打开网格线
axis on %打开坐标轴
imshow(F,[-1,5],'notruesize'); %显示傅立叶变换后的图像,图像数据的值域为[-1,5] x=1:N;y=1:N;
title('二维快速傅立叶变换后的图像');
mesh(abs(F)); %绘制F的频谱图
title('傅立叶变换后的频谱图');
%然后对上述二维快速傅立叶变换提高分辨率:
要提高二维快速傅立叶变换的分辨率,在采样率一定的情况下,增大采
样点数N即可。对应的频谱图见测试结果。
N=300;
f=zeros(100,100);
f(30:70,45:55)=1;
figure(1)
imshow(f,'notruesize');
title('原始图像');
F=fft2(f,N,N);
axis on
figure(2)
imshow(F,[-1,5],'notruesize');
title('二维快速傅立叶变换后的图像'); x=1:N;y=1:N;
figure(3)
mesh(abs(F));
title('傅立叶变换后的频谱图');
N=400;
f=zeros(100,100);
f(30:70,45:55)=1;
figure(1)
imshow(f,'notruesize');
title('原始图像');
F=fft2(f,N,N);
axis on
figure(2)
imshow(F,[-1,5],'notruesize');
title('二维快速傅立叶变换后的图像'); x=1:N;y=1:N;
figure(3)
mesh(abs(F));
title('傅立叶变换后的频谱图');
�系数移动(使用函数fftshift)
N=200;
f=zeros(100,100);
f(30:70,45:55)=1;
figure(1)
imshow(f,'notruesize');
title('原始图像');
F=fft2(f,N,N);
axis on
figure(2)
imshow(F,[-1,5],'notruesize');
title('二维快速傅立叶变换后的图像'); x=1:N;y=1:N;
figure(3)
mesh(fftshift(abs(F)));
%把零频率部分移到频谱的中间
title('傅立叶变换后的频谱图');
%滤波器频率响应
x=1:N;y=1:N;
mesh(x,y,F2(x,y));colormap(gray);colorbar
%绘制立体网状图,将图形对象的色度改为灰度图像,colorbar给坐标轴添加色彩条
测试结果图:
1》对f进行二维快速傅立叶变换
(请自己运行查看)
2》对上述二维快速傅立叶变换提高分辨率
N=300时:N=400时:
N=800时: N=1000时:
(请自己运行查看)
从傅立叶变换的频谱图中可以看出,提高分辨率以后,其边缘更加平滑,锯齿状明显减弱。但其傅立叶变换后的图像没有明显改变。
3》DC系数移动
其系数移动以后,频谱分量都集中到了频谱的中间。
4》滤波器频率响应
(请自己运行查看)
2. 图像增强
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要包含直方图修改处理、图像平滑化处理、图像尖锐化处理、和彩色处理技术等。图像增强有图像对比度增强、亮度增强,轮廓增强等等。
下面利用直方图统计算法对灰度图像进行增强:
程序代码:
I=imread('cameraman.tif');
subplot(121)
imshow(I);
title('原始图像');
subplot(122)
imhist(I,64)
%绘制图像的直方图,n=64为灰度图像灰度级,若I为灰度图像,默认n=256;
若I为二值图像,默认n=2。
title('图像的直方图');
(请自己运行查看)
n=256时:
(请自己运行查看)
下面利用直方图均衡化增强图像的对比度:
I=imread('cameraman.tif');
J=histeq(I);