3.第二部分函数代码分析trainingImageName

这个比较简单,分析如下:

输入:文件夹路径,名称eg: /  1.jpg

操作:RGB三维图像转换为灰度图,并将unit8格式转为double类型

输出:double类型的一维250*200的图像数据

               % path指路径,filelist指读取出来的文件的信息,p,s分别指训练集的照片集和素描集
function [imp ims] = trainingImageRead(pPath,sPath,filelist_p,filelist_s)

if isempty(filelist_p)
    error(['No images detected in ' pPath '!']);
end

if isempty(filelist_s)
    error(['No images detected in ' sPath '!']);
end

if length(filelist_p) ~= length(filelist_s)
    error(['The number of images in ' pPath ...
        'should equals that in ' sPath]);
else
            % 这里才是正常操作,之前的都是排除一系列不正常的情况
    for iii = 1:length(filelist_p) %iii也类似于i,就是一个变量
        if filelist_p(iii).name ~= filelist_s(iii).name
            error('Images does not match!');
        end
    end
end
            % 好吧,以上都是在匹配名字中

for kk = 1:length(filelist_p)
    
    imp0 = imread(fullfile(pPath,filelist_p(kk).name));% 读入数据,imread将其表示为m*n*3维的矩阵形式,m表示行,m行是不是就是高,n表示列,n列是不是就是宽
    ims0 = imread(fullfile(sPath,filelist_s(kk).name));
    
    if size(imp0,3) == 3
            % 第三个值为3的话,表示是RGB图像,它是有好几维的,把RGB图像转换为gray灰度图,单个矩阵形式
          imp0 = rgb2gray(imp0);
    end
    
    if size(ims0,3) == 3 
          ims0 = rgb2gray(ims0);
    end
    
    imp(:,:,kk) = double(imp0);
    ims(:,:,kk) = double(ims0);
    
end

测试一下功能:看一下第一张照片输入的变化:imp是imread读入数据;imp0是转换为灰度的数据,imp1是输出的double类型的结果。rgb2gray 函数是通过消除色调和饱和度信息,同时保留亮度,来将 RGB 图像转换为灰度图。

imp = imread(fullfile(trpathphoto,filelist_p(1).name));
imp0 = rgb2gray(imp);
imp1(:,:,1) = double(imp0);

看一下值的区别: 

这里是三者的数据内容,有转换的

转换为double类型好像变化不大 。=是的,转换为double类型只是为了计算精度问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不做笔记的程序员不是好的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值