% 颜色特征提取,白粉病颜色特征存放在yanse文件,标记为1,条锈病颜色特征存放在yanse1文件标记为1,叶锈病颜色特征存放在yanse2文件标记为1
% 参数初始化
fileform = '.\白粉病分割\*.jpg';
filepathsrc = '.\白粉病分割\';
% fileform = 'C:\Users\mn\Desktop\小麦病害研究\分割result\白粉病\*.jpg';
% filepathsrc = 'C:\Users\mn\Desktop\小麦病害研究\分割result\白粉病\';
file = dir(fileform);
A = {'类别' '序号' 'R通道一阶矩' 'G通道一阶矩' 'B通道一阶矩' 'R通道二阶矩' ...
'G通道二阶矩' 'B通道二阶矩' 'R通道三阶矩' 'G通道三阶矩' 'B通道三阶矩'};
for i = 1:length(file)
filename = [filepathsrc, file(i).name];
%filename='C:\Users\lenovo\Desktop\bishe\tmp\1_1_processed.jpg'; % 图像切割后图片路径名称
%filename='C:\Users\mn\Desktop\小麦病害研究\分割result\白粉病\1.jpg';
outputfile = '.\mm\'; % 颜色矩提取文件
%% 计算阶矩
results = zeros(1,9+2);
subimage=imread(filename); % 读取图像数据
subimage=im2double(subimage); % 数据转换,把subimage类型转换为double型
firstmoment= mean(mean(subimage)); % 一阶矩
for m=1:3 % 针对RGB三通道分别计算
results(1,2+m)=firstmoment(1,1,m);
differencemoment= subimage(:,:,m)-firstmoment(1,1,m);
secondmoment= sqrt(sum(differencemoment(:).*differencemoment(:))/101/101); % 二阶矩
results(1,5+m)=secondmoment;
thirdmoment= nthroot(sum(differencemoment(:).*differencemoment(:).*differencemoment(:))/101/101,3); % 三阶矩
results(1,8+m)=thirdmoment;
end
% % 提取类别和序号
% index_ = strfind(filename,'\');
% index_dot = strfind(filename,'_');
% filename = filename(index_(1,end)+1:index_dot(1,end)-1);
% index__= strfind(filename,'_');
% type = filename(1:index__-1);
% id = filename(index__+1:end);
% results(1,1)=str2double(type);
% results(1,2)=str2double(id);
%提取类别和序号
results(1,1)=2;
results(1,2)=i;
%% 阶矩写入文件
%result_title={'类别' '序号' 'R通道一阶矩' 'G通道一阶矩' 'B通道一阶矩' 'R通道二阶矩' ...
% 'G通道二阶矩' 'B通道二阶矩' 'R通道三阶矩' 'G通道三阶矩' 'B通道三阶矩'};
result=[num2cell(results)];
A = [A;result];
end
xlswrite('.\mm\1.xlsx',A);
disp('图像阶矩文件生成');