【图像识别】基于模板匹配实现花朵分类matlab代码
1 简介
基于直方图实现花朵分类代码。
2 部分代码
%图一:利用直方图进行图像的匹配 %图二:利用形状进行图像的匹配 %交给你们啦~~~~ %-要求mo<=num clear; mo = 1;%-选取第?幅图像 num=5;%图片总数量 distance_const=0.8;%设定直方图距离 similar_const=0.5;%设定形状匹配相似度 close all; %获取第一幅图像 sname='';%统一修改存储位置,修改路径时只需在此步修改 ss=[sname,num2str(mo),'.jpg'] ; %打开待匹配图像 f1=open_img(ss); %求待匹配图像的累计直方图 %选择其它待匹配图像 distance=zeros(1,num); for j=1:num sl=[sname,num2str(j),'.jpg'] f2=open_img(sl); %进行直方图的匹配 d=zeros(1,256); for ii=1:256 d(ii)=(sqrt((f1(ii)-f2(ii)).^2)); end distance(j)=sum(d); end distance_num=mo; for j=1:num if distance(j)>0 if distance(j)<=distance_const distance_num=[distance_num,j]; end end end %************************************************************************** %**** disp('采用直方图匹配,在给定的距离值以内的图片名称数为:'); distance_num disp('采用直方图匹配,在给定的距离值以内的图片数目为:'); length(distance_num) %************************************************************************** figure(1) num = length(distance_num); %查找到的累积直方图匹配的图像个数 ref =[sname,num2str(mo),'.jpg']; %待检索的图像 ref_img = imread(ref); %打开图像 subplot(num+1,2,1); imshow(ref_img); title('待匹配图像') h1=IMHISTS(ref_img); %对原图像求取直方图 subplot(num+1,2,2); bar(h1,0.075,'b'); axis([0 255 0 4000]); title('待匹配图像的直方图'); for i = 1:num match = [sname,num2str(distance_num(i)),'.jpg']; %数据库图像 match_img = imread(match); %打开图像 subplot(num+1,2,2*i+1); imshow(match_img); ttxt=sprintf('第%d匹配图像',i);title(ttxt); h2=IMHISTS(match_img); %对匹配图像求取直方图 subplot(num+1,2,2*i+2); bar(h2,0.075,'b'); axis([0 255 0 4000]); ttxt=sprintf('第%d匹配图像直方图',i);title(ttxt); end similar = ones(1,num); rec_tang_1=center_rectangle(ref_img); for i = 1:num match = [sname,num2str(distance_num(i)),'.jpg'];%数据库图像 match_img = imread(match); %打开图像 rec_tang = center_rectangle(match_img); for j = 1:6 similar(i) = similar(i) * (1- abs(rec_tang_1(j)-rec_tang(j)) / (rec_tang_1(j)+rec_tang(j)) ); end end similar_num=mo for i=1:num if abs(i-mo)>0 if similar(i)<=similar_const similar_num=[similar_num,i]; end end end %************************************************************************** %**** disp('采用形状匹配,在给定的距离值以内的图片名称数为:'); similar_num disp('采用形状匹配,在给定的距离值以内的图片数目为:'); length(similar_num) %************************************************************************** num=length(similar_num); figure(2) for i = 1:num match = [sname,num2str(similar_num(i)),'.jpg']; %数据库图像 match_img = imread(match); %打开图像 subplot(num,1,i); imshow(match_img); ttxt=sprintf('第%d匹配图像',i);title(ttxt); end3 仿真结果
4 参考文献
[1]王宪保, 杨敬, 肖本督,等. 一种基于机器学习的花朵种类识别方法:, CN110458200A[P]. 2019.
部分理论引用网络文献,若有侵权联系博主删除。
