Hough变换问题

我用这种方式在C#中实现了Hough Transform:

List forme = new List(); forme.Add(new Point(260, 307)); forme.Add(new Point(268, 302)); forme.Add(new Point(273, 299)); forme.Add(new Point(279, 295)); forme.Add(new Point(285, 292)); forme.Add(new Point(291, 288)); forme.Add(new Point(298, 283)); forme.Add(new Point(305, 280)); forme.Add(new Point(312, 277)); forme.Add(new Point(319, 274)); forme.Add(new Point(325, 271)); forme.Add(new Point(333, 268)); forme.Add(new Point(340, 264)); forme.Add(new Point(350, 259)); forme.Add(new Point(356, 256)); int width = Math.Abs(forme[0].X - forme[forme.Count - 1].X); int height = Math.Abs(forme[0].Y - forme[forme.Count - 1].Y); int halfWidth = width / 2; int halfHeigh = height / 2; double pmax = Math.Sqrt((width * width) + (height * height)); double tmax = Math.PI * 2; // step sizes double dp = pmax / (double)width; double dt = tmax / (double)height; int[,] A = new int[width , height]; // accumulator array foreach (Point p in forme) { for (int Theta = 1; Theta = 0 && k < width) A[k, Theta]++; } } int goodTheta = 0; int goodRadius = 0; // maxMapIntensity c'est l'intensité maximale int maxMapIntensity = 0; for (int radius = 0; radius < width; radius++) { for (int theta = 0; theta  maxMapIntensity) { maxMapIntensity = A[radius, theta]; goodRadius = radius; goodTheta = theta; } } } 

所以,根据我的理解,我现在已经找到了所有曲线的交点的θ和半径。 那么我怎样才能找到实线?

有些人声称我需要找到斜率和一个点,但我现在还不清楚该怎么做。

谢谢你的帮助,乔纳森

“maxMapIntensity”代码是在霍夫输出中找到单个最亮点的坐标,因此这只会找到一条线(你用你的一组点定义)。 霍夫输出中的单个亮点对应于原始图像中的单个线。 你找到了一条所有这些要点的线。 goodRadiusgoodTheta是您正在寻找的变量 – 该行的参数。

要计算原始线,首先要计算从原点开始的切线(从原点开始,形成goodTheta的角度,然后远离原点goodRadius )。 然后在那一点上,感兴趣的线(你找到的那条线)垂直于你刚刚创建的原点的线。 在此图中, goodRadius写为ρgoodTheta写为θ

r theta的解释http://sofzh.miximages.com/c%23/image002.jpg