Edge detection

Task

Apply different types of edge detection methods to different types of images.

Goals

To evaluate line detection accuracy using Hough transform.

Images and Edges

Images

Edge detection

Matlab script

%Load Image

I = imread('imageName.jpg');

%Convert image to grayscal

B=rgb2gray(I);

%Find edges using the Canny method.
BWC = edge(B,'Canny');

%Find edges using the Sobel method.
BWP = edge(B,'Sobel');

%Display both results side-by-side.
imshowpair(BWC,BWP,'montage

Results

Summary

In photos with many objects - low contrast, the best methods for showing the edges of objects are canny. In higher contrast photos, the edge of objects is best detected by the sobel method.

Lines

Script

Load Images


I = imread('imageName.jpg');
B=rgb2gray(I);
BW = edge(B,'method');

[H,theta,rho] = hough(BW);

P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));

lines = houghlines(BW,theta,rho,P,'FillGap',5,'MinLength',7);

figure, imshow(I), 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','red');

Results

Sobel

Roberts

log

Summary

Categories:

Updated: