image processing - What instead of SURF in logo (visual sample) finding? -


i have task find logo image within photographic picture. need locate logo , calculate it's perspective distortion (logos on plastic cards).

classic way textbooks use surf. unfortunately, surf has several disadvantages here:

1) logo image has relatively few features , hard find within big picture (actually effectiveness appeared low)

2) logo image has significant coloring, surf not use

my questions are:

1) correct name of task of finding small distorted image inside big picture?

2) there methods task, other surf features matching?

for example, can imagine many samples of distorted logo image, digitized different resolutions. think if start finding @ low resolution, filter out bad hypotheses early. going gradually higher resolutions, simultaneously match image , determine it's projection parameters.

are methods resembling approach?

have tried mser algorithm? worked great me.

---end of standard answer, proceed if have time , enjoy playing image processing---

also in searching template relatively small area developed approach use template's stable extremal regions (ser) map scanning area another, more powerful/resource-intensive algorithm. approach extremely easy implement , worked wonders in last project. if interested, implementation follows (matlab code, no fancy functions or vectorization):

try identify unique stability interval (mint-maxt) of logo program this:

testimage=imread('leaves.jpg');  testimage=rgb2gray(testimage); %transform rgb grayscale  newser=zeros(size(testimage)); %initialise stuff oldser=zeros(size(testimage)); spinser=zeros(size(testimage));  hot=zeros(size(testimage)); %your stability map  maxt=255; %your interval, unlike mser don't use whole bit-depth mint=1; %try 40-150 if have high contrast in logo   k=maxt:-1:mint      testimage1=im2bw(testimage,k/256);      imshow(abs(hot/interval))     colormap(hot)      hold on      text(20,30,['treshold: ',num2str(k)],'color','k','fontweight','bold','fontsize',16,'backgroundcolor','r')      hold off      oldser=newser;     newser=testimage1;      i=1:size(testimage,1);         j=1:size(testimage,2)              if oldser(i,j)==newser(i,j) && spinser(i,j)==0 % extremal regions remain same/ stable on both thresholds?                  hot(i,j)=hot(i,j)+1;              else                  hot(i,j)=hot(i,j)-1;                  spinser(i,j)=1;              end          end      end      shg      pause(0.1)  end 

once identified interval works region generate map discriminate rest of image, , search map regions of interest.

maxt=120;  mint=40;  map=zeros(x,y);                    %create map ser-filtering   % testimagemint=im2bw(image,mint/256);   %set range of extremal region stability. % testimagemaxt=im2bw(image,maxt/256); %  % i=1:x %     j=1:y %          %         map(i,j)=testimagemaxt(i,j)==testimagemint(i,j) ; %map pixels remain stable on interval %  %     end % end   map=abs(image-(maxt-mint)/(2*maxt))*2*maxt/(maxt-mint); %more or less equivalent loop comented above >10x faster...  map=map>0.5; %...  

and apply whatever detector want area or ¬(that area)

corners = cornersusanmapped(imagebw,map,17); 

hope helps , have fun!


Comments

Popular posts from this blog

html5 - What is breaking my page when printing? -

html - Unable to style the color of bullets in a list -

c# - must be a non-abstract type with a public parameterless constructor in redis -