本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!