Matlab的用法总结
1. 对序列进行洗牌 randperm()
randperm()产生随机的序列
%if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(filepaths)) %对filepaths进行随机的洗牌,得到了 cshuffle => [2,5,4,1,3] 洗牌后的序列
2. 图像灰度化 rgb2gray()
MyYuanLaiPic = imread('e:/image/matlab/Cluo.jpg');%读取RGB格式的图像
MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换
[rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数
MidGrayPic = zeros(rows , cols);%用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像
MidGrayPic = uint8(MidGrayPic);%将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的
for i = :rows
for j = :cols
sum = ;
for k = :colors
sum = sum + MyYuanLaiPic(i , j , k) / ;%进行转化的关键公式,sum每次都因为后面的数字而不能超过255
end
MidGrayPic(i , j) = sum;
end
end
imwrite(MidGrayPic , 'E:/image/matlab/Cluo.png' , 'png');
%显示原来的RGB图像
figure();
imshow(MyYuanLaiPic);
%显示经过系统函数运算过的灰度图像
figure();
imshow(MyFirstGrayPic);
%显示转化之后的灰度图像
figure();
imshow(MidGrayPic);
3. 对图像进行旋转和翻转
function I = data_augmentation(I, K) if K ==
return;
elseif K == % flipped
I = flipud(I);
return;
elseif K == % rotation
I = rot90(I,);
return;
elseif K == % rotation & flipped
I = rot90(I,);
I = flipud(I);
return;
elseif K == % rotation
I = rot90(I,);
return;
elseif K == % rotation & flipped
I = rot90(I,);
I = flipud(I);
return;
elseif K == % rotation
I = rot90(I,);
return;
elseif K == % rotation & flipped
I = rot90(I,);
I = flipud(I);
return;
end
4. 对array进行连接 cat(dim, A, B)

、
5.对图像进缩放,imresize()
HR_current = imresize(HR,nscales(j,i),'bicubic');
%第二个参数为缩放因子,e.g. 0.5、0.8
%第三个参数为缩放method
6.读取图像默认的数据类型uint8,最大值为255;但是在进行图形矩阵的操作和变化过程中非常容易溢出,所以需要转化为double(64为,0~1)或者single
im2double()将值0~255映射到0~1之间
7.两个循环搞定patch的获取
for x = +step1 : stride : (hei-patchsize+)
for y = +step2 : stride : (wid-patchsize+)
count = count + ;
subim_label = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
imdb.HRlabels(:, :, :, count) = subim_label;
if count<=diffPatches %不够一个patch进行填充
imdb.HRlabels(:, :, :, end-count+) = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
end
end
end
8.产生图像的patch
function [imdb] = generatepatches %% Note, set your training image set first, large dataset is prefered!
folders = {'path_of_your_training_dataset'}; % set this first! stride = ; % control the number of image patches
patchsize = ; batchSize = ; % important for BNorm
count = ;
nch = ; % for grayscale image, for color image step1 = ;
step2 = ; ext = {'*.jpg','*.png','*.bmp'};
filepaths = []; for j = :length(folders)
for i = : length(ext)
filepaths = cat(,filepaths, dir(fullfile(folders{j}, ext{i}))); %获取folder获取所有figure
end
end cshuffle = randperm(length(filepaths)); % randperm获取filepaths的随机排列
nimages = round(length(filepaths)); % control the number of image patches 去整数 ns = ;
nscales = min(,0.45 + 0.05*randi(,[ns,nimages])); %产生随机矩阵 * all values are less than
naugment = randi(,[,nimages]); %产生一个随机矩阵1* all values are form - for i = : nimages
% HR = imread(fullfile(filepaths(cshuffle(i)).folder,filepaths(cshuffle(i)).name));
HR = imread(fullfile(folders{},filepaths(cshuffle(i)).name)); %从文件夹里随机读取一张图片
HR = HR(:,:,); %如果是rgb图就获取一个通道的,如果是gray图则自然为该图像 HR = data_augmentation(HR, naugment(i)); % 数据增大data_augmentation data_augmentation(HR, ); 转到data_augmentation.m里面就将图片旋转90度
disp([i,nimages,round(count/batchSize)]) for j = : size(nscales,) % size(nscales,) 为1 HR_current = imresize(HR,nscales(j,i),'bicubic'); %对图像进行尺度的缩放
[hei,wid,~] = size(HR_current); % 得到此时的高和宽
for x = +step1 : stride : (hei-patchsize+) % 产生的patch (hei-patchsize+)这个value是一个临界值,最后放不了一个patch
for y = +step2 : stride : (wid-patchsize+)
count=count+;
end
end
end
end numPatches = ceil(count/batchSize)*batchSize; %ceil(1.2)=> ceil(0.2)=> 总共有多少个patch
diffPatches = numPatches - count; % 真实的差了多少个patch
disp([numPatches,numPatches/batchSize,diffPatches]); disp('-----------------------------'); %------------------------------------------------------------------
%------------------------------------------------------------------ count = ;
imdb.HRlabels = zeros(patchsize, patchsize, nch, numPatches,'single'); %imdb是一个结构体 *** for i = : nimages
% HR = imread(fullfile(filepaths(cshuffle(i)).folder,filepaths(cshuffle(i)).name));
HR = imread(fullfile(folders{},filepaths(cshuffle(i)).name)); %从文件夹里随机读取一张图片 if nch == && size(HR,) == %rgb2gray
HR = rgb2gray(HR);
end HR = data_augmentation(HR, naugment(i)); % 图像旋转操作
disp([i,nimages,round(count/)]) for j = : size(nscales,) HR_current = imresize(HR,nscales(j,i),'bicubic'); %图像进行随机的缩放
[hei,wid,~] = size(HR_current);
HR_current = im2single(HR_current); for x = +step1 : stride : (hei-patchsize+)
for y = +step2 : stride : (wid-patchsize+)
count = count + ;
subim_label = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
imdb.HRlabels(:, :, :, count) = subim_label;
if count<=diffPatches %不够一个patch进行填充
imdb.HRlabels(:, :, :, end-count+) = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
end
end
end
end
end imdb.set = uint8(ones(,size(imdb.HRlabels,)));
9.求某一个矩阵的指定维度的大小
size(A,dims) = value
# 如xx是一个16*401的矩阵,则求到第一维度的大小16 size(xx,1) =>16 # 如xx是一个16*401的矩阵,则求到第二维度的大小401 size(xx,2) =>401
Matlab的用法总结的更多相关文章
- matlab fscanf用法
matlab fscanf用法 matlab中的fscanf的用法如下: A=fscanf(fid,format)[A, count]=fscanf(fid,format,size) [A, coun ...
- Matlab norm 用法小记
Matlab norm 用法小记 matlab norm (a) 用法以及实例 norm(A,p)当A是向量时norm(A,p) Returns sum(abs(A).^p)^(1/p), for ...
- matlab fspecial 用法解释
Matlab 的fspecial函数用法 fspecial函数用于建立预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,para)其中type指定 ...
- Matlab基本用法
转至:http://blog.sina.com.cn/s/blog_8354dda801012dyn.html 目录: 一.说明 二.数据类型及基本输入输出 三.流程控制 四.循环 五.数组.数组运算 ...
- matlab ()的用法
经常见到标识符+(),用法比如阵列Y().函数f()..... 时机到了,会总结一下.
- MATLAB入门教程
MATLAB入门教程 1.MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...
- (转)MATLAB入门教程
MATLAB入门教程 1.MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...
- Matlab各种拟合
作者:Z-HE链接:https://zhuanlan.zhihu.com/p/36103034来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1) polyfit 代码 ...
- matlab代码学习_2018-7-28
1.核范数||A|| * 是指矩阵奇异值的和,英文称呼叫Nuclear Norm.matlab code:[s, u, v] = svd(A); nulear_norm = sum(diag(s)); ...
随机推荐
- bootstarpTable load data
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> ...
- 24小时学通Linux内核之调度和内核同步
心情大好,昨晚我们实验室老大和我们聊了好久,作为已经在实验室待了快两年的大三工科男来说,老师让我们不要成为那种技术狗,代码工,说多了都是泪啊,,不过我们的激情依旧不变,老师帮我们组好了队伍,着手参加明 ...
- 【转】app之YdbOnline说明文档
概述 YdbOnline是面向网页开发者提供的网页开发工具包. 通过使用YdbOnline,网页开发者可借助YdbOnline高效地使用语音.位置等手机系统的能力,同时可以直接使用清除缓存.扫一扫等A ...
- 【转】Servlet 生命周期、工作原理
Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Ser ...
- MySQL的SQL预处理(Prepared)
Prepared SQL Statement:SQL的执行.预编译处理语法.注意点 一.SQL 语句的执行处理1.即时 SQL 一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下: 1. ...
- MySQL设置密码复杂度
MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格.使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置. 本文采用测试 ...
- Nessus中文报告自动化脚本
前言 Nessus扫描完成,总要花挺多时间去整理报告,为此写了一个小脚本,用于自动化生成中文漏洞报告. 解析导出的html报告,自动翻译成中文,并提供修复建议,减少整理报告的时间,提升工作效率. gi ...
- Visual Studio 2015编译wxWidgets
宫指导说,换帅如换刀 程序员的编译器一换,基本套路必须都重练几次 使用wxWidgets并不难,但不能使用现有的库和工程配置文件,细节就必须理清楚 获取wxWidgets 官方的下载页面,下7z或zi ...
- C# 解决“请求被中止: 未能创建 SSL/TLS 安全通道”的问题
最近在开发项目的时候,使用爬虫抓取网络数据的时候,当请求Web数据时,碰到了“请求被中止: 未能创建 SSL/TLS 安全通道”的问题,尝试过很多网上的方法,例如添加证书等都没有用.最后在GitHub ...
- [转]GREP for Windows
http://www.interlog.com/~tcharron/grep.html A very flexible grep for windows GREP is a well known to ...