Hough线变换

原创 2015年07月07日 15:00:54

一. hough变换与Canny边缘检测

1.hough线检测有两个方法,

  • Image(TColor,TDepth).HoughLines : 在进行Canny边缘检测之后应用Hough变换以检测线
  • Image(TColor,TDepth).HoughLinesBianry:对二进制图像进行hough变换(例如对Canny边缘检测结果进hough变换)

    1. hough变换构造函数:
public LineSgement2D[][] HoughLinesBianry(
    double rhoResolution,    //线检测中线最小距离单位像素,一般取1
    double thetaResolution,  //线检测中的线的倾斜角度 单位弧度
    int threshold,           //线最小像素数  超过该像素接受
    double minLineWidth,     //线宽最小值  以下两个是线与线之间最小width and gap 单位 pixel
    double gapBetweenLines   //线间距
)   
  1. hough 变换方法:
Image< Bgr,Byte> img1 = new Image< Bgr,Byte>(new Bitmap(pictureBox*.Image | ofd.FileName);
LineSegment2D[] lines = img1.HoughLinesBinary(1,Math.PI/45.0,20,30,10)[0];
Image< Bgr,Byte> ImageLines = new Image< Bgr,Byte>(CannyGray.width,Canny,Height);
foreach(LineSegment2D line in lines){
    ImageLines.Draw(line,new Bgr(Color.DeepSkyBlue),5);
}
pictureBox*.Image = imageLines.ToBitmap();
}

}


  1. hough 圆检测
    • 构造函数:

public CircleF[][] HoughCircles( //CircleF radius and the location of the circle
TColor cannyThreshold, //
TColor accumulatorThreshold, //圆最小像素
double dp, //>=1 分辨率参数,大于1时分辨率大于1
double minDist, //防止重复, 圆之间最小距离
int minRadius, // 最小圆
int maxRadius //最大圆
)
  • hough圆检测实例:(hough圆检测之前若是有边缘检测效果会下降,原因回头注意查看,检测第二个参数跟像素之间的色差好像有关,回头查看)(!圆检测参数注意查看)
  • OpenFileDialog ofd1 = new OpenFileDialog();
    if (ofd1.ShowDialog() == DialogResult.OK)
    {
        pictureBox2.Image = (new Image<Bgr, Byte>(ofd1.FileName)).ToBitmap() ;
        //Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(new Bitmap(pictureBox1.Image));
        Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(ofd1.FileName);
        //convert the img1 to grayscale and the filter out the noise
        Image<Gray, Byte> img2 = img1.Convert<Gray, Byte>().PyrDown().PyrUp();
        CircleF[] HoughCircles = img2.HoughCircles(
            new Gray(180),
            new Gray(120),
            2.0,
            50.0,
            20,
            100
         )[0];
        //draw circles
        Image<Bgr, Byte> imageCircles = img1;
        foreach (CircleF circle in HoughCircles)
        {
            imageCircles.Draw(circle, new Bgr(Color.Yellow), 5);
        }
        pictureBox1.Image = imageCircles.ToBitmap();

    Hough变换 数学原理解析

    (I)直线篇 1 直线是如何表示的? 对于平面中的一条直线,在笛卡尔坐标系中,常见的有点斜式,两点式两种表示方法。然而在hough变换中,考虑的是另外一种表示方式:使用(r,theta)来表示...
    • lin_W_D
    • lin_W_D
    • 2015年06月18日 16:25
    • 1209

    Hough变换——直线检测(投票方法实现)

    Hough变换介绍 Hough变换介绍:    简单来说,就是一个叫做Hough的人提出的,主要是将空间坐标转换到参数空间。比如一条直线:y = kx + b吧,我们看到这个后就会想到用x,y两个轴,...
    • Zhangwellyear
    • Zhangwellyear
    • 2016年06月23日 23:39
    • 651

    HOUGH变换检测线段

    利用 Hough 变换在二值图像中找到直线 一.函数介绍 CvSeq* cvHoughLines2( CvArr* image, void* line_storage, int method,doub...
    • dengshuaifei
    • dengshuaifei
    • 2015年12月17日 17:07
    • 1411

    直线hough变换原理及实现

    看了一天的hough变换,总算是有些眉目。一开始总是纠结于hough变换把图像中的点映射到另一个参考系中的直线中,是怎么实现的。即我怎么知道图像中的点事映射到哪些直线中的。。。。。后面终于明白,其做法...
    • autocyz
    • autocyz
    • 2015年01月12日 20:36
    • 4490

    Hough变换提取直线

    1.首先我们来说明Hough变换的定义:     如下图,直角坐标系中有一条直线l,原点到该直线的垂直距离为ρ,垂线与x轴的夹角为θ,则这条直线是唯一的,且该直线在极坐标系中的方程为: ρ=xcosθ...
    • yuandm819
    • yuandm819
    • 2017年04月05日 16:59
    • 644

    hough变换拟合直线

    在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜 率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像...
    • sinat_27504423
    • sinat_27504423
    • 2015年08月03日 23:04
    • 1086

    opencv中标准Hough变换检测出的直线参数

    在图像处理中用到了opencv的函数检测图像中的直线,当时对于获取的直线参数有一点点误解。     首先,简单的介绍下Opencv中的hough变换:     Opencv支持两种不同形式...
    • u013500944
    • u013500944
    • 2014年02月15日 23:37
    • 1307

    基于hough变换和卡尔曼滤波的车道线检测算法

    1   算法介绍 1.1 霍夫变换(HoughTransform) 霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个...
    • clipp_Huang
    • clipp_Huang
    • 2017年02月24日 09:20
    • 1601

    利用Hough变换实现直线检测的代码

    http://www.cnblogs.com/fly-height/articles/2095240.html vc图像处理程序中经常要用到直线检测,常用的直线检测方法是Hough变换。   ...
    • xpplearnc
    • xpplearnc
    • 2014年01月16日 09:54
    • 1086

    OpenCV2马拉松第23圈——圆检测与通用Hough变换

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27220445 看本文前,建议先去看Ope...
    • abcd1992719g
    • abcd1992719g
    • 2014年05月27日 23:44
    • 3480
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:Hough线变换
    举报原因:
    原因补充:

    (最多只允许输入30个字)