Advertisement

matlab特征值提取,求大神指导,图片的特征值提取

阅读量:

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

图片批量操作

fig_path='C:\Users\Administrator\Desktop\shuzi';

cd (fig_path); %切换到指定路径下

allfigs=struct2cell(dir('*.jpg')); %只处理jpg文件

[w,img_num]=size(allfigs); %获得jpg文件的个数

for pn=1:img_num %逐次取出图片

image_name=allfigs{1,pn}; %allfigs{1,pn}存储每个图片的名字

img_origin=imread(image_name); %读取图片

fprintf('%d %s\n',pn,strcat(fig_path,image_name));

for n = 1:220

a(n,:) = inputvar(img_origin);

P = a;

end

end

图片特征提取

function y=inputvar(I)

% inputvar 特征提取

b = find(I<130);

I(b) = 1;

%找出矩阵中像素点的位置赋值为1

采用二值化处理过程对数字图像进行处理,并因为读入的图像形式较为简单而使得二值化的方法更为简便

% 图像预处理部分

[m,n] = size(I);%对输入图片矩阵进行定义m行n列

p = zeros(1,17);%对矩阵p进行定义,行1列17全零矩阵

for k=1:4 %k从1递增到4,循环四次——将图片划分四个区域

for i=1+(k-1)*7:m/4+(k-1)*7%k=1,i从1递增到m/4(7),k=2,i从8到m/4+7(14),k=3,。。。(21)(28)

for j=1:n/2%j从1递增到n/2

if I(i,j)==0

p(k) = p(k)+1;%计算像素点位置

else

p(k) = p(k);

end

end

for j=n/2+1:n

if I(i,j)==0

p(k+4) = p(k+4)+1;

else

p(k+4) = p(k+4);

end

end

end

end

% 把图片分成八个独立区域计算各自的图象密度,作为部分特征向量

p(9) = p(1)+p(2);

p(10) = p(3)+p(4);

p(11) = p(5)+p(6);

p(12) = p(7)+p(8);

p(13) = p(1)+p(5);

p(14) = p(2)+p(6);

p(15) = p(3)+p(7);

p(16) = p(4)+p(8);

p(17) = p(9)+p(10)+p(11)+p(12);

y = p/742;

% 合并区域的图像密度作为其他部分特征向量

可能是图片批量处理出现问题,p矩阵显示不正确。

全部评论 (0)

还没有任何评论哟~