⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_color.asv

📁 基于内容的图像检索算法的研究
💻 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 + -