近期项目涉及到计算机视觉,多次使用Matlab进行模拟同时使用c++代码实现相关操作,为此记录一下Matlab的基本用法和涉及到的一些相关知识。
1.基本操作
读入图片
f = imread(‘C:\Users\87706\Desktop\图像存储\先膨胀在腐蚀\depth_map.png’);
求图片的大小
size(f)
使用变量存储图片大小M是行数,N是列数
[M,N] = size(f)
显示数组信息
whos f
想同时显示两张照片,需要使用figure
imshow(f),figure,imshow(g)
保存图片(不加指定地址默认保存在代码文件的位置)
imwrite(f,‘需要保存的名字’,‘保存的格式’)或imwrite(f,‘名字.jepg’)
只适用于JPEG图像
使用imfinfo函数可以了解图像的详细信息
可以通过.的方式来引用,例如:
K = imfinfo(C:\Users\87706\Desktop\图像存储\先膨胀在腐蚀\depth_map.png);
image_bytes = K.Width * K.Height * K.BitDepth/8
可以直接引用上述打印出的信息里的值
针对于只适用于tif图像的
parameter:none:表示无压缩
packbits:比特包压缩(非二值图像的默认参数)
ccitt:ccitt压缩(二值图像默认参数)
1x2矩阵[colres rowres]包含两个整数
print保存
二值图像:
一个只有0、1构成的uint8类数组不是二值数组,需要使用logical将数值数组转化为二值数组
A(0、1构成的数值数组)
B = logical(A);将对于的0、1转化为逻辑0、1
判断是否为逻辑数组
islogical© 1表示是,2表示不是
将double类的任意数组转为[0,1]的归一化double类数组
转置运算符 .’
取指定范围的值(取值开始:取值结束),会取这二者之间的所有数
x = linspace(a,b,num);
从a到b,中间查出来num-2个数据,算上a、b一共num个数据,是线性插值
矩阵运算
简单矩阵
A = [1 2 3;
4 5 6;
7 8 9]
A(2,3)A的二行三列元素
C3 = A(:,3) ====== A(1:3,3)第三列的123个元素,也就是第三列的所有元素
R2 = A(2,;)第二行
前两行A(1:2,1:3)
A.*B表示A的(1,1)× B的(1,1) 存储在 C的(1,1)处
运算符即函数
将输入的内容保存在t中
t = input(‘message’,‘s’)