数字图像处理:实验一 MATLAB 图像处理基础

实验一 MATLAB 图像处理基础

MATLAB 具有强大的图像处理工具箱,有助于人们更好的理解各种图像处理算法,通 过调用工具箱中的函数,可以减少编程的复杂性,简化编程。本次实验主要掌握 MATLAB中的一些基本图像操作函数,包括图像的输入、显示、查看图像属性、改变大小、获取图像的统计信息、保存、多波段图像读写等功能,并进行简单的图像处理编程操作。

一、实验目的

1.进一步巩固对Matlab开发环境的认识;
2.理解图像处理相关函数,掌握其用法;
3.理解掌握文件操作函数;
4.掌握matlab的帮助命令,学会使用matlab的帮助功能;
5.掌握matlab程序设计基本方法,通过编程实现简单的图像处理操作。

二、实验基础

1.图像处理相关函数
Matlab提供了多种图像处理函数,表1列出一些函数及其功能。

imread
读取图像
imshow
图像显示
imwrite
保存图像
colorbar
显示颜色条
imfinfo
获取图像信息
subimage
显示图像
imresize
改变图像尺寸
imcrop
剪切图像
imrotate
图像缩放
imhist
显示图像直方图
mean
计算图像均值
warp
纹理映射
std2
计算图像标准差
multibandread
读多波段二进制图像
corr2
计算相关系数
multibandwrite
写多波段二进制图像

2.文件操作函数
fopen
打开文件
fread
读二进制文件
fclose
关闭文件
fwrite
写二进制文件
fscanf
读文本文件
fprintf
写文本文件
feof
测试指针是否在文件结束位置
fseek
设定文件指针位置
frewind
重设指针至文件起始位置
ftell
获取文件指针位置

3.图像灰度直方图
图像灰度直方图是灰度级的函数,描述图像中每种灰度级像素个数或频率。横坐标是灰度级,纵坐标是每一灰度级具有的像元数目或灰度级出现的频率。
灰度级频率计算公式:
v_i=n_i/n
式中ni为灰度级i的出现次数,n为像元总数。
4.熵
熵是图像信息量的表示,反映了图像信息丰富程度,在图像编码和图像质量评价中有重要意义。
H=-∑_(i=0)^(L-1)▒p_i 〖log〗_2 p_i
式中,pi为灰度级i出现的概率。

三、实验内容与步骤

1.熟悉 Matlab 工作环境
(1)打开计算机,启动MATLAB程序, 进入MATLAB的工作界面;
在这里插入图片描述

(2)熟悉MATLAB的菜单及各个工具栏的功能;
菜单栏
在这里插入图片描述

当前文件夹
在这里插入图片描述

命令行窗口
在这里插入图片描述

工作区
在这里插入图片描述

(3)在命令窗口创建矩阵,并对矩阵中的元素进行操作;

a=zeros(5,5)
a =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

a(2:4,2:4)=1
a =
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
(4)创建矩阵并对进行矩阵运算;

a=[1 2 3 4 5 6];
b=[6 5 4 3 2 1];
a+b
ans =
7 7 7 7 7 7

a.*b
ans =
6 10 12 12 10 6

a-b
ans =
-5 -3 -1 1 3 5

a./b
ans =
0.1667 0.4000 0.7500 1.3333 2.5000 6.0000

a*b’
ans =
56

a’*b
ans =
6 5 4 3 2 1
12 10 8 6 4 2
18 15 12 9 6 3
24 20 16 12 8 4
30 25 20 15 10 5
36 30 24 18 12 6
(5)绘制以下二维函数的图像,并改变曲线的颜色和线型,分别采用蓝色实线、红色虚线、黑色圆点绘制。
y=2e^(-5x) sin⁡(2πx) 0≤x≤2π

在这里插入图片描述在这里插入图片描述

2.熟练掌握Matlab的帮助命令,学会利用Matlab的帮助信息;并利用帮助命令查看图像处理函数。
help命令:查看函数的帮助

help subplot
subplot Create axes in tiled positions.
H = subplot(m,n,p), or subplot(mnp), breaks the Figure window
into an m-by-n matrix of small axes, selects the p-th axes for
the current plot, and returns the axes handle. The axes are
counted along the top row of the Figure window, then the second
row, etc. For example,

    subplot(2,1,1), PLOT(income)
    subplot(2,1,2), PLOT(outgo)

type命令:查看原代码

type fft2
function f = fft2(x, mrows, ncols)
%FFT2 Two-dimensional discrete Fourier Transform.
% FFT2(X) returns the two-dimensional Fourier transform of matrix X.
% If X is a vector, the result will have the same orientation.
% FFT2(X,MROWS,NCOLS) pads matrix X with zeros to size MROWS-by-NCOLS
% before transforming.
% Class support for input X:
% float: double, single
% See also FFT, FFTN, FFTSHIFT, FFTW, IFFT, IFFT2, IFFTN.
% Copyright 1984-2010 The MathWorks, Inc.

if ismatrix(x)
    if nargin==1
        f = fftn(x);
    else
        f = fftn(x,[mrows ncols]);
    end
else
    if nargin==1
        f = fft(fft(x,[],2),[],1);
    else
        f = fft(fft(x,ncols,2),mrows,1);
    end
end   

lookfor命令:

lookfor plot(x,y,‘k.’)
未找到 plot(x,y,‘k.’)。

3.熟悉Matlab中的文件操作函数
(1)建立一数据文件test.dat,用于存放矩阵A的数据。
在这里插入图片描述

(2)读取文件 test.dat 的内容
在这里插入图片描述

B =
1 8
4 3
7 6
2 9
5 0
cnt =
9
(3)文件定位
在这里插入图片描述

dingwei
four =
4
position =
8
eight =
5

4.图像基本操作
熟悉表1提供的matlab图像处理函数,并对图像进行基本操作。
(1)图像读写操作。如
在这里插入图片描述在这里插入图片描述

(2)对图像进行基本操作。如
在这里插入图片描述在这里插入图片描述

5.编程
(1)编写函数文件,计算
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2)用 Matlab 语言编写统计一幅灰度图像的直方图,并在同一个图形窗 口中显示该图像及其灰度直方图;
在这里插入图片描述在这里插入图片描述

(3)计算一幅灰度图像的熵。

在这里插入图片描述在这里插入图片描述

(4)编程实现图像镜像操作,并显示。
在这里插入图片描述在这里插入图片描述

四、实验心得

1.认识了MATLAB界面,知道基本的编程语句。
2.学会了图像的输入、输出,图像基本处理操作,会求解图像的灰度直方图和熵。
3.使用的语句不同,编程的代码多种多样,不同的语句由一定的相似处,而且都可以得出正确的结果。

猜你喜欢

转载自blog.csdn.net/chengzilhc/article/details/115533573