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] );

    %% 二值化
    binary= im2bw(imgSubtract,0.0001);          %%二值化

    %% 闭运算
    se=strel('disk',5');%结构元素
    imgClose=imclose(binary,se);%直接闭运算
    %% 保存
    imwrite(imgClose,[crackFolder '\' [imageName(1:end-4) '.png']] );%%保存
end

msgbox('!KO');

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Matlab实现图像检索可以使用不同的方法和技术。以下是一种常见的方法,即基于Hu不变矩的图像检索: 1. 首先,导入所需的图像库和Matlab图像处理工具包。 2. 加载图像图像,并将其转换为灰度图像。 3. 对每个图像计算Hu不变矩。Hu不变矩是一组七个数值,用于描述图像的形状特征。 4. 对于待查询的图像,同样计算其Hu不变矩。 5. 使用某种距离度量方法(如欧氏距离或曼哈顿距离)来比较待查询图像的Hu不变矩与图像每个图像的Hu不变矩。 6. 根据距离度量的结果,选择最相似的图像作为检索结果。 以下是一个示例代码,演示了如何使用Matlab实现基于Hu不变矩的图像检索: ```matlab % 导入图像库和Matlab图像处理工具包 imageFolder = '图像库路径'; addpath(imageFolder); pkg load image; % 加载图像图像并转换为灰度图像 imageFiles = dir(fullfile(imageFolder, '*.jpg'));numImages = length(imageFiles); images = cell(1, numImages); for i = 1:numImages images{i} = rgb2gray(imread(fullfile(imageFolder, imageFiles(i).name))); end % 计算图像每个图像的Hu不变矩 huMoments = cell(1, numImages); for i = 1:numImages huMoments{i} = hu_moments(images{i}); end % 待查询图像 queryImage = rgb2gray(imread('待查询图像路径')); queryHuMoments = hu_moments(queryImage); % 计算待查询图像图像每个图像的Hu不变矩之间的距离 distances = zeros(1, numImages); for i = 1:numImages distances(i) = norm(huMoments{i} - queryHuMoments); end % 根据距离度量的结果选择最相似的图像 [~, sortedIndices] = sort(distances); topK = 5; % 选择前K个最相似的图像 retrievedImages = images(sortedIndices(1:topK)); % 显示检索结果 figure; for i = 1:topK subplot(1, topK, i); imshow(retrievedImages{i}); title(['Image ', num2str(i)]); end ``` 请注意,上述代码仅为示例,具体实现可能因应用场景和需求而有所不同。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

累了就要打游戏

把我养胖,搞代码

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

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

打赏作者

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

抵扣说明:

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

余额充值