我正在尝试在已经预处理的图像中实现霍夫变换以进行线检测。所以我的输入图像是黑白边缘图像,0 - 背景和 255 - 前景。我不想使用 OpenCV 内置的 HoughLines 库。我实际上坚持创建累加器并正确增加其值。我无法弄清楚我哪里出错了,所以这是我的代码块:
int diagonal = sqrt(height * height + width * width);
IplImage *acc = cvCreateImage (cvSize(180, 2 * diagonal),IPL_DEPTH_8U, 1);
unsigned char* accData = (unsigned char *)acc->imageData;
for (int i=0; i<height; i++)
{
for (int j=0; j<step; j++)
{
if (data[i*step + j] > 200)
{
for (int theta=0; theta<180; theta++)
{
int p = j * cos(theta) + i * sin(theta);
if (p > 0)
accData[theta*180 + p] += 1;
}
}
}
}
我在 acc 中得到的输出图像不是它应该的样子。我没有得到任何正弦曲线,而是到处都是白斑。任何人都可以提供任何关于我哪里出错的反馈吗?