MATLAB特征提取代码
for i=1:26
f=strcat('D:\bishe\',num2str(i));
image=strcat(f,'.jpg');
PS=imread(image);
PS=imresize(PS,[300,300],'bilinear');%归一化大小
PS=rgb2gray(PS);
[m,n]=size(PS); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
%直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %计算Sk
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度 %图像均衡化
f=PS;
for i=0:255
f(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(f); %边缘检测
f=edge(f,'canny',0.25);
imshow(f); %二值法锐化图像
f=double(f);
[x,y]=gradient(f);
g=sqrt(x.*x+y.*y);
i=find(g>=0.5);
g(i)=256;
j=find(g<0.5);
g(j)=0;
imshow(g);
title('二值法锐化图像'); %中值滤波
g=medfilt2(g);
g=dither(g);
imshow(g);