1.书写规范:
页面布局:
⑴命令窗口 :输入MATLAB命令、函数、矩阵、表 达式等,并显示除图形以外的所有计算结果。
(2)工作空间
显示工作空间中所有变量的名称、
大 小、字节数及数据类型。
可在工作空间对变量进行观察、编
辑、 保存(保存为mat文件)和删除。
使用dear命令可以清除工作空间内
的变量。
MATLAB退出后,工作空间自动清除。
(3)当前目录浏览器
当前目录是MATLAB运行文件的
工作目录。
在当前目录或在搜索路径下的文
件及函数才可以被运行或调用。
工作中文件和数据默认在当前目
录下。
如需调用多个目录下的文件,将
这些目录加入搜索路径。
相关操作:
(1) 几何运算,包括缩放、旋转和裁剪;
(2) 分析操作,包括边缘检测,四叉树分解;
(3) 增强操作,包括亮度调整,直方图均衡化,去噪声;
(4) 2-D FIR滤波器设计;
(5) 图像变换,包括离散余弦变换(DCT)和Radon变换;
(6) 邻域与块处理;
(7) 感兴趣区域处理;
(8) 二值图像处理,包括形态学操作;
(9) 彩色空间变换;
(10) 彩色地图管理。
相关函数:
数字图像读入----imread函数
功能:读入图像数据
格式:I=imread(‘FILENAME’)
FILENAME指定图像文件的完整路径和文件名,如果
在搜索目录下,只需提供文件名。
例:假设moon.jpg、cat.jpg 存放在当前工作目录下
cat1.bmp存放在E盘图像目录下。
I1=imread(‘moon.jpg’);
I2=imread(‘cat.jpg’);
I3=imread(‘E:\图像\cat1.jpg’);
数字图像信息查询----imfinfo函数
功能:用于获取图像文件的有关信息
格式:inf=imfinfo(‘FILENAME’)
FILENAME指定图像文件的完整路径和文件名,如果
在搜索目录下,只需提供文件名。
数字图像显示----imshow函数
功能:显示图像
格式:imshow(I)
imshow(I,[low high])
I为要显示图像的数据矩阵
[low high] 指定显示灰度范围,
subplot(1,2,1),imshow (I1);
subplot(1,2,2),imshow (I1,[30 150]);
数字图像存储----imwrite函数
功能:将图像数据写入到图像文件中
格式:imwrite(I,filename)
I为要写入图像矩阵。
filename为待写入的文件
例:将数据保存为图像文件
请观察graytest.bmp是否与matlab中显示的数据一致。
J=I(150:300,150:300);
imshow(J)
imwrite(J,’graytest.bmp’)
灰度图像
常用0表示黑色,255表示白色,用0到255之间的数表示灰度。
例:生成一个灰度图像,并显示。
A=[0 230;255 60;30 100]
A=uint8(A);
imshow(A)
imshow(A,’initialMagnification’,’fit’)
彩色图像
每个像素由R、G、B分量构成的图像,其中R、G、B、是由不同的灰度级来描述的。
I=imread();
subplot(2,2,1)
imshow(I)
r=I(:,:,1);
subplot(2,2,2)
imshow(r)
g=I(:,:,2);
subplot(2,2,3)
imshow(g)
b=I(:,:,3);
subplot(2,2,4)
imshow(b)
例:生成一个彩色图像,并显示。
clear
clc
close all
R=[255 30 230;255 0 100;0 200 0];
G=[0 80 220;255 255 50;0 35 0];
B=[0 200 15;255 0 190;0 70 255];
RGB(:,:,1)=R
RGB(:,:,2)=G
RGB(:,:,3)=B
RGB=unit8(RGB) ;
imshow(RGB,’initialMagnification’,’fit’)
二值图像
每个像素只有两种灰度取值
例:读取二值图像(黑白图像),查看该图像的数据矩阵,对二值图像进行取反操作,查看“黑白颠倒”的效果。
I=imread( );
subplot(1,2,1)
imshow(I)
J=imcomplement(I);
subplot(1,2,2)
imshow(J)
类型间的转换:
im2bw 将图像转换为二值图像
rgb2gray 将彩色图像转换为灰度图像
im2bw 功能:将图像按照阈值转换为二值图像
格式: bw=im2bw(I,level)
I为要转换的图像矩阵,bw为转换后的二值图像
level为阈值,取值范围[0,1],默认为0.5
如果I中像素灰度值大于I*level,则该值变为1,否则为0。
二值图像分析在对象识别与模式匹配中有重要作用,同时也在机器人视觉中也是图像处理的关知键步骤,目的是将目标用户背景分类 .
rgb2gray 功能:将彩色图像转换为灰度图像
格式: I=rgb2gray(rgb)
rgb为要待转换的彩色图像,I为转换后的灰度图像矩阵
例: RGB=imread(‘ ’);
gray=rgb2gray(RGB); %得到灰度图
BW1=im2bw(gray,0.3); %将灰度图转成二值图,阈值0.3
BW2=im2bw(gray,0.5); %将灰度图转成二值图,阈值0.5
subplot(2,2,1),imshow(RGB); %显示原图片
subplot(2,2,2),imshow(gray); %显示转换后的灰度图片
subplot(2,2,3),imshow(BW1); %显示转换后的二值图片
subplot(2,2,4),imshow(BW2); %显示转换后的二值图片
1、对图像进行几何变换,包括尺寸变换和旋转变换。
2、对图像进行灰度调整,包括线性变换、非线性变换和直方
图均衡化。
图像尺寸变换---- imresize函数
功能:缩放图像
格式:B=imresize(A,m)
B=imresize(A,[nrow ncol],method)
返回图像B是原图像A的m倍
nrow和ncol为目标图像的高度和宽度
method改变图像时所采用的插值算法: ‘nearest’:最近邻插值算法;
‘bilinear’:双线性差值算法; ‘bicubic’:双三次插值算法
I=imread(‘moon.jpg’)
imshow(I)
figure
J=imresize(I,0.25);
imshow(J)
I=imread(‘moon.jpg’);
subplot(1,2,1),imshow(I)
J=imresize(I,0.25);
subplot(1,2,2),imshow(J)
图像旋转变换---- imrotate函数
功能:将图像旋转为若干角度
格式:bw= imrotate(I,angle)
bw=imrotate (I,angle,method)
bw = imrotate(A,angle,method,bbox)
I为要旋转的图像矩阵
angle为旋转角度
method为插值算法,'nearest ‘ 'bilinear ’ 'bicubic‘
bbox参数用于指定输出图像属性: ‘crop’ 或 ‘loose’
‘crop’: 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像bw
的尺寸和输入图像A的尺寸一样。
‘loose’:使输出图像足够大, 以保证原旋转后超出图像尺寸范围
的像素值没有丢失。 一般这种格式产生的图像的尺寸都
要大于原 图像的尺寸。
I=imread(‘ ’);
for i=1:10
J=imrotate(I,36*i, ‘crop’);
subplot(2,5,i)
imshow(J)
end
imadjust函数
功能:灰度图像的灰度转换
格式:J=imadjust(I)
g=imadjust( I,[low_in high_in],[low_out high_out])
g=imadjust( I,[low_in high_in],[low_out high_out], gamma)
输入灰度low_in~ high_in;输出灰度low_out~high_out
输入灰度小于low_in,则输出灰度为low_out
输入灰度大于high_in,则输出灰度为high_out
将low_in至 high_in间值映射到low_out至high_out间值。
I=imread(‘ moon.jpg’);
subplot(1,3,1),imshow(I)
g1=imadjust(I,[0 1],[1 0]); subplot(1,3,2),imshow(g1)
g2=imadjust(I,[0.5 0.75],[0 1]); subplot(1,3,3),imshow(g2)
imhist函数
功能:用于获取图像数据的灰度直方图
格式:imhist(I)
imhist(I,n)
I为灰度图像
n为指定的灰度级
I=imread(‘cat.jpg’);
I=rgb2gray(I);
subplot(1,3,1),imshow(I)
title(‘原图’)
subplot(1,3,2),imhist(I)
title(‘256灰度直方图’)
subplot(1,3,3),imhist(I,32)
title(‘32灰度直方图’)
histeq函数
功能:通过直方图均衡化来增加灰度图像的直方图
格式:J=histeq(I)
I=imread(‘ ’);
I=rgb2gray(I);
subplot(2,2,1),imshow(I);title(‘原图’);
subplot(2,2,2),imhist(I);title(‘原图直方图’);
J=histeq(I);
subplot(2,2,3),imshow(J); title(‘均衡化图’);
subplot(2,2,4),imhist(J); title(‘均衡化后直方图’);
im2uint8:将输入中所有<0转换为0,所有>1转换为255.其他
的乘以255。
im2uint16 :将所有输入 <0转换为0,所有>1转换为655356。
im2double :将输入转换为double类。
若输入是unit8、unit16或 logical则转换为[0,1]间的类。
若输入是double,则返回与输入相等的矩阵
I=imread(‘moon.jpg’);
I16=im2uint16(I);
Id=im2double(I);
实验内容:
1、对图像做平滑滤波,包括均值滤波和加权平均滤波。
2、对图像做边缘滤波,包括水平边缘和竖直边缘。
3、对图像做锐化滤波。
4、对图像傅里叶变换。
MATLAB实现平均滤波的函数
fspecial是用来生成滤波器(也叫算子)的函数,其语法格式为
h=fspecial(type)
h=fspecial(type,hsize)
使用type参数来指定滤波器的种类,type=‘average’为生成均值滤波器。 hsize指定滤波器的尺寸,默认值为[3 3]。滤波器也可以自己设计。 h为生成的滤波器。
基于卷积的图像滤波函数imfilter, imfilter的语法格式为:
Y= imfilter(X, h)
其中Y=imfilter(h,X) 返回图像X经滤波算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。
I=imread(‘’);
I1=double(rgb2gray(I))
figure,imshow(I1,[]),title(‘original imgae’)
H=[[1/9,1/9,1/9],…
[1/9,1/9,1/9],…
[1/9,1/9,1/9]]
%H=fspecial('average');
I2=imfilter(I1,H);
figure,imshow(I2,[]),title(‘ average image ’)
H=[[1/16,2/16,1/16],…
[2/16,4/16,2/16],…
[1/16,2/16,1/16]]
%I1=imnoise(I,'salt & pepper',0.05);
I3=imfilter(I1,H);
figure,imshow(I3,[]),title(‘weighted average image ’)
MATLAB实现中值滤波的函数
medfilt2
功能:对图像进行中值滤波
格式: J = medfilt2(I)
J = medfilt2(I,[m n])
I为原图像, [m n] 指定滤波器的尺寸,默认值为[3 3]。滤波器也可以自己设计。
I4=medfilt2(I1,[3 3]);
I5=medfilt2(I1,[7 7]);
figure
subplot(2,2,1),imshow(I1),colormap(‘gray’),title(‘Original’)
subplot(2,2,2),imshow(I2),colormap(‘gray’),title(‘average image ’) subplot(2,2,3),imshow(I4),colormap(‘gray’),title(‘medium filter 3*3’) subplot(2,2,4),imshow(I5),colormap(‘gray’),title (‘medium filter 7*7’)
MATLAB实现边缘检测的函数
edge
功能:对图像进行边缘检测
格式: J = edge(I)
J = edge (I,method)
I为原图像。 method:提取边界的方法,共有六种可用方法,‘sobel’、‘prewitt’、‘roberts’、‘log’、‘zerocross’‘canny’。缺省时使用‘sobel’。
MATLAB实现图像锐化的函数
傅里叶变换
clear;
clc;
clear;
im=imread(‘ ’)
im1=rgb2gray(im)
im2=imresize(im1,[512,512]);
figure,imshow(im2);
title(‘original image’)
f=double(im2);
F=fft2(f);
S=abs(F);
figure,imshow(S,[]);
title(‘Frequency Spectrum’);
Fc=fftshift(F);
S=abs(Fc);
figure,imshow(S,[]);
title(‘Centered Frequency Spectrum’)
遇到的问题是,频谱图全黑!