?? main_color.asv
字號:
function main_color(mo)
%利用顏色進行圖像的匹配
%-選取第?幅圖像
%-要求mo<=num
mo = 5;
num=20;%圖片總數量
%設定直方圖距離
distance_const=0.8;
%設定形狀匹配相似度
similar_const=0.5;
close all;
%獲取第一幅圖像
%*************
sname='E:\MATLAB71\work\素材庫\';%統一修改存儲位置,修改路徑時只需在此步修改
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 15000]);
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 15000]);
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);
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -