Represents line of Hough Line transformation using polar coordinates. See Wikipedia for information on how to convert polar coordinates to Cartesian coordinates.
Sample code to draw detected Hough lines:
HoughLineTransformation lineTransform = new HoughLineTransformation( ); // apply Hough line transofrm lineTransform.ProcessImage( sourceImage ); Bitmap houghLineImage = lineTransform.ToBitmap( ); // get lines using relative intensity HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity( 0.5 ); foreach ( HoughLine line in lines ) { // get line's radius and theta values int r = line.Radius; double t = line.Theta; // check if line is in lower part of the image if ( r < 0 ) { t += 180; r = -r; } // convert degrees to radians t = ( t / 180 ) * Math.PI; // get image centers (all coordinate are measured relative // to center) int w2 = image.Width /2; int h2 = image.Height / 2; double x0 = 0, x1 = 0, y0 = 0, y1 = 0; if ( line.Theta != 0 ) { // none-vertical line x0 = -w2; // most left point x1 = w2; // most right point // calculate corresponding y values y0 = ( -Math.Cos( t ) * x0 + r ) / Math.Sin( t ); y1 = ( -Math.Cos( t ) * x1 + r ) / Math.Sin( t ); } else { // vertical line x0 = line.Radius; x1 = line.Radius; y0 = h2; y1 = -h2; } // draw line on the image Drawing.Line( sourceData, new IntPoint( (int) x0 + w2, h2 - (int) y0 ), new IntPoint( (int) x1 + w2, h2 - (int) y1 ), Color.Red ); }
To clarify meaning of Radius and Theta values of detected Hough lines, let's take a look at the below sample image and corresponding values of radius and theta for the lines on the image:
Detected radius and theta values (color in corresponding colors):