<< Chapter < Page Chapter >> Page >

Next we will set the out_ptr to point to the upper right quadrant of the output image and call conv3x3_image() in conv3x3_image.c . As with pre_scale_image() , the _image indicates this is only the wrapper function for the ImageLIB component, conv3x3() . As before, we must setup our input and output streams. Thistime, however, data will be read from the external memory, into internal memory for processing, and then written to theoutput image. Iterating over each row, we compute one line of data by calling the component function conv3x3() in conv3x3.c .

In conv3x3() , you will see that we perform a 3x3 block convolution, computing one line of data with the low pass filter mask. Note here that the variables IN1[i] , IN2[i] , and IN3[i] all grab only one pixel at a time. This is in contrast to the operation of pre_scale() where the variable in_ptr[i] grabbed 4 pixels at a time. Thisis because in_ptr was of type unsigned int, which implies that it points to four bytes of data at a time. IN1 , IN2 , and IN3 are all of type unsigned char, which implies they point to asingle byte of data. In block convolution, we are computing the value of one pixel by placing weights on a 3x3 block ofpixels in the input image and computing the sum. What happens when we are trying to compute the rightmost pixel in a row?The computation is now bogus. That is why the wrapper function copies the last good column of data into the tworightmost columns. You should also note that the component function ensures output pixels will lie between 0 and 255.

Back in img_proc.c , we can begin the edge detection algorithm, sobel_image() , for the lower left quadrant of the output image. This wrapper function,located in sobel_image.c , performs edge detection by utilizing the assembly written component function sobel() in sobel.asm . The wrapper function is very similar to the others you have seen andshould be straightforward to understand. Understanding the assembly file is considerably more difficult since you are notfamiliar with the assembly language for the c6711 DSP. As you'll see in the assembly file, the comments are very helpfulsince an "equivalent" C program is given there.

The Sobel algorithm convolves two masks with a 3x3 block of data and sums the results to produce a single pixel of output.This algorithm approximates a 3x3 nonlinear edge enhancement operator. The brightest edges in the result represent a rapidtransition (well-defined features), and darker edges represent smoother transitions (blurred or blended features).

Using the idk environment

This section provides a hands-on introduction to the IDK environment that will prepare you for the lab exercise.First, connect the power supply to the IDK module. Two green lights on the IDK board should be illuminated when the poweris connected properly.

You will need to create a directory img_proc for this project in your home directory. Enter this newdirectory, and then copy the following files as follows (again, be sure you're in the directory img_proc when you do this):

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 320 - spring 2003. OpenStax CNX. Jan 22, 2004 Download for free at http://cnx.org/content/col10096/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?

Ask