我正在使用EmguCV(OpenCV的.NET版本)开展项目,我正在使用概率Hough变换来查找行。
所以起初我正在执行canny-operator。然后进行霍夫变换。
Gray cannyThreshold = new Gray(50);
Gray cannyThresholdLinking = new Gray(300);
Image<Gray, Byte> cannyEdges = gray.Canny(cannyThreshold, cannyThresholdLinking);
LineSegment2D[] linesFound_temporary = cannyEdges.HoughLines
(
cannyThreshold, // 1. Parameter
cannyThresholdLinking, // 2. Parameter
1, // 3. Parameter
Math.PI / 360.0, // 4. Parameter
gray.Width * 0.2, // 5. Parameter
gray.Width * 0.4, // 6. Parameter
gray.Width * 0.1 // 7. Parameter
)[0];
后来我意识到HoughLines-Method已经集成了canny边缘检测。
然而,当我使用额外的canny检测而不是将其遗漏时,我的线检测结果更好,更稳定。
任何人都可以向我解释,为什么会这样?或者有没有人经历过同样的事情?
答案 0 :(得分:0)
我在做一个项目时经历了同样的事情。我认为它取决于赋予两个函数的参数。如果第一个canny删除太多信息而没有删除行,则第二个函数会很糟糕。如果你做了“第一次通过”,删除了大部分信息但留下了非常明显的线条,那么霍夫线几乎没什么可做的。但我发现通过在第一时间调整Hough Line的参数可以获得几乎相同的结果。
希望它有所帮助!