Introduction to Artificial Intelligence
Worksheet #9
Image Processing and Edge Detection

  1. Download the image file: fig1.pgm. (View HTML version)
    Copy the Lisp starter file: edgeDetect.lsp.

    Use xv to view fig1.pgm. You should see a picture of a camera tripod.

  2. Perform the following edge detection routines:
    A. Horizontal differencing:
            Image2[i,j] = Image[i+1,j+1] - Image[i,j]
            Set the pixels in the last column equal to 0
       
    B. Vertical differencing:
            Image2[i,j] = abs(Image[i+1,j] - Image[i,j])
            Set the pixels in the last row equal to 0
           
    C. Robert's cross with sqrt:
            Image2[i,j] = sqrt (sqr (image1[i,j] - image1[i+1, j+1]) +
                                sqr (image1[i,j+1] - image1[i+1, j]))
    			   
       
    Use (floor x) to truncate the result
    Also set the pixels in the last row and last column to 0.

    Note - Here are two variations on the Robert's cross pattern:

    Variation 1: Robert's cross using absolute value:
            Image2[i,j] = (abs (image1[i,j] - image1[i+1, j+1])) +
                          (abs (image1[i,j+1] - image1[i+1, j]))        
        
    Variation 2: A slightly different version of the cross pattern:
    	Image2[i,j] = abs(image1[i,j-1] - image1[i, col+1]) +
                          abs(image1[i-1, j] - image1[i+1, j])
    	
    Set the first and last rows and cols to 0.

    D. Sobel operator:
    For this pattern around pixel e:
             a  b  c
             d  e  f
             g  h  i
    
            dx = c + 2f + i - a - 2d - g
            dy = a + 2b + c - g - 2h - i
            
            Image[i,j] = sqrt (sqr(dx) + sqr(dy))
        
    Use (floor x) to truncate the sqrt.
    If the value is > 255, reset it to 255 so that 255 is the max value
    Set the first and last rows and cols to 0

  3. Save each of the previous edge detected images under different file names.

    Compare the strength of each edge detection algorithm.