手写数字识别代码函数解读(MATLAB实现)

1、tf = strcmp(s1,s2)

  • 输入参数可以是字符串数组、字符向量和字符向量元胞数组的任何组合
  • 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0 (false)。如果文本的大小和内容相同,则它们将视为相等。返回结果 tf 的数据类型为 logical
  • 对于不区分大小写的文本比较,请使用 strcmpi 而不是 strcmp

2、out_files=dir(xxx)

作用:获得指定文件夹下的所有子文件夹和文件,并存放在返回值out_Files里边

  • dir ( ’ . ’ ) 列出当前目录下的所有子文件夹和子文件
  • dir ( ’ .\Matlab ') 列出指定目录下的所有子文件夹和文件
  • dir( ’ *.bmp’ )列出当前目录后缀是.bmp文件的所有文件
path_data = './data/handwritingPictures/';
files = dir(fullfile(path_data,'*.jpg'));

返回值为存放文件信息的结构体数组
手写数字识别代码函数解读(MATLAB实现)_第1张图片
使用dir函数得到的返回值out_Files,每一行数据相当于一个字典:
手写数字识别代码函数解读(MATLAB实现)_第2张图片

3、图像预处理

imread()
用法: A = imread(filename.fmt) 根据文件名filename读取灰度或彩色图像。
返回的数组A包含图像数据。如果是灰色图像,A是MN的数组;如果是真彩图像,A是MN*3的数组。
imcrop(图像,[a,b,c,d])
其中,[a b c d]对应[xmin ymin width height]

[A,map]=imread('cat.png');  %读入图像
rect=[75 68 130 112];           %定义剪切区域
X1=imcrop(A,rect);              %进行图像剪切
set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])%修改图形背景颜色的设置
subplot(121),imshow(A); %显示原图像
rectangle('Position',rect,'LineWidth',2,'EdgeColor','r') %显示图像剪切区域
subplot(122),imshow(X1);   %显示剪切的图像  

输出图像如下:
手写数字识别代码函数解读(MATLAB实现)_第3张图片
imbinarize()

  • BW = imbinarize(I) 通过将所有高于全局阈值的值替换为 1 并将所有其他值设置为 0。
  • BW = imbinarize(I,method) 使用 method 指定的阈值化方法(‘global’ 或 ‘adaptive’)从图像 I 创建二值图像。
  • BW = imbinarize(I,T) 使用阈值 T 从图像 I 创建二值图像。T 可以是指定为标量亮度值的全局图像阈值,也可以是指定为亮度值矩阵的局部自适应阈值。
I=imread('/Users/fariy/Pictures/灰灰.jpeg');
img = imbinarize(I,0.1); %自定义阈值
figure
imshowpair(I,img,'montage')


imcomplement()
功能:实现灰度图像灰度反转。将灰度值为0的像素值转换为255,将灰度值为255的像素值转换为0,将灰度值为x的像素值转换为255-x。通过灰度反转,能够增强暗色背景下的白色或灰色细节信息。

I=imread('/Users/fariy/Pictures/灰灰.jpeg');
J=imcomplement(I); %实现灰度反转
figure;
subplot(121),imshow(uint8(I));
subplot(122),imshow(uint8(J));

手写数字识别代码函数解读(MATLAB实现)_第4张图片

4、粗网格特征提取

  • cell(x)
    功能:创建一个元胞。元胞的元素可以说数字,字符,矩阵,字符串,是一个元素多元化的矩阵。用{}表示元胞
  • level=graythresh(img)
    功能:使用最大类间方差法找到图片的一个合适的阈值
  • bw=im2bw(I,level)
    功能:将图像转换成二值化图像

5、[B,I] = sort(A)

返回值B表示将A升序操作之后的数组,返回值I表示对应的B中的值在原数组中的位置。

ds = {'2012-12-22';'2063-04-05';'1992-01-12'};
A = datetime(ds,'Format','yyyy-MM-dd')

手写数字识别代码函数解读(MATLAB实现)_第5张图片

[B,I] = sort(A)

手写数字识别代码函数解读(MATLAB实现)_第6张图片

  1. rand(1,20):生成大小为1*20的0~1的随机数组。
  2. y1=mapminmax([2,3,4,5,6;7,8,9,10,11],0,1)。默认情况下将数组归一化到[-1,1]

6、fullfile(filepart1,filepart2,…,filepartN)

用法: fullfile函数可以将多个字符串拼接成文件路径
输出:将各个输入用"/“或”"拼接起来

f = fullfile('Applications','matlab','fun.m') 

输出:Applications/matlab/fun.m

错误

“libcudart.10.1.dylib”将对您的电脑造成伤害。 您应该将它移到废纸篓。、手写数字识别代码函数解读(MATLAB实现)_第7张图片手写数字识别代码函数解读(MATLAB实现)_第8张图片
已解决:

sudo cp /Applications/Polyspace/R2019b/bin/maci64/libcudart.10.1.dylib /usr/local/lib
sudo codesign --deep -fs - /usr/local/lib/libcudart.10.1.dylib

你可能感兴趣的:(智能算法,matlab,python,开发语言)