1 / 118

Introduction to Computer Vision Lecture 8

Introduction to Computer Vision Lecture 8. Roger S. Gaborski. Straight Line Detection. Man made object often contain straight lines Straight lines can be detected by first filtering the image with line kernels and then linking together edges that are on a straight line

nishan
Download Presentation

Introduction to Computer Vision Lecture 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Computer VisionLecture 8 Roger S. Gaborski

  2. Straight Line Detection • Man made object often contain straight lines • Straight lines can be detected by first filtering the image with line kernels and then linking together edges that are on a straight line • The Hough Transform is another method for detecting straight lines- works with EDGE DATA • Hough transforms can also detect other shapes, such as, circles • Chapter 11 in textbook Roger S. Gaborski

  3. image26.jpg Roger S. Gaborski

  4. >> im = imread('image26.jpg'); >> figure, imshow(im) >> im = imcrop(im); >> figure, imshow(im) Roger S. Gaborski

  5. >> imGray = rgb2gray(im); >> imGray = im2double(imGray); >> whos Name Size Bytes Class Attributes ans 1x1 1 uint8 im 355x410x3 436650 uint8 imGray 355x410 1164400 double >> max(imGray(:)) ans = 1 >> min(imGray(:)) ans = 0.0745 Roger S. Gaborski

  6. >> imSobelH = edge(imGray, 'sobel'); >> figure, imshow(imSobelH), title('Sobel'); Roger S. Gaborski

  7. >> imEdge = edge(imGray, 'canny', [ ], 3); >> figure, imshow(imEdge) Roger S. Gaborski

  8. Sobel – Canny Comparison Roger S. Gaborski

  9. Consider a set of points • We would like to find a subsets of the points that lie on straight lines • We would like to know the end points, orientation, location, join segments, etc. Roger S. Gaborski

  10. X-Y Coordinate System • Consider x-y coordinate system • Assume we have a straight line in the x-y coordinate system • The slope and intercept are constant parameters for a particular line y y = mix+bi or y = aix+bi mi , ai : slope of line bi : y intercept x Roger S. Gaborski

  11. The Line is a Point in Parameter Space bi (intercept) y b ai x a (slope) Spatial Domain Parameter Domain Roger S. Gaborski

  12. A Single Point in the Spatial Domain is a Line in Parameter Space y1 y b b = -ax1 + y1 Infinite number of Lines can pass through x1 y1 each with its own a,b x1 x a Spatial Domain Parameter Domain (xi , yi ) is constant, a and b are the variables Roger S. Gaborski

  13. GOAL: Given Two Points in the spatial domain use the Hough transform to find the equation of the line passing through the points y1 y2 y x2 x1 x Spatial Domain Roger S. Gaborski

  14. A Two Points in the Spatial Domain are Two Lines in Parameter Space y1 y2 b’ y b x2 x1 b = -ax2+ y2 b = -ax1 + y1 a’ x a Spatial Domain Parameter Domain a’ and b’ are the parameters of the straight line that passes through the two points in the spatial domain (xi , yi ) is constant, a and b are the variables Roger S. Gaborski

  15. Mapping from Spatial Domain to a Parameter Space • Consider a particular point (xi,yi) in the x,y plane • An infinite number of lines can pass through this point • All satisfy slope-intercept equation: yi= a xi + b for some a,b • Solve for b: b = -a xi + yi • Parameter space a-b plane yields single line for (xi,yi) Roger S. Gaborski

  16. Parameter Space • Consider a second point (xj,yj) in the x,y plane • Also has a line associated with it in parameter space • This line intersects the line associated with (xi,yi) at ( a’,b’ ) • a’ is the slope and b’ is the intercept of the line containing both (xi,yi) and (xj,yj) in the x-y space • All points on this line have lines in the parameter space that intersect at ( a’, b’ ) Roger S. Gaborski

  17. Chapter 10 Image Segmentation Roger S. Gaborski

  18. Parameter Space • (a, b) space usually referred to as (, ) space • Each line plots to a point in (, ) parameter space, but must satisfy: •  = x1cos + y1 sin  where x1 y1 are constants (, ) ( rho, theta) Roger S. Gaborski

  19. Parameter Space • Locus of such lines in x,y space is a sinusoid in parameter space • Any point in x,y plane corresponds to a sinusoid curve in ,  space Roger S. Gaborski

  20. Chapter 10 Image Segmentation Roger S. Gaborski

  21. ( ,  ) Space • Define  and  • For each point from from edge detector • Plug in values for x and y:  = x cos + ysin • For each value of  in parameter space, solve for  • For each   pair (from previous step) record in quantized space (this is a hit) • After evaluation of all edge points, number of hits in each block corresponds to the number of pixels on the line as defined by the values   Roger S. Gaborski

  22. Hough Transform – General Idea (one point) min max min  Sample of two lines  (x1y1)  max Two of an infinite number of lines through point (x1,y1)   Space Roger S. Gaborski

  23. Hough Transform – General Idea (three points) min max min   Line through three Points (count=3)  (x1y1)   max Two of an infinite number of lines through point (x1,y1)   Space Roger S. Gaborski

  24. YouTube Videos • EGGN 512 - Lecture 13-1 Hough • http://www.youtube.com/watch?v=uDB2qGqnQ1g • EGGN 512 - Lecture 13-2 Hough • http://www.youtube.com/watch?v=o-n7NoLArcs&feature=relmfu • EGGN 512 - Lecture 13-3 Hough • http://www.youtube.com/watch?v=GZ61BRH9KFE&feature=relmfu Roger S. Gaborski

  25. Simulated Vertical Edge %'Edge' image for Hough Transform imH = zeros(100); imH(:, 80) = 1; figure, imshow(imH, [ ],'InitialMagnification', 'fit' ),title('Edge Map') [H,theta,rho] = hough(imH); figure, imshow(H,[],'XData',theta,'YData',rho,'InitialMagnification','fit'); %figure, imshow(theta,rho,H, [ ], 'notruesize'),title('Vertical Line') axis on, axis normal; xlabel('\theta'), ylabel('\rho'), colormap(gray), colorbar Roger S. Gaborski

  26. Edge image and Hough results rho = 80 units Roger S. Gaborski

  27. Simulated Horizontal Edge >> %Horizontal line imH = imH'; figure, imshow(imH, [ ],'InitialMagnification', 'fit' ),title('Edge Map') [H,theta,rho] = hough(imH); figure, imshow(H,[],'XData',theta,'YData',rho,'InitialMagnification','fit'); axis on, axis normal; xlabel('\theta'), ylabel('\rho'), colormap(gray), colorbar Roger S. Gaborski

  28. Roger S. Gaborski

  29. >> %Line at -45 Degrees imH45 = zeros(100); for a=1:100 imH45(a,a) = 1; end figure, imshow(imH45, [ ],'InitialMagnification', 'fit' ),title('Edge Map, -45 degrees') [H,theta,rho] = hough(imH45); figure, imshow(H,[],'XData',theta,'YData',rho,'InitialMagnification','fit'); axis on, axis normal; xlabel('\theta'), ylabel('\rho'), colormap(gray), colorbar Roger S. Gaborski

  30. >> %Line at 45 Degrees imH45_2 = zeros(100); for a=1:100 imH45_2(a,101-a) = 1; end figure, imshow(imH45_2, [ ],'InitialMagnification', 'fit' ),title('Edge Map, 45 degrees') [H,theta,rho] = hough(imH45_2); figure, imshow(H,[],'XData',theta,'YData',rho,'InitialMagnification','fit'); axis on, axis normal; xlabel('\theta'), ylabel('\rho'), colormap(gray), colorbar Roger S. Gaborski

  31. Roger S. Gaborski

  32. Simple square %Simple square im = zeros(100); im(20:80,20)=1; im(20:80,80)=1; im(20, 20:80)=1; im(80, 20:80)=1; figure, imshow(im, [ ],'InitialMagnification', 'fit' ),title('Box') [H,T,R] = hough(im); imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axis on, axis normal Roger S. Gaborski

  33. Roger S. Gaborski

  34. Peak Detection • Need to find peaks in Hough Transform • Due to quantization, pixels not in perfectly straight line, peaks lie in more than one cell • Approach: • Find Hough cell containing maximum number of entries and record location • Set immediate neighbors to zero • Look for next maximum peak, • etc Roger S. Gaborski

  35. Find Peaks %Simple square im = zeros(100); im(20:80,20)=1; im(20:80,80)=1; im(20, 20:80)=1; im(80, 20:80)=1; figure, imshow(im, [ ],'InitialMagnification', 'fit' ),title('Box') [H,T,R] = hough(im); P = houghpeaks(H,4); imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axis on, axis normal, hold on; plot(T(P(:,2)),R(P(:,1)),'s','color','white'); Roger S. Gaborski

  36. Peak Roger S. Gaborski

  37. % Find lines and plot them lines = houghlines(im,T,R,P,'FillGap',5,'MinLength',7); figure, imshow(im), hold on max_len = 0; for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % plot beginnings and ends of lines plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); % determine the endpoints of the longest line segment len = norm(lines(k).point1 - lines(k).point2); if ( len > max_len) max_len = len; xy_long = xy; end end % highlight the longest line segment plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan'); Roger S. Gaborski

  38. Roger S. Gaborski

  39. >> [H,T,R] = hough(imEdge); P = houghpeaks(H,4); imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axis on, axis normal, hold on; plot(T(P(:,2)),R(P(:,1)),'s','color','white'); % Find lines and plot them lines = houghlines(imEdge,T,R,P,'FillGap',5,'MinLength',7); figure, imshow(imEdge), hold on max_len = 0; for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % plot beginnings and ends of lines plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); % determine the endpoints of the longest line segment len = norm(lines(k).point1 - lines(k).point2); if ( len > max_len) max_len = len; xy_long = xy; end end % highlight the longest line segment plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan'); Roger S. Gaborski

  40. Canny Edge Image Roger S. Gaborski

  41. P=8, Gap Fill = 5 P=12 Gap Fill = 5 P = 8, Gap Fill = 25 P = 12, Gap Fill = 25 Roger S. Gaborski

  42. Chapter 10 Image Segmentation Roger S. Gaborski

  43. Pineapple and Orange Examples Roger S. Gaborski

  44. Roger S. Gaborski

  45. Histograms • A histogram is just a method for summarizing data, for example, gray level pixel values • Can also summarize edge data Roger S. Gaborski

  46. GRAY PIXEL VALUE HISTOGRAM >> imP1=double(imread('Pineapple1.jpg’)); >> figure, imshow(imP1) >> %Convert to Gray scale >> imP1gray = rgb2gray(imP1); >> figure, imshow(imP1gray) >>%Minimum and Maximum code values >> MAXcode = max(imP1gray(:)) MAXcode = 214 >> MINcode = min(imP1gray(:)) MINcode = 1 >>%Histogram of Gray Level Pixel Values Roger S. Gaborski

  47. Edges >> imP1=double(imread('Pineapple1.jpg')); >> figure, imshow(imP1) >> %Convert to Gray scale >> imP1gray = rgb2gray(imP1); >> figure, imshow(imP1gray) >> figure, hist(imP1gray(:)) >> >> w=[1 1 1;0 0 0; -1 -1 -1] w = 1 1 1 0 0 0 -1 -1 -1 >> imP1edge = imfilter(imP1gray,w); >> figure, imshow(imP1edge, [ ]) Roger S. Gaborski

  48. >> figure, imshow(imP1edge,[ ]) >>figure, imshow(abs(imP1edge),[ ]) Roger S. Gaborski

  49. Edge Histogram Edge histogram Absolute Edge Histogram Roger S. Gaborski

  50. Edge Image Thresholds >> figure, imshow(abs(imP1edge)>1.0),title('Threshold 1.0') Roger S. Gaborski

More Related