matlab特征值提取,求大神指导,图片的特征值提取
发布日期:2021-10-27 11:20:31 浏览次数:11 分类:技术文章

本文共 1168 字,大约阅读时间需要 3 分钟。

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

图片批量操作

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矩阵显示不正确。

转载地址:https://blog.csdn.net/weixin_34518190/article/details/115851438 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:matlab代码看不懂,求助帖!有一个代码看不懂,请能看懂的哥哥姐姐帮帮忙
下一篇:正交解调 matlab,MATLAB正交振幅调制解调仿真分析(一)_通信工程毕业论文范文

发表评论

最新留言

很好
[***.229.124.182]2024年04月16日 22时58分39秒