学习资料
%命令行分号:取消输出
%命令行逗号:分隔命令
读取图像
f=imread('filename.jpg')%读当前目录图像,保存为 f 数组
f=imread('D:\pictures\filename.jpg')%绝对地址
f=imread('.\pictures\filename.jpg')%相对地址
显示图像
imshow(f,G)%G是灰度级数,若省略G,则默认灰度级数是256
imshow(f,[low high])%将小于或等于low的值显示为黑色,将所有大于或等于high的值都显示为白色
imshow(f,[ ])%将low设置为数组最小值,变量high设置为数值最大值
交互显示单个像素的亮度值
pixval%显示覆盖在图像上的光标
显示多张图片
imshow(f), figure, imshow(g)%不加figure,imshow会新图覆盖旧图
保存图像
imwrite(f,'filename.jpg')或者imwrite(f,'filename','jpg')
只适用于JPEG图像的压缩保存
imwrite(f,'filename.jpg','quality',q)%q是0到100之间的整数,q越小,图像退化越严重
查看图像文件的详细信息
imfinfo filename.jpg%width乘以height乘以BitDepth除以Filesize可以得出图像压缩的比率
获取图像文件的信息
k=imfinfo('filename.jpg')
k.Width, k.Height
只适用于tif图像的保存方式
imwrite(g,'filename.tif','compression','paramater'...'resolution',[colres rowres])
'paramater’的值有3个:'none’表示无压缩,‘packbits’表示比特包压缩’(非二值图像的默认参数),‘ccitt’表示ccitt压缩(二值图像的默认参数)
[colres rowres]分别以每单位中的点数给出图像的列分辨率和行分辨率
亮度图像是一个数值矩阵,其归一化的取值表示亮度
一个uint8类的图像,其像素都是uint8,该图像的亮度范围是[0,255]
一个uint16类的图像,其像素都是uint16,该图像的亮度范围是[0,65535]
一个double类的图像,其像素都是浮点数,该图像的亮度范围是[0,1]
二值图像是一个取值只有0和1的逻辑数组,一个取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像
logical函数可以把数值矩阵转换为二值矩阵
B=logical(A)%若A中还含有除0,1外的值,这些值都会变换成逻辑1
测试一个数值是否是逻辑数组
islogical(C)%若是逻辑数组则返回1,否则返回0
数据类间的转换
B=data_class_name(A)%比如B=uint8(A)和B=double(A)
图像类和数据类间的转换
im2uint8(f)%输入中小于0的设置为0,大于1的设置为255在,其他值乘以255(四舍五入)
im2uint16(f)
im2double(f)%当输入为uint8,则除以255;当输入为uint16,则除以65535
im2bw(f,T)%二值化,T是阈值,默认为0.5,输出为logical类(中间包含归一化)
只适用于double类归一化
mat2gray(A,[Amin,Amax])%归一化[0,1],小于规定参数Amin的值转换成0,,大于Amax的值转换成1
支持嵌套
g=im2double(im2bw(mat2gray(f),0.6))
支持函数组合
g=double(f>2)
查看图像行数和列数
size(f,dim)%dim=1按第一个维度(行数),dim=2按第二个维度(列数)
查看图像数组的附加信息,比如Bytes
whos f
v=[1 3 5 7 9]
向量索引
v(2)%向量第2个数=3
v.'%向量转置
v(:)%产生一个列向量
v(1:end)%产生一个行向量
v(1:3)%取出向量第1到第3的数=1 3 5
v(3:end)%取出第3个到最后一个数=5 7 9
v(1:2:end)%从第一个数开始,步长为2,取到最后一个数=1 5 9
v(end:-2:1)%从最后一个数开始,步长-2,取到第一个数=9 5 1
v([1 4 5])%挑出第1个、第4个、第5个元素
向量产生函数
x=linspace(a,b,n)%产生含有n个元素的行向量,这n个元素之间线性地隔开并且包含a与b
A=[1 2 3;4 5 6;7 8 9]
A=1 2 3
4 5 6
7 8 9
矩阵索引
A(8)%矩阵在MATLAB的保存是按列排序,按列第8个数=6
A(2,3)%第2行第3列=6
A(:,3)%第3列
A(2,:)%第2行
A(1:2,1:3)%第1-2行第1-3列
A(:,3)=0%第3列全部置0
A(end,end)%最后一行最后一列
A(end,end-2)%最后一行导数第2列
A(2:end,end:-2:1)%第2行到最后一行,最后一列,步长为-2,直到第一列
使用向量作为矩阵的索引
A([1 3],[2 3])%第1行和第3行,第2列与第3列
逻辑数组作为矩阵的索引
D=logical([1 0 0;0 0 1;0 0 0])
A(D)%第1行第1个,第2行第3个
求一个矩阵所有元素之和
sum(A(:))%单个冒号会把矩阵转成向量
f是一张1024X1024的图像
f(end:-1:1,:)%垂直翻转
f(257:768,257:768)%图像裁剪
f(1:2:end,1:2:end)%二次取样
ndims(A)%数组A的维数(>2)
zeros(m,n)%生成大小为 m X n 全0元素的double类矩阵
ons(m,n)%生成大小为 m X n 全1元素的double类矩阵
ture(m,n)%生成全1元素的logical类矩阵
false(m,n)%生成全0元素的logical类矩阵
magic(m,n)%生成魔术方阵(行列、主对角线元素之和均相对,元素均为整数)
rand(m,n)%生成元素都在[0,1]区间均匀分布的随机数
randn(m,n)%生成元素符合正态分布(均值为0,方差为1)的随机数
MATLAB函数定义
%function 注释
function [outputs]=function_name(inputs)
function [s,p]=sumprod(f,g)
help function_name%查看函数注释
edit sumprod%编辑文件
句点字符(.)区分数组运算与符矩阵运算符
A*B矩阵乘法
A.*B数组乘法(元素相乘)
IPT支持的图像算术函数
imadd%两图像相加,或者把常数加到图像
imsubtract%两图相减或从图像中减去常数
immultiply%两图相乘,或者图像乘以常数
imdivide%两图相除,或者图像除以常数
imabsdiff%两图间的绝对差
imcomplement%图像互补
imlincomb%计算多图的线性组合
max(A)
max(A,B)
max(A,[ ],dim)
关系运算符(A、B同维数)
A==B%相应位置元素相等为1,其余位置为0
A>=B%相应位置元素大于或等于为1,其余位置为0
>%大于
<%小于
~>%不等于
逻辑运算符
&%与运算,全0为或者全非0为1,其他为0
|%或运算,有非0为1,其他为0
~%非运算,非0为0,0为1
xor%两数逻辑上不同为1
all%若一个向量中所有元素全非0为1,其他为0,按列操作
any%若一个向量中有元素非0为1,其他为0,按列操作
nemwl(A)%获得图像的像素数
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删