b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

计算机的性能分类 Python] OpenCV 中的图像处理 部分 IV (六(4)

电脑杂谈  发布时间:2018-02-11 00:30:37  来源:网络整理

Hough Transform Demo

这就是霍夫直线变换工作的方式。很简单,也许你自己就可以使用 Numpy搞定它。下图显示了一个累加器。其中最亮的两个点代表了图像中两条直线的参数。(Image courtesy: Wikipedia)。

Hough Transform accumulator

25.1 OpenCV 中的霍夫变换

上面介绍的整个过程在 OpenCV 中都被封装进了一个函数:cv2.HoughLines()。

返回值就是(ρ,θ)。ρ 的单位是像素,θ 的单位是弧度。这个函数的第一个参数是一个二值化图像,所以在进行霍夫变换之前要首先进行二值化,或者进行Canny 边缘检测。第二和第三个值分别代表 ρ 和 θ 的精确度。第四个参数是阈值,只有累加其中的值高于阈值时才被认为是一条直线,也可以把它看成能检测到的直线的最短长度(以像素点为单位)。

结果如下:

Hough Transform Line Detection

25.2 Probabilistic Hough Transform

从上边的过程我们可以发字塔呢?)一个点集进行计算,对于直线检测来说这已经足够了。但是使用这种变换我们必须要降低阈值(总的点数都少了,阈值肯定也要小呀!)。

下图是对两种方法的对比。(Image Courtesy : Franck Bettinger’s homepage)

Hough Transform and Probabilistic Hough Transform

OpenCV 中使用的 Matas, J. ,Galambos, C. 和 Kittler, J.V. 提出的Progressive Probabilistic Hough Transform。这个函数是 cv2.HoughLinesP()。

它有两个参数。

?? minLineLength - 线的最短长度。比这个短的线都会被忽略。

?? MaxLineGap - 两条线段之间的最大间隔,如果小于此值,这两条直线就被看成是一条直线。

更加给力的是,这个函数的返回值就是直线的起点和终点。而在前面的例子中,我们只得到了直线的参数,而且你必须要找到所有的直线。而在这里一切都很直接很简单。

结果如下:

Probabilistic Hough Transform

目标

?? 学习使用霍夫变换在图像中找圆形(环)。

?? 学习函数:cv2.HoughCircles()。

原理

圆形的数学表达式为 (x ?? x center ) 2 +(y ?? y center ) 2 = r 2 ,其中(x center ,y center )为圆心的坐标,r 为圆的直径。从这个等式中我们可以看出:一个圆环需要 3个参数来确定。所以进行圆环霍夫变换的累加器必须是 3 维的,这样的话效率就会很低。所以 OpenCV 用来一个比较巧妙的办法,霍夫梯度法,它可以使用边界的梯度信息。

我们要使用的函数为 cv2.HoughCircles()。文档中对它的参数有详细的解释。这里我们就直接看代码吧。

结果如下:

Hough Circles

更多资源

练习

目标

本节我们将要学习

?? 使用分水岭算法基于掩模的图像分割

?? 函数:cv2.watershed()

原理

任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝知道所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。你可以通过访问网站CMM webpage on watershed来加深自己的理解。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70909-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...