最近做毕设,基础是利用radon变换进行直线检测。radon变换其实是对hough变换算法的优化,具体原理可自行查阅相关资料,在此不再赘述。本文要介绍的是利用matlab自带的radon变换函数进行直线检测,难点在于得到radon变换的结果后如何提取峰值并显示在原图上,下面将进行详细介绍。
matlab中自带的radon函数使用方法如下:[R,x]=radon(F,theta);其中F为待检测的图像,需为灰度图像,theta是检测的角度范围,通常取0:179,R是radon变换的结果,是一个M*N的二维矩阵,其中M与x相等,是平行直线距离原点的距离(需结合原理理解),N是变换的角度范围,theta取0:179时,N为180。变换后可对结果进行显示。
进行radon变换后。会得到一个二维矩阵,矩阵中峰值所在表征了原图中直线的信息,如上图所示,其中的黄点表示峰值,只要检测出峰值所在的位置,就可以得到直线的位置信息。峰值检测使用函数findpeaks(),由于该函数只能对一维向量进行检测,因此需事先对radon变换结果进行处理:
J=reshape(R,M*N,1);
[PKS,LOCS]=