MATLAB:图像训练集标签(相减 + 二值化)

最近要做深度学习的训练集,每张原图对应一张二值图

%% 清空
close all;clear;clc;

%% 选择文件路径
folder = uigetdir('C:\Users\xinjiang\Desktop','请选择文件夹');
labelFolder = [folder '\label'];      %%标注文件夹
imageFolder = [folder '\image'];      %%原图文件夹

%% 设置保存路径
% mkdir([folder '\subtract']);        %%相减文件夹
% subtractFolder = [folder '\subtract'];
mkdir([folder '\crack']);             %%裂缝文件夹
crackFolder = [folder '\crack'];

%% 获取文件
labelFile = dir(fullfile(labelFolder,'*.png'));%%获取标注文件
labelCount = length(labelFile);                %%标注文件数量 
imageFile=dir(fullfile(imageFolder,'*.png'));%%获取原图
imageCount=length(imageFile);                %%原图数量

%% 判断标注与原图数量是否相等
if(labelCount ~= imageCount)
    msgbox('原图与标注的数量不等!!!','警告','warn');
    return;
end

%% 遍历 相减 二值化
for i = 1:labelCount
    %% 标注图像
    labelName = labelFile(i).name;
    labelImg = imread([labelFolder,'\',labelName]);
    %% 原图
    imageName = imageFile(i).name;
    imageImg = imread([imageFolder,'\',imageName]);
    %% 相减
    %%像素差值d
    %%imabsdiff的结果是 |d|
    %%其它方式 若d<0,则为0
%     imgAbsdiff = imabsdiff(labelImg,imageImg);%%第一种方式
%     imgSubtract = labelImg - imageImg;        %%第二种方式
    imgSubtract = imsubtract(labelImg,imageImg);%%第三种方式
    imwrite(imgAbsdiff,[subtractFolder '\' imageName] );
    %% 二值化
    crack = im2bw(imgSubtract,0.0001);          %%二值化
    imwrite(crack,[crackFolder '\' imageName] );%%保存
end

msgbox('!KO');
发布了63 篇原创文章 · 获赞 58 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/xinjiang666/article/details/103222245