1. 对序列进行洗牌 randperm()

  1. randperm()产生随机的序列
  2. %if filepaths 是一个5*1的结构体,then
  3.  
  4. cshuffle = randperm(length(filepaths)) %对filepaths进行随机的洗牌,得到了 cshuffle => [2,5,4,1,3] 洗牌后的序列

2. 图像灰度化 rgb2gray()

  1. MyYuanLaiPic = imread('e:/image/matlab/Cluo.jpg');%读取RGB格式的图像
  2. MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换
  3.  
  4. [rows , cols , colors] = size(MyYuanLaiPic);%得到原来图像的矩阵的参数
  5. MidGrayPic = zeros(rows , cols);%用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像
  6. MidGrayPic = uint8(MidGrayPic);%将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的
  7.  
  8. for i = :rows
  9. for j = :cols
  10. sum = ;
  11. for k = :colors
  12. sum = sum + MyYuanLaiPic(i , j , k) / ;%进行转化的关键公式,sum每次都因为后面的数字而不能超过255
  13. end
  14. MidGrayPic(i , j) = sum;
  15. end
  16. end
  17. imwrite(MidGrayPic , 'E:/image/matlab/Cluo.png' , 'png');
  18.  
  19. %显示原来的RGB图像
  20. figure();
  21. imshow(MyYuanLaiPic);
  22.  
  23. %显示经过系统函数运算过的灰度图像
  24. figure();
  25. imshow(MyFirstGrayPic);
  26.  
  27. %显示转化之后的灰度图像
  28. figure();
  29. imshow(MidGrayPic);

3. 对图像进行旋转和翻转

  1. function I = data_augmentation(I, K)
  2.  
  3. if K ==
  4. return;
  5. elseif K == % flipped
  6. I = flipud(I);
  7. return;
  8. elseif K == % rotation
  9. I = rot90(I,);
  10. return;
  11. elseif K == % rotation & flipped
  12. I = rot90(I,);
  13. I = flipud(I);
  14. return;
  15. elseif K == % rotation
  16. I = rot90(I,);
  17. return;
  18. elseif K == % rotation & flipped
  19. I = rot90(I,);
  20. I = flipud(I);
  21. return;
  22. elseif K == % rotation
  23. I = rot90(I,);
  24. return;
  25. elseif K == % rotation & flipped
  26. I = rot90(I,);
  27. I = flipud(I);
  28. return;
  29. end

4. 对array进行连接 cat(dim, A, B)

5.对图像进缩放,imresize()

  1. HR_current = imresize(HR,nscales(j,i),'bicubic');
  2. %第二个参数为缩放因子,e.g. 0.50.8
    %第三个参数为缩放method

6.读取图像默认的数据类型uint8,最大值为255;但是在进行图形矩阵的操作和变化过程中非常容易溢出,所以需要转化为double(64为,0~1)或者single

  1. im2double()将值0~255映射到0~1之间

7.两个循环搞定patch的获取

  1. for x = +step1 : stride : (hei-patchsize+)
  2. for y = +step2 : stride : (wid-patchsize+)
  3. count = count + ;
  4. subim_label = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
  5. imdb.HRlabels(:, :, :, count) = subim_label;
  6. if count<=diffPatches %不够一个patch进行填充
  7. imdb.HRlabels(:, :, :, end-count+) = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
  8. end
  9. end
  10. end

8.产生图像的patch

  1. function [imdb] = generatepatches
  2.  
  3. %% Note, set your training image set first, large dataset is prefered!
  4. folders = {'path_of_your_training_dataset'}; % set this first!
  5.  
  6. stride = ; % control the number of image patches
  7. patchsize = ;
  8.  
  9. batchSize = ; % important for BNorm
  10. count = ;
  11. nch = ; % for grayscale image, for color image
  12.  
  13. step1 = ;
  14. step2 = ;
  15.  
  16. ext = {'*.jpg','*.png','*.bmp'};
  17. filepaths = [];
  18.  
  19. for j = :length(folders)
  20. for i = : length(ext)
  21. filepaths = cat(,filepaths, dir(fullfile(folders{j}, ext{i}))); %获取folder获取所有figure
  22. end
  23. end
  24.  
  25. cshuffle = randperm(length(filepaths)); % randperm获取filepaths的随机排列
  26. nimages = round(length(filepaths)); % control the number of image patches 去整数
  27.  
  28. ns = ;
  29. nscales = min(,0.45 + 0.05*randi(,[ns,nimages])); %产生随机矩阵 * all values are less than
  30. naugment = randi(,[,nimages]); %产生一个随机矩阵1* all values are form -
  31.  
  32. for i = : nimages
  33. % HR = imread(fullfile(filepaths(cshuffle(i)).folder,filepaths(cshuffle(i)).name));
  34. HR = imread(fullfile(folders{},filepaths(cshuffle(i)).name)); %从文件夹里随机读取一张图片
  35. HR = HR(:,:,); %如果是rgb图就获取一个通道的,如果是gray图则自然为该图像
  36.  
  37. HR = data_augmentation(HR, naugment(i)); % 数据增大data_augmentation data_augmentation(HR, ); 转到data_augmentation.m里面就将图片旋转90
  38. disp([i,nimages,round(count/batchSize)])
  39.  
  40. for j = : size(nscales,) % size(nscales,) 1
  41.  
  42. HR_current = imresize(HR,nscales(j,i),'bicubic'); %对图像进行尺度的缩放
  43. [hei,wid,~] = size(HR_current); % 得到此时的高和宽
  44. for x = +step1 : stride : (hei-patchsize+) % 产生的patch (hei-patchsize+)这个value是一个临界值,最后放不了一个patch
  45. for y = +step2 : stride : (wid-patchsize+)
  46. count=count+;
  47. end
  48. end
  49. end
  50. end
  51.  
  52. numPatches = ceil(count/batchSize)*batchSize; %ceil(1.2)=> ceil(0.2)=> 总共有多少个patch
  53. diffPatches = numPatches - count; % 真实的差了多少个patch
  54. disp([numPatches,numPatches/batchSize,diffPatches]);
  55.  
  56. disp('-----------------------------');
  57.  
  58. %------------------------------------------------------------------
  59. %------------------------------------------------------------------
  60.  
  61. count = ;
  62. imdb.HRlabels = zeros(patchsize, patchsize, nch, numPatches,'single'); %imdb是一个结构体 ***
  63.  
  64. for i = : nimages
  65. % HR = imread(fullfile(filepaths(cshuffle(i)).folder,filepaths(cshuffle(i)).name));
  66. HR = imread(fullfile(folders{},filepaths(cshuffle(i)).name)); %从文件夹里随机读取一张图片
  67.  
  68. if nch == && size(HR,) == %rgb2gray
  69. HR = rgb2gray(HR);
  70. end
  71.  
  72. HR = data_augmentation(HR, naugment(i)); % 图像旋转操作
  73. disp([i,nimages,round(count/)])
  74.  
  75. for j = : size(nscales,)
  76.  
  77. HR_current = imresize(HR,nscales(j,i),'bicubic'); %图像进行随机的缩放
  78. [hei,wid,~] = size(HR_current);
  79. HR_current = im2single(HR_current);
  80.  
  81. for x = +step1 : stride : (hei-patchsize+)
  82. for y = +step2 : stride : (wid-patchsize+)
  83. count = count + ;
  84. subim_label = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
  85. imdb.HRlabels(:, :, :, count) = subim_label;
  86. if count<=diffPatches %不够一个patch进行填充
  87. imdb.HRlabels(:, :, :, end-count+) = HR_current(x : x+patchsize-, y : y+patchsize-,:nch);
  88. end
  89. end
  90. end
  91. end
  92. end
  93.  
  94. imdb.set = uint8(ones(,size(imdb.HRlabels,)));

9.求某一个矩阵的指定维度的大小

  1. size(A,dims) = value
  2. # 如xx是一个16*401的矩阵,则求到第一维度的大小16
  3.  
  4. size(xx,1) =>16
  5.  
  6. # 如xx是一个16*401的矩阵,则求到第二维度的大小401
  7.  
  8. size(xx,2) =>401

  

Matlab的用法总结的更多相关文章

  1. matlab fscanf用法

    matlab fscanf用法 matlab中的fscanf的用法如下: A=fscanf(fid,format)[A, count]=fscanf(fid,format,size) [A, coun ...

  2. Matlab norm 用法小记

    Matlab norm 用法小记 matlab norm (a) 用法以及实例 norm(A,p)当A是向量时norm(A,p)   Returns sum(abs(A).^p)^(1/p), for ...

  3. matlab fspecial 用法解释

    Matlab 的fspecial函数用法 fspecial函数用于建立预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,para)其中type指定 ...

  4. Matlab基本用法

    转至:http://blog.sina.com.cn/s/blog_8354dda801012dyn.html 目录: 一.说明 二.数据类型及基本输入输出 三.流程控制 四.循环 五.数组.数组运算 ...

  5. matlab ()的用法

    经常见到标识符+(),用法比如阵列Y().函数f()..... 时机到了,会总结一下.

  6. MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...

  7. (转)MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...

  8. Matlab各种拟合

    作者:Z-HE链接:https://zhuanlan.zhihu.com/p/36103034来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1) polyfit 代码 ...

  9. matlab代码学习_2018-7-28

    1.核范数||A|| * 是指矩阵奇异值的和,英文称呼叫Nuclear Norm.matlab code:[s, u, v] = svd(A); nulear_norm = sum(diag(s)); ...

随机推荐

  1. eclipse如何安裝JPA 和Data Source Explorer

    安裝Data Source Explorer https://blog.csdn.net/XIAOZHI0999/article/details/61199801?utm_source=blogxgw ...

  2. C++系统自己主动生成默认构造函数的情况

    (1) 基类存在默认构造函数 class CBaseClass { public: CBaseClass() { m_i = 0; } private: int m_i; }; class CDriv ...

  3. 盘点 React 16.0 ~ 16.5 主要更新及其应用

    目录 0. 生命周期函数的更新 1. 全新的 Content API 2. React Strict Mode 3. Portal 4. Refs 5. Fragment 6. 其他 7. 总结 生命 ...

  4. svn中status为missing的文件的处理方式

    svn中status为missing的文件在每次commit时都会出现在待提交的列表里,而且它的上级文件夹前面有个红色的点,有碍观瞻,处理方式也很简单: 1.在待提交的列表里,右击该文件->de ...

  5. 浅析 <路印协议--Loopring> 及整体分析 Relay 源码

    作者:林冠宏 / 指尖下的幽灵 前序: 路印协议功能非常之多及强大,本文只做入门级别的分析. 理论部分请细看其白皮书,https://github.com/Loopring/whitepaper 实际 ...

  6. nw.js---创建一个点击菜单

    使用nw.js创建一个可点击的菜单: <!doctype html> <html lang="en"> <head> <meta char ...

  7. Spark FPGrowth (Frequent Pattern Mining)

    给定交易数据集,FP增长的第一步是计算项目频率并识别频繁项目.与为同样目的设计的类似Apriori的算法不同,FP增长的第二步使用后缀树(FP-tree)结构来编码事务,而不会显式生成候选集,生成的代 ...

  8. 更改oracle归档模式路径

    1.更改归档路径 在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area.对于这个路径,ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用 ...

  9. cloud_note项目

    导入mysql数据库: set names utf8; source cloud_note.sql 1.搭建springMvc+springIOc+Mybatis --引入jar包 ioc,aop,d ...

  10. 不偏移的天地图地图服务-ArcGIS版

    地图偏移和纠偏是使用在线电子地图不可避免的话题.研究不深入,暂且分享一种已纠偏的地图服务. 服务地址 直接放点干货: 影像地图: http://t0.tianditu.com/cia_w/esri/w ...