C# 求直线的Hough变换
我需要写一个Hough变换来找到直线。我提前将原始图像转换为单色。首先,我遍历整个图像并构建一个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++)
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变换,似乎已经存在不少问题:这个问题可能有用: