数字图像处理-基本原理

读取图像

f = imread(‘path + filename’);
size可以给出一幅图像的行数和列数
size(f) ;
[M, N] = size(f);

显示图像

imshow(f,G)
G是该图像的灰度级数,若省略,默认为256.
imshow(f,[low high])
小于等于low的值显示为黑色,大于等于high的值显示为白色,之间的值以默认级数显示为中等亮度
pixval用来交互地显示单个像素的亮度值
保持第一幅图像并同时显示第二幅图像
figure,imshow(g)
imwrite(f, ‘path + filename.jpg’)
保存图像到指定位置

imwrite(f, ‘filename.jpg’, ‘quality’,q)
此语句只适用于JPEG格式,q越小图像退化越严重。
合理的压缩比为,(Width * Height * BitDepth / 8) / FileSize
这一比例保证了图像质量与应用要求。

把MATLAB当前显示的图片存起来
print -fno -dfileformat -rresno filename
print -f1 -dtiff -r300 picture

图像类型

亮度图像

一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

二值图像

在matlab中,二值图像只能是逻辑数组
如果A是一个由0和1构成的数值数组,可以用B = logical(A)创建一个逻辑数组,若A中有其他元素,非0的都将变换为逻辑1。
数字图像处理-基本原理_第1张图片

数组索引

向量索引

v = [1,2,3,4,5]
转置运算符(.’)
w = v.’
取第三个到最后一个元素
v(3:end)
end表示向量中的最后一个元素
v(:)产生一个列向量
对一个矩阵使用单个冒号p(:)是将其元素堆叠成一个列向量
v(1:end) 产生一个行向量
v(1:2:end) 从索引1开始,步长为2,直到最后一个元素时停止。步长也可以为负
用一个向量做为另一个向量的索引
v([1,3,5]) 可以取出v中索引为1,3,5的元素。

矩阵索引

创建3*3的矩阵A= [1,2,3;4,5,6;7,8,9]

一些重要的标准数组

magic(M) 生成一个大小为M的魔术方阵。其每一行、列以及主对角线元素之和均相等。
rand(M,N) 生成一个M * N矩阵,其元素都是在区间[0,1]中均匀分布的随机数。
randn(M,N) 生成一个M * N的矩阵,其元素都是服从标准正态分布的随机数。

运算符

mat2gray 可以的带一个取值范围为[0,1]的归一化数组。
all() 检测列向量中是否全为非零元素,是则输出1,否则为0。
any() 检测列向量中是否非零元素,是则输出1,否则为0。

交互式I/O

[a,b,c] = strread(cstr,‘format’,‘param’,‘value’) 串处理函数
param项使用‘delimiter’,表明format中的识别项将由value指定的字符分隔(一般为逗号或空格)。如由一个串
t = ‘126,x2y,z’;
要将输入的三个元素读入三个变量a,b和c,则可以写为
[a,b,c] = strread(t, ‘%f%q%q’, ‘delimiter’, ‘,’);
此时,a = 12.6000, b = ‘x2y’, c = ‘z’,a为double类,b和c为单元数组。
g = imnorm(f,param) 该函数读取一幅图像f和一个参数param。

你可能感兴趣的:(笔记)