手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

最原始的检测直线的算法实现——Hough变换

时间:2024-10-12 03:59:21

1、给出一幅图片。

最原始的检测直线的算法实现——Hough变换

2、检测图片边界:img1 = EdgeDetect[img, 0.5]

最原始的检测直线的算法实现——Hough变换

3、为了节省计算时间,需要把图片缩小:img2 = ImageResize[img1, 200]

最原始的检测直线的算法实现——Hough变换

4、提取图片数据,下图是图片数据的矩阵形式:data = ImageData[img2];data // MatrixForm;

最原始的检测直线的算法实现——Hough变换

5、把非零像素的像素坐标提取出来:data0 = Drop[ Flatten[Table[ If[data[[m, n]] > 0, {m, n}, 0], {m, 1, 200, 1}, {n, 1, 200, 1}],1] // Union, 1];data0 // Length

最原始的检测直线的算法实现——Hough变换

6、对每一个非零像素进行Hough变换:Table[Table[ If[(data0[[n]].{Cos[x], Sin[x]}) > 0, {data0[[n]].{Cos[x], Sin[x]} // N, x}, 0], {x, 0, Pi, Pi/180}], {n, 1, data0 // Length, 1}]得到407612个数据组。

最原始的检测直线的算法实现——Hough变换

7、下面要对每一个数据组进行统计,统计它们各自在a里面出现的次数:b = Drop[a // Union, 1];d = a // Flatten;dd=Table[{b[[n]], SequenceCount[d, b[[n]]]}, {n, 1, b // Length, 1}]这一步实在是太耗费时间了,因此说,这个原始的算法计算量太大,根本不能用来检测直线;尤其是要实时检测的时候,根本不可能允许用长达数小时的时间,去检测一幅图片。本次试验就此暂停,待找到快速算法,再继续进行。

最原始的检测直线的算法实现——Hough变换
© 手抄报圈