1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > SVNH数据(.mat格式)转为图像(.png)matlab代码

SVNH数据(.mat格式)转为图像(.png)matlab代码

时间:2021-04-24 22:01:41

相关推荐

SVNH数据(.mat格式)转为图像(.png)matlab代码

一、获取SVNH数据

数据集集地址-http://ufldl.stanford.edu/housenumbers/

提供两种格式的数据:

1.Format 1,图像形式,压缩包包括train.tar.gz和test.tar.gz。

Format 1 是一些原始的未经处理的彩色图片,如下图所示(不含有蓝色的边框),下载的数据集含有 PNG 的图像和 digitStruct.mat 的文件,其中包含了边框的位置信息,很多图片上有好几个数字

2.Format 2, .mat格式的数据,包括train_32x32.mat和 test_32x32.mat

·10 classes, 1 for each digit. Digit '1' has label 1, '9' has label 9 and '0' has label 10.

(注意0的标签是10,在后续处理需要修改为0,保持与mnist数据集一致方便使用。)

·73257 digits for training, 26032 digits for testing, and 531131 additional, somewhat less difficult samples, to use as extra training data。4-D数据格式对应(width, height, channels, samples),大小为(32*32*3*73257)。

·Comes in two formats:

1. Original images with character level bounding boxes.

2. MNIST-like 32-by-32 images centered around a single character (many of the images do contain some distractors at the sides).

二、将.mat形式数据转换为'.png'图像

图像分别存在1-10命名的10个文件夹中,并以原始的序号命名。10在保存完图后改为0。

注:这步的操作主要是为了方便后续dataset.ImageFolder处理,其要求数据存储的文件路径格式为

├── svhn

├── trainset

│ ├── subfolders for 1 ~ 10

├── testset

具体转换的matlab代码如下:

%将SVHN数据的.mat形式转换为图像并分别存在trainset和testset文件夹下%这两个文件夹中分别包含1-10命名的10个文件夹,其中存图像clear;clc;%1.创建trainset和testset文件夹train_filename = 'trainset';if exist(train_filename)==0 %该文件夹不存在,则直接创建mkdir(train_filename);endtest_filename = 'trainset';if exist(test_filename)==0 %该文件夹不存在,则直接创建mkdir(test_filename);end% mkdir('trainset');% mkdir('testset');%2.分别在trainset和testset文件夹下创建1-10命名的文件夹,用于存图load train_32x32.mat;labels = unique(y);fileNums = length(labels);savepath = './trainset';makefile(fileNums, savepath);savepath = './testset';makefile(fileNums, savepath);% 3.分别在对应标签的文件夹下存图% for traindataload train_32x32.mat;savepath = './trainset/';img_num = length(y);%size(X,4);for i = 1:img_numimg = X(:,:,:,i);imshow(img);n = y(i);choosensaveimg(img,n,i,savepath);end% for testdataload test_32x32.mat;savepath = './testset/';img_num = length(y);%size(X,4);for i = 1:img_numimg = X(:,:,:,i);imshow(img);n = y(i);choosensaveimg(img,n,i,savepath);end% fun2:在文件1-10保存图片function choosensaveimg(img,n,i,savepath)switch ncase 1imwrite(img,strcat(savepath,'1/',num2str(i),'.png'));case 2imwrite(img,strcat(savepath,'2/',num2str(i),'.png'));%该数据集本身是.png.mnist是'.jpg'case 3imwrite(img,strcat(savepath,'3/',num2str(i),'.png'));case 4imwrite(img,strcat(savepath,'4/',num2str(i),'.png'));case 5imwrite(img,strcat(savepath,'5/',num2str(i),'.png'));case 6imwrite(img,strcat(savepath,'6/',num2str(i),'.png'));case 7imwrite(img,strcat(savepath,'7/',num2str(i),'.png'));case 8imwrite(img,strcat(savepath,'8/',num2str(i),'.png'));case 9imwrite(img,strcat(savepath,'9/',num2str(i),'.png'));case 10 %原始数据 0 的标签是 10,将转换的图像存在文件夹0,相当于标签转化成 0imwrite(img,strcat(savepath,'0/',num2str(i),'.png'));endend% fun1:创建1-10的文件夹function makefile(fileNums, savepath)for i=1:fileNumsfile_name = sprintf('%s',num2str(i));file_path_name_ = strcat(savepath,'/',file_name,'');if exist(file_path_name_)==0 %该文件夹不存在,则直接创建mkdir(file_path_name_);else %该文件夹存在,则先删除再创建rmdir(file_path_name_, 's'); %该文件夹中有没有文件均可mkdir(file_path_name_);endendend

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。