一、基本文件操作
读文件:
imread('filename')
img = imread('img.jpg')
将图像文件读入matlab环境中并命名为img
显示图像:
imshow(img)
其中img为图像数组
保留上次图像显示的同时并实现第二幅图像的输出:
figure;imshow(img2)
写入图像
imwrite(img,'filename')
另外还可以控制写入图像的质量:
imwrite(img,'filename','quality',q)
q是写入质量控制参数,介于0-100的整数。
二、 图像类型
1.灰度图像
灰度图像是数据矩阵,值表示浓淡程度。
当灰度图像的元素是uint8或uint16类时,它们取值范围为[0,255]和[0,65535]。
当灰度图像的元素是double或single类时,值为浮点数,通常被归一化标定为[0,1]范围内。
2.二值图像
图像元素为logical类,取值是只包含0或1的逻辑数组,0->黑,1->白。
创建逻辑数组:b = logical(A)
A是0和1构成的数值数组;
测试是否为逻辑类:islogical(img)
3.RGB图像
4.索引图像
5.图像格式转换
g = mat2gray(A,[Amin,Amax]);
将图像A转化为灰度图像,标定数组元素范围为[0,1]的double类的数组,其中元素值大于Amax的变为1,小于Amin的变为0。
三、M-函数编程
函数定义:
function [outputs] = function_name(inputs)
例如求两个矩阵的所有元素的平均值和所有元素的和值:
创建M函数文件:
>> edit ave %ave为文件名,也是函数名,函数名必须与文件名相同
function [value,sum] = ave(a,b)
a = a + b;
sum = 0;
for i = 1:length(a(:))
sum = sum + a(i);
value = sum/length(a(:));
end
end
调用运行实例:
>> a = [1 2 3;
4 5 6 ;
7 8 9;];
b = [1 1 1;
1 1 1;
2 2 2;];
>> [v,s] = ave(a,b)
v =
6.3333
s =
57
四、索引
数组索引
>>v = [1 2 3 4 5 6 7 8 9];
>>v(2) % 索引第二个元素
ans =
2
>> v(1:5) %索引第1到5个元素
ans =
1 2 3 4 5
>> v(6:end) %索引第6到最后一个元素
ans =
6 7 8 9
>> v([1 4 5]) % 同时索引第1 4 5个元素
ans =
1 4 5
>> v(1:2:end) % 索引1到最后个元素,步长为2
ans =
1 3 5 7 9
矩阵索引
>> A = [1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A(:) %用“:”选择所有元素,并将A转换为列向量
ans =
1
4
7
2
5
8
3
6
9
>> A(1,:) % 选择第1行整行
ans =
1 2 3
>> A(2,3)% 选择第2行第3列的元素
ans =
6
>> sum(A)% 计算每一列的元素和
ans =
12 15 18
>> sum(A(:)) % 计算所有元素的和,“:”把A转换为列向量。
ans =
45