You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
I discovered that a lot of the time in the HoughLineTransformation is spent in
Math.Round to calculate the radius variable as an integer. In my use case the
patch below doubles overall performance of the HoughLineTransformation.
Robin
Index: HoughLineTransformation.cs
===================================================================
--- HoughLineTransformation.cs (revision 1729)
+++ HoughLineTransformation.cs (working copy)
@@ -500,7 +500,8 @@
// for each Theta value
for ( int theta = 0; theta < houghHeight; theta++ )
{
- int radius = (int) Math.Round( cosMap[theta] *
x - sinMap[theta] * y ) + halfHoughWidth;
+ double dRadius = (cosMap[theta] * x -
sinMap[theta] * y);
+ int radius = Round(dRadius) + halfHoughWidth;
if ( ( radius < 0 ) || ( radius >= houghWidth ) )
continue;
@@ -700,5 +701,13 @@
lines.Sort( );
}
+
+ // Faster simple alternative to Math.Round for finding nearest
integer.
+ // May give different results for values very close to integer+0.5 or
very large values
+ // Neither of which should be important in this context
+ private int Round(double value)
+ {
+ return (int)(value + (value > 0 ? 0.5 : -0.5));
+ }
}
}
Original issue reported on code.google.com by robin.w....@gmail.com on 14 Mar 2014 at 9:06
The text was updated successfully, but these errors were encountered:
Original issue reported on code.google.com by
robin.w....@gmail.com
on 14 Mar 2014 at 9:06The text was updated successfully, but these errors were encountered: