基于matlab实现8种不同类型树叶的分类

直接上代码,数据预处理很重要,其它没啥了

        %第一部分:读取图像
        % 定义树叶种类和每种树叶的图片数量
        %% 
        leafTypes = {'Quercussuber', 'Salixatrocinerea', 'Populusnigra', 'Alnussp', 'Quercusrobur', 'Crataegusmonogyna', 'Ilexaquifolium', 'Neriumoleander'};
        numImagesPerType =8;%每种树叶选取8张导入数据集
        pi=3.14;
        % 初始化数据集
        dataset = struct();%原始图像
        %data2bw=struct();%二值图像
        %datargbgray = struct();%灰度图像
        %datargbhsi = struct();%HSI图像


        % 通过for循环读取图片并添加到数据集中
        for i = 1:length(leafTypes)
            for j = 1:numImagesPerType
                imagePath = ['C:\Users\灰太狼\OneDrive\桌面\图片训练集\', leafTypes{i}, '\iPAD2_C0_EX0', num2str(j), '.jpg'];
                imageData = imread(imagePath);
                dataset.(leafTypes{i}){j} = imageData;
                %datargbgray.(leafTypes{i}){j}=imageData;
                %datargbhsi.(leafTypes{i}){j}=imageData;
                %data2bw.(leafTypes{i}){j}=imageData;
                %figure;
                %imshow(imageData);%显示原始图像
            end
        end
        
        %
        %for leafType = fieldnames(dataset)'
            %for imageIndex = 1:numImagesPerType
               % imageData = dataset.(leafType{1}){imageIndex};
                
        
%
        %imagegray=im2gray(imageData);
        %imagegrayopen=imopen(imagegray,se);
        %imagegray=imagegrayopen+imagegray;
        %datargbgray.(leafTypes{i}){j}=imagegray;
        %figure;
        %imshow(imagegray);

%
       %imagehsv=rgb2hsv(imageData);
        %images=imagehsv(:,:,2);
        %imagetransit=im2bw(imageData);
        %imagehsv=images.*imagetransit;
        %datargbhsi.(leafTypes{i}){j}=imagehsv;
        %figure;
        %imshow(imagehsv);
   % end
%end

%imshow(data2bw.three{5});

        %第二部分:特征提取

featuredataset=struct();%建立特征数据集
pi=3.14159;
for leafType = fieldnames(dataset)'    %建立循环预处理图像,并在图像处理完成后提取特征储存
for imageIndex = 1:numImagesPerType
       imageDatas = dataset.(leafType{1}){imageIndex};
       
       %二值化预处理,对RGB图像进行调整,提亮绿色,减少黑色
       r = imageDatas(:,:,1);
       g = imageDatas(:,:,2);
       %% 
       b = imageDatas(:,:,3);
       % 减少黑色分量(降低蓝色和红色通道的值)
       r = r * 0.8;
       b = b * 0.8;
       % 增加绿色分量
       g = g * 1.2;

       %处理棕色部分,即绿叶枯萎那部分
       brown_threshold = 125;  % 比如红色和绿色分量都小于 125 可视为棕色
       % 对棕色像素进行处理
       brown_pixels = (r < brown_threshold) & (g < brown_threshold);
       g(brown_pixels) = g(brown_pixels) + 80;  % 增加绿色分量
       
       new_img = cat(3, r, g, b);% 组合修改后的通道
       hsv = rgb2hsv(new_img);%将RGB模型转为HSI模型

       % 提取 V 通道(亮度),调整亮度
       v_channel = hsv(:,:,3);
       threshold = 1;% 设定一个阈值,低于该阈值的认为是较黑部分
       v_channel(v_channel < threshold) = v_channel(v_channel < threshold) + 1; % 将较黑部分的 V 通道值增加一些以变亮一点
       hsv(:,:,3) = v_channel;% 根据调整后的 V 通道更新 HSV
       adjusted_img = hsv2rgb(hsv); % 将 HSV 转换回 RGB
       %figure;
       %imshow(adjusted_img);
        
       %运用超绿指数提取树叶的二值图像
       image = im2double(adjusted_img); %图像运算不能用uint8类型,会发生溢出现象,要转成double类型
       R = image(:,:,1);
       G &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值