当前位置:   article > 正文

详解拉东(Radon)变换原理、直线检测、代码实现_radon变换

radon变换

一、Radon变换

参考:Radon 变换

        Radon变换是使用一组参数(θ,ρ)来表示一条直线,当选定某个方向时,那么一副图像可以被变换成ρ的函数的一条直线,具体推导可以参考上述链接

二、直线检测

        基于Radon变换的直线检测的目的就是检测根据角度变化时出现的“局部峰值”,即可以确定直线的方向,同时,峰值大小能够确定直线上点的个数,如下图的局部极大值,则有可能是一条直线的位置,当然进行检测之前需要获得图像中的轮廓,而不是直接对图像进行变换

            

三、代码实现

        例如matlab官方的图像进行检测:

            

        进行边缘检测:

            

        然后选择不同的角度与距离,得到了一个二维数组:

            

        其中较亮的点即为局部极大值,也就是第二部分所说的有可能是直线所在的位置

            

代码:

  1. I = fitsread('solarspectra.fts');
  2. I = rescale(I);
  3. figure
  4. imshow(I)
  5. title('Original Image')
  6. BW = edge(I);
  7. figure
  8. imshow(BW)
  9. title('Edges of Original Image')
  10. theta = 0:179;
  11. [R,xp] = radon(BW,theta);
  12. figure
  13. imagesc(theta, xp, R); colormap(hot);
  14. xlabel('\theta (degrees)');
  15. ylabel('x^{\prime} (pixels from center)');
  16. title('R_{\theta} (x^{\prime})');
  17. colorbar

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/90717?site
推荐阅读