【Matlab制作目标切片脚本】

这个Matlab脚本用于批量读取指定文件夹中的图像,将其转为灰度,并根据尺寸进行裁剪。如果图像尺寸超过背景大小,会提示超出边界。处理后的图像以灰度格式保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

留作个人备忘之用


clear all
close all
clc
imtool close all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%% 读取切片存放路径
p =genpath('.\目标切片\');
% 获得文件夹下所有子文件的路径,这些路径存在字符串p中,以';'分割
length_p = size(p,2);   %字符串p的长度
path = {};              %建立一个单元数组,数组的每个单元中包含一个目录
temp = [];
for i = 1:length_p      %寻找分割符';',一旦找到,则将路径temp写入path数组中
    if p(i) ~= ';'
        temp = [temp p(i)];
    else 
        temp = [temp '\']; %在路径的最后加入 '\'
        path = [path ; temp];
        temp = [];
    end
end  
clear p length_p temp;
%至此获得data文件夹及其所有子文件夹(及子文件夹的子文件夹)的路径,存于数组path中。
%下面是逐一文件夹中读取图像
% 建立背景图像
Background = zeros(501,501);
%% 寻找各路径下面的图像
file_num = size(path,1);% 子文件夹的个数
for i = 1:3
    file_path =  path{i}; % 图像文件夹路径
    img_path_list = dir(strcat(file_path,'*.jpg')); %选取要处理的图像类型
    img_num = length(img_path_list); %该文件夹中图像数量
    if img_num > 0
        for j = 1:img_num
            image_name = img_path_list(j).name;% 图像名
            image =  imread(strcat(file_path,image_name));
            fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的路径和图像名
            ind=findstr(image_name,'.');
            image_name = image_name(1:ind(1)-1);
            %图像处理过程 在##########中间加入
            if size(image,3) == 3
                image_out = rgb2gray(image);
                [curr_r,curr_c] = size(image_out);
                if curr_r>500 | curr_c>500
                    fprintf('图像尺寸超出背景边界');
                else
                    curr_height = floor(curr_r/2);
                    curr_width = floor(curr_c/2);
                    Background_cur = Background;
                    Background_cur(251-curr_height:251+curr_r-curr_height-1,251-curr_width:251+curr_c-curr_width-1) = ...
                        image_out;
                    Background_cur = uint8(Background_cur);
                    image_out_name = strcat(strcat(file_path,image_name),'_gray.tif');
                    imwrite(Background_cur,image_out_name);
                end
            elseif size(image,3) == 4
                image_out = image(:,:,1:3);
                image_out = rgb2gray(image_out);
                [curr_r,curr_c] = size(image_out);
                if curr_r>500 | curr_c>500
                    fprintf('图像尺寸超出背景边界');
                else
                    curr_height = floor(curr_r/2);
                    curr_width = floor(curr_c/2);
                    Background_cur = Background;
                    Background_cur(251-curr_height:251+curr_r-curr_height-1,251-curr_width:251+curr_c-curr_width-1) = ...
                        image_out;
                    Background_cur = uint8(Background_cur);
                    image_out_name = strcat(strcat(file_path,image_name),'_gray.tif');
                    imwrite(Background_cur,image_out_name);
                end
            end
            %图像处理过程  在##########中间加入
        end
    end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值