C# 求直线的Hough变换

C# 求直线的Hough变换,c#,C#,我需要写一个Hough变换来找到直线。我提前将原始图像转换为单色。首先,我遍历整个图像并构建一个Hough空间 public void Hough(Bitmap bitmap, int[,] Hough, int maxLength) { for (int x = 0; x < bitmap.Width; x++) { for (int y = 0; y < bitmap.Height; y++)

我需要写一个Hough变换来找到直线。我提前将原始图像转换为单色。首先,我遍历整个图像并构建一个Hough空间

public void Hough(Bitmap bitmap, int[,] Hough, int maxLength)
    {
        for (int x = 0; x < bitmap.Width; x++)
        {
            for (int y = 0; y < bitmap.Height; y++)
            {
                Color color = bitmap.GetPixel(x, y);
                if (color == Color.FromArgb(255, 0, 0, 0))
                {
                    for (int tetha = 0; tetha < 360; tetha++)
                    {
                        int ro = (int)(x * Math.Cos(tetha) + y * Math.Sin(tetha));
                        Hough[Math.Abs(ro), tetha]++;
                    }
                }
            }
        }
    }
public void Hough(位图,int[,]Hough,int maxLength)
{
用于(int x=0;x
接下来,我将遍历生成的二维数组,并查找数组中最大值的ro和TETA索引

 int max = int.MinValue;
        int roCount = 0; int tethaCount = 0;
        for (int i = 0; i < maxLength; i++)
        {
            for (int j = 0; j < 360; j++)
            {
                if (Hough[i, j] >= max)
                {
                    max = Hough[i, j];
                    roCount = i;
                    tethaCount = j;
                }
            }
       }
int max=int.MinValue;
int-roCount=0;int tethaCount=0;
对于(int i=0;i=max)
{
max=Hough[i,j];
roCount=i;
tethaCount=j;
}
}
}

接下来,我需要使用找到的索引查找源图像上的行。但是我该怎么做呢?我坐了5个小时,什么都不懂

这听起来不像是编程挑战。这听起来更像是一个数学问题。关于Hough变换,似乎已经有很多问题了:这个问题可能有用:这听起来不像是编程挑战。这听起来更像是一个数学问题。关于Hough变换,似乎已经存在不少问题:这个问题可能有用: