最原始的检测直线的算法实现——Hough变换
1、给出一幅图片。
2、检测图片边界:img1 = EdgeDetect[img, 0.5]
3、为了节省计算时间,需要把图片缩小:img2 = ImageResize[img1, 200]
4、提取图片数据,下图是图片数据的矩阵形式:data = ImageData[img2];data // MatrixForm;
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
6、对每一个非零像素进行Hough变换:Table[Ta水瑞侮瑜ble[ 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个数据组。
7、下面要对每一个数据组进行蕙蝤叼翕统计,统计它们各自在a里面出现的次数:b = Drop[a // Union, 1];d = a // Flatten;dd=Table缪梨痤刻[{b[[n]], SequenceCount[d, b[[n]]]}, {n, 1, b // Length, 1}]这一步实在是太耗费时间了,因此说,这个原始的算法计算量太大,根本不能用来检测直线;尤其是要实时检测的时候,根本不可能允许用长达数小时的时间,去检测一幅图片。本次试验就此暂停,待找到快速算法,再继续进行。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:96
阅读量:85
阅读量:49
阅读量:60
阅读量:58