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

📄 lhiquerypolygon.m

📁 This code can parse any image in matlab. Very elaborate code
💻 M
字号:
function [Dq, j] = LMquerypolygon(D, objectname, Xo, Yo, threshold)%% Search the database for images that contain an object matching a query% shape.%% [Dq, j] = LMquerypolygon(D, objectname, polygon)%% The output arguments are the same than for the function LMqueryif nargin<5    threshold = .7;end[Dd, j] = LMquery(D, 'object.name', objectname);Dd = D(j);% For each image, extract object polygon and compute overlap.ii = 0; matches = 0;clear Dq;j2 = zeros(1,length(Dd));for i = 1:length(Dd)    k = LMobjectindex(Dd(i).annotation, objectname);    if length(j)>0        clear overlap        for n = 1:length(k) % only consider the first instance            [X,Y] = getLMpolygon(Dd(i).annotation.object(k(n)).polygon);            overlap(n) = overlapping(X, Y, Xo, Yo);        end        jj = find(overlap>threshold);        if length(jj)>0            matches = matches + length(jj);            ii = ii+1;            Dq(ii) = Dd(i);            Dq(ii).annotation.object = Dd(i).annotation.object(k(jj));            j2(ii) = i;        end    endend% select final indices j = j(j2(1:ii));disp(sprintf('%d polygons matched the target out of %d images', matches, length(D)))function overlap = overlapping(X1, Y1, X2, Y2)n = 1;m = 1;c1 = [(max(X1)+min(X1))/2 (max(Y1)+min(Y1))/2];D1 = [(max(X1)-min(X1))   (max(Y1)-min(Y1))];c2 = [(max(X2)+min(X2))/2 (max(Y2)+min(Y2))/2];D2 = [(max(X2)-min(X2))   (max(Y2)-min(Y2))];X1 = (X1 - c1(1))/max(D1);Y1 = (Y1 - c1(2))/max(D1);X2 = (X2 - c2(1))/max(D2);Y2 = (Y2 - c2(2))/max(D2);% % PASCAL measure:% overlap = intersection / ua;[intersection, union] = polyintersect(X1, Y1, X2, Y2);overlap = intersection / union;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -