官方文档 :https://ww2.mathworks.cn/help/index.html
doc + 指令 可以直接跳转到相应 函数 的文档资料中
打印函数:fprintf(‘% s \n’, imageFiles{i});
1. 变量操作
- 数据类型 uint无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、无符号64位整数 int有符号整数:有符号8位整数、有符号16位整数、有符号32位整数、有符号64位整数 single函数:将其他类型的数据转化位单精度型 double函数:将其他类型的数据转化位双精度型 复数:复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,序数单位用i或者j来表示; (real函数:求复数的实部;imag函数:求复数的虚部) format命令的格式:format+格式符(不加格式符,默认为short),format只影响数据输出格式,而不影响数据的计算和存储
- 常用函数 三角函数:有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”以示区别(sin和sind) abs函数:可以求实数的绝对值、复数的模、字符串的ASCII码值 round函数:按照四舍五入的规则 ceil函数:向上取整,去大于等于这个数的第一个整数 floor函数:向下取整,取小于等于这个数的第一个整数 fix函数:固定取靠近0的那个整数,即舍去小数取整
- 变量保存 用于保存MATLAB工作区变量的文件叫做内存变量文件,其拓展名为.mat,也叫MAT文件 save命令:创建内存变量文件(save data.mat var) load命令:装入内存变量文件(load data.mat) who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单
- 算术操作 +(加)、-(减)、(乘)、/(右除)、\(左除)、^(乘方)、&(与)、|(或)、~(非) 矩阵对应元素进行相关运算点运算符:. 、./ 、.\ 、.^
2. 矩阵操作
- 矩阵创建操作 直接输入法:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或者空格分隔,不同行的元素用分号分隔;一个大矩阵可以由已经建立好的小矩阵拼接而成([A, B; C, D]:就表示AB矩阵一行,CD矩阵一行) 格式输入:y = e1:e2:e3。e1为初始值,e2为步长,e3为终止值(e2可省略,若省略则默认步长为1) linspace函数:linspace(a,b,n)a是第一个元素,b是最后一个元素,n是元素总数。当n省略时,自动产生100个元素。 结构矩阵创建格式:结构矩阵元素.成员名=表达式
- 矩阵索引 matlab的索引是从1开始的,而不是python的索引从0开始 A(2,3)表示A矩阵第2行第3列的元素 A(i,:) 表示第i行的全部元素 A(:,j) 表示第j列的全部元素 A(i:i+m,k:k+m) 表示第i ~ i+m行,且在第k ~ k+m列中的所有元素 A(i:i+m,:) 表示第i ~ i+m行的全部元素 空矩阵是指没有任何元素的矩阵,如果要删除元素,只需 将这些元素置为空矩阵 sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为:D=sub2ind(S,I,J),S表示要转换矩阵的行数和列数组成的向量,可用size(A)获得;I 是要转换矩阵元素的行下标,J 是要转换矩阵元素的列下标。如果I和J是矩阵,表示要将矩阵中的多个元素的行列下标转换成存储的序号。 ind2sub函数:把矩阵元素的序号转化成对应的下标,其调用格式为:[I,J]=ind2sub(S,D),S表示要转换矩阵的行数和列数组成的向量,D表示序号,I 是要转换矩阵元素的行下标,J 是要转换矩阵元素的列下标。
- 矩阵变换 A(:) :将矩阵A的每一列元素堆叠起来,成为一个列向量。 reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m * n的二维矩阵。reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素的个数及其存储顺序。
- 信息获取 size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数
3. 字符串操作
- 例子1:对目录下所有图像进行处理,保存原图和处理后的图像,用后缀_aug来进行区别
clc;
clear;
% 处理一个文件夹中的图像
image_dir = 'E:\matlab\ImageProcess\Images';
output_dir = 'E:\matlab\ImageProcess\ImagesOut';
% 获取路径下所有图像
image_files = dir(fullfile(image_dir, '*.jpeg'));
for i = 1:numel(image_files)
image_file = image_files(i);
image_path = fullfile(image_dir, image_file.name); % 路径拼接
% 保存处理前的原图
ori = imread(image_path);
ori_savepath = fullfile(output_dir, image_file.name);
imwrite(ori, ori_savepath);
% 构造保存文件名
[~, fileName, fileExt] = fileparts(image_file.name);
aug_savename = [fileName, '_aug', fileExt];
aug_outpath = fullfile(output_dir, aug_savename);
fprintf('start prcess : %s\n', aug_outpath);
% 保存处理后的图像
aug = local_highlight_restrain_rectangle(image_path); % 进行矩形gamma处理
% img_aug = local_highlight_restrain_hierarchy(image_path); % 进行层级范围gamma处理
imwrite(aug, aug_outpath);
fprintf('prcess finsih: %s\n', image_path);
end
参考资料:
https://www.zhihu.com/column/c_1189849302766473216
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删