hello all, am a beginner to image processing can anybody kindly explain what is the purpose of using the code from the line 44 to line 52 in harris corner detection pls help me out. am try to understand it form past 2 days . pls help me out.
2 views (last 30 days)
Show older comments
- imshow(frame);
- k = waitforbuttonpress;
- point1 = get(gca,'CurrentPoint');
- rectregion = rbbox;
- point2 = get(gca,'CurrentPoint');
- point1 = point1(1,1:2);
- point2 = point2(1,1:2);
- lowerleft = min(point1, point2);
- upperright = max(point1, point2);
- ymin = round(lowerleft(1));
- ymax = round(upperright(1));
- xmin = round(lowerleft(2));
- xmax = round(upperright(2));
- Aj=6;
- cmin=xmin-Aj; cmax=xmax+Aj; rmin=ymin-Aj; rmax=ymax+Aj;
- min_N=12;max_N=16;
- sigma=2; Thrshold=20; r=6; disp=1;
- dx = [-1 0 1; -1 0 1; -1 0 1]; % The Mask
- dy = dx';
- Ix = conv2(I(cmin:cmax,rmin:rmax), dx, 'same');
- Iy = conv2(I(cmin:cmax,rmin:rmax), dy, 'same');
- g = fspecial('gaussian',max(1,fix(6*sigma)), sigma); %%%%%% Gaussien Filter
- Ix2 = conv2(Ix.^2, g, 'same');
- Iy2 = conv2(Iy.^2, g, 'same');
- Ixy = conv2(Ix.*Iy, g,'same');
- k = 0.04;
- R11 = (Ix2.*Iy2 - Ixy.^2) - k*(Ix2 + Iy2).^2;
- R11=(1000/max(max(R11)))*R11;
- R=R11;
- ma=max(max®);
- sze = 2*r+1;
- MX = ordfilt2(R,sze^2,ones(sze));
- R11 = (R==MX)&(R>Thrshold);
- count=sum(sum(R11(5:size(R11,1)-5,5:size(R11,2)-5)));
- loop=0;
- while (((count<min_N)|(count>max_N))&(loop<30))
- if count>max_N
- Thrshold=Thrshold*1.5;
- elseif count < min_N
- Thrshold=Thrshold*0.5;
- end
- R11 = (R==MX)&(R>Thrshold);
- count=sum(sum(R11(5:size(R11,1)-5,5:size(R11,2)-5)));
- loop=loop+1;
- end
- R=R*0;
- R(5:size(R11,1)-5,5:size(R11,2)-5)=R11(5:size(R11,1)-5,5:size(R11,2)-5);
- [r1,c1] = find®;
- PIP=[r1+cmin,c1+rmin]%% IP
- Size_PI=size(PIP,1);
- for r=1: Size_PI
- I(PIP(r,1)-2:PIP(r,1)+2,PIP(r,2)-2)=255;
- I(PIP(r,1)-2:PIP(r,1)+2,PIP(r,2)+2)=255;
- I(PIP(r,1)-2,PIP(r,2)-2:PIP(r,2)+2)=255;
- I(PIP(r,1)+2,PIP(r,2)-2:PIP(r,2)+2)=255;
- end
- imshow(uint8(I))
0 Comments
Answers (1)
David Young
on 27 Jul 2014
Lines 44 and 45 implement the central definition of the Harris-Stephens corner measure. To undertand this, look preferably at the original paper, or failing that, at the Wikipedia article.
Lines 46 and 47 do some scaling, but their purpose is mysterious to me.
Line 48 is probably intended to find the maximum of the array, but looks corrupted since it has an unusual symbol where I would expect to see (R). I don't see how this is used.
Lines 49-51 appear to be finding local maxima of the corner measure, provided that they exceed some threshold.
Line 52 appears to be counting the number of such maximum in the image.
I guess this is not your code, since you are asking for help understanding it. You will probably get a better explanation of it if you consult its author.
0 Comments
See Also
Categories
Find more on Feature Detection and Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!