第1章 MATLAB数字图像处理编程基础
1.1 MATLAB简介
1.1.1 MATLAB软件环境
1、可以在>>提示符后面直接输入简单的算式;
2、“%”表示注释;
3、可以在一行中输入多条语句,用分号隔开,也可以在多行输入同一条语句,在行末使用...
1.1.2 文件操作
1、addpath(path)函数:path是绝对路径;
2、genpath(directory)函数:directory为指定目录,返回包含指定目录和其全部子目录的数据,返回值可以直接提供给addpath(),即addpath(genpath(directory));
3、打开与编辑M文件,可以使用open命令和edit命令,调用形式如下:open filename;edit filename;
1.1.3 在线帮助的使用
1、help命令:help command-name;
2、doc命令:doc function-name;
3、looker命令:looker keyword,在忘记函数或命令的时候进行查找;
4、F1命令打开帮助浏览器;
1.1.4 变量的使用
1、变量的定义:不需要提前定义,不需要指定类型,定义的时候要赋值;
2、who、whos命令可以查看当前工作区中变量情况,使用clear或clear all可以清除工作区的所有变量定义,也可以在clear后加变量名清除特定的变量;clc命令可以用来清屏;
3、数据类型及其转换:matlab默认为double类型,转换格式为:a = uint8(b);
4、读取和保存工作区域的变量:save filename arg1 arg2 arg3, ...;load filename arg1 arg2 arg3, ...;arg1 arg2 arg3是要保存或下载的变量名
1.15 矩阵的使用
1、矩阵的定义:A = [1,2,3;4,5,6;7,8,9]或者v = [2:1:10]一维矩阵;
2、生成特殊矩阵:
3、获得矩阵大小和维度:size(A, dim),ndims(A)
- A是需要查看的数组;
- dim是指定的维度;
例如,对于一个3行5列的矩阵B,size(B, 1) = 3,size(B, 2) = 5, size(B) = [3, 5];
4、访问矩阵元素:A[3 ,2];访问第二行:A[2, :];访问第二列:A[:, 2];A[:]表示将矩阵按列存储得到一个长列向量。
5、矩阵运算
6、细胞数组(Cell Array)和结构体(Structure)
- 细胞数组:Cell = {'Harry', 15, [1 0; 15 2]}或者Cell {1} = ‘Harry’; Cell {2} = 15; Cell {3} = [1 0; 15 2];
- 结构体:Struct.name = 'Harry'; Struct.Age;
1.1.7 关系运算与逻辑运算
1.1.8 常用图像处理数学函数
1.1.9 MATLAB程序流程控制
1、流程控制语句
2、meshgrid()函数:[X, Y] = meshgrid(x, y)
- x为输入的横坐标;
- y为输入的纵坐标;
- X、Y为输出采样点的横坐标矩阵和纵坐标矩阵
MATLAB代码示例:
u = [-10: 0.1: 10];
v = [-10: 0.1: 10];
[U, V] = meshgrid(u, v);
H = exp(-(U.^2 + V.^2) ./2/3^2);
mesh(u, v, H); %绘制三维曲面函数
1.1.10 MATLAB函数编写
1、函数语法
- 函数定义行:function [outputs] = name(inputs)
1.2 MATLAB图像转换
1、图像存储格式转换
2、图像数据类型转换
matlab读入图像默认为uint8,但很多函数,比如sin()不支持double以外的数据类型,这个时候就需要进行数据类型转换;
1.3 读取和写入图像文件(略)
1、imread()函数;
2、imwrite()函数;
3、imfinfo()函数;
1.4 图像的显示
1、imshow()函数:imshow(I, [low high], param1, value1, param2, value2, ...)
2、多幅图像的显示
figure; %创建一个新的窗口
imshow(I);
figure;
imshow(I, [ ]);
%在相同窗口显示
figure;
subplot(1, 2, 1);
imshow(I);
subplot(1, 2, 2);
imshow(I, [ ]);
3、多帧图像的显示:movie(mov);
4、图像的缩放:zoom on打开缩放功能;zoom off关闭缩放功能;
5、像素值查看工具:使用imshow函数之后,通过输入impixelinfo命令在最后显示的图像窗口的左下角。