我有以下类型的图像
我希望我用黄色环绕的小线应该组合成一条线。即如果两条线之间的距离小于某个阈值,它们应该连接起来。
我尝试使用emgucv的Dilate命令,但不需要的行也变粗。
提前完成: - )
答案 0 :(得分:4)
你的Houghline功能是什么我提供了一种方法。通过更改这些设置,您可以连接线,仅显示具有最强特征的线。但是,这种方法可能会很困难,因为您有一个非常嘈杂的图像,您可能希望在尝试查找这些线之前先查看更好的边缘检测方法。
private Image<Bgr, Byte> apply_Hough(Image<Bgr, Byte> Input_Image)
{
LineSegment2D[] lines = Input_Image.HoughLinesBinary(
1, //Distance resolution in pixel-related units
Math.PI / 45.0, //Angle resolution measured in radians.
50, //threshold
100, //min Line width
1 //gap between lines
)[0]; //Get the lines from the first channel
Image<Bgr, Byte> lineImage = img.Copy();
foreach (LineSegment2D line in lines)
Input_Image.Draw(line, new Bgr(Color.Red), 2);
return Input_Image;
}
霍夫线使用非常先进的投票方法,其中只显示最强的线条并且应该相应地列出它们。因此,尝试使用for循环替换foreach循环,只显示前6个最强的行,如此。
private Image<Bgr, Byte> apply_Hough(Image<Bgr, Byte> Input_Image)
{
LineSegment2D[] lines = Input_Image.HoughLinesBinary(
1, //Distance resolution in pixel-related units
Math.PI / 90.0, //Angle resolution measured in radians.
50, //threshold
100, //min Line width
1 //gap between lines
)[0]; //Get the lines from the first channel
Image<Bgr, Byte> lineImage = img.Copy();
for (int i = 0; i <= 6; i++)
{
Input_Image.Draw(lines[i], new Bgr(Color.Red), 2);
}
return Input_Image;
}
希望这有帮助,
干杯,
克里斯