Team Gryffindor: Difference between revisions

From Cpre584
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 10: Line 10:


== Subversion ==
== Subversion ==
Use your ISU NetID as both your username and password:
You can checkout the source for our projects using the subversion repository below.  Use your ISU NetID as both your username and password:
  svn co http://svn.chaddington.com/cpre584
  svn co http://svn.chaddington.com/cpre584
=== Assignment #2 (New Algorithm) ===
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel's Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.
Compiler:
gcc -O -lm sobel.c -o sobel
./sobel
Sobel edge detection algorithm code with C (''Since the code is very long, I just show key part of algorithm''):
  * files
** mypgm.h - header file 
** sobel.c - sobel algorithm
** Lena.pgm - image files
Sobel edge detection algorithm code with C
void sobel_filtering( ) {
    /* Spatial filtering of image data */
    /* Sobel filter (horizontal differentiation */
    /* Input: image1[y][x] ---- Outout: image2[y][x] */
  /* Definition of Sobel filter in horizontal direction */
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};
  double pixel_value_x, pixel_value_y, pixel_value;
  double min, max;
  int x, y, i, j;  /* Loop variable */
  /* Initialization of image2[y][x] */
  x_size2 = x_size1;
  y_size2 = y_size1;
  for (y = 0; y < y_size2; y++) {
    for (x = 0; x < x_size2; x++){
      image2[y][x] = 0;
    }
  }
  /* Generation of image2 after linear transformtion */
  for (y = 1; y < y_size1 - 1; y++) {
    for (x = 1; x < x_size1 - 1; x++) {
      pixel_value_x = 0.0;
      pixel_value_y = 0.0;
        for (j = -1; j <= 1; j++) {
        for (i = -1; i <= 1; i++) {
              pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution
              pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution }     
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware 
      if (pixel_value >= 255)pixel_value=255;
      if (pixel_value <= 0)pixel_value=0;   
      image2[y][x] = (unsigned char)pixel_value;
    }
    }
  }
}
main( )
{
  load_image_data( );  /* Input of image1 */
  sobel_filtering( );  /* Sobel filter is applied to image1 */
  save_image_data( );  /* Output of image2 */
  return 0;
}
We use color lena with 8bit pgm file
[[Image:lena_old.jpg|200px|thumb|left|alt text]]
[[Image:Lena_new.jpg|200px|thumb|left|alt text]]
== Profiling Sobel edge detection algorithm  ==
This command will generate a test file:
gcc -lm -pg sobel.c
./a.out
gprof a.out > test
 
test file:
%      cumulative  self            self    total         
   
  100.27    0.04    0.04        1    40.11    40.11  sobel_filtering
  0.00      0.04    0.00        1    0.00    0.00  load_image_data
  0.00      0.04    0.00        1    0.00    0.00  save_image_data


== Updating the UserApp for Sobel ==
== Updating the UserApp for Sobel ==
[[Team Gryffindor - Sobel Source Code]]
[[Team Gryffindor - Sobel Source Code]]

Latest revision as of 17:45, 27 February 2012

Team Gryffindor
Error creating thumbnail: File missing
Gryffindor Team Logo
Team Members
Chad Nelson - cnel711
Mihir Awatramani - mihir
Mengduo Ma - marinama
Kuan-Hsing Ho - pm429015

Subversion

You can checkout the source for our projects using the subversion repository below. Use your ISU NetID as both your username and password:

svn co http://svn.chaddington.com/cpre584

Updating the UserApp for Sobel

Team Gryffindor - Sobel Source Code