转自:https://blog.csdn.net/fengyhack/article/details/41873119

Radon变换和Hough变换类似,最初是用于检测图像中的直线(例如笔直的街道边沿、房屋的边沿、

笔直的电线等)。

关于Hough变换,可以参考OpenCV中的代码和示例(其实除了Hough Lines还有Hough Circles等等变种),

此处不再赘述。

关于Radon变换,可以参考wiki或者百科,或者网络上的其他资料介绍。

这里做一个简单的总结。

首先准备一张灰度化的图像,及黑白图像,然后检测图像的边缘(如Canny算子,Sobel算子等等,

主要是灰度梯度方法吧)

假设我们得到一幅图像的边缘图像,然后找出这些边缘中的直线(段),除了之前的Hough算法之外,

这里使用Radon变换。

Radon变换核心在于“线积分”,针对一幅图像,具体来说就是:

设置一个方向(水平自左至右为0度,垂直自下至上为90度,以此类推)

按照这个方向对图像进行“列向量求和”

以0度为例,就是从图像的第1列开始,计算这一列上所有像素的灰度值之和;如此一直计算到最后一列。

以30度为例,如下图,X'为积分方向,对红色垂线所在列的像素进行灰度值叠加求和,

得到积分如图中的淡蓝色小块(仅作示意,可能不准确)

其他角度类似。

如果图像中有一条亮白的直线段,那么会存在这样的情况,

沿着某个方向积分得到的积分图没有“突变”(平缓,没有特别的尖峰)

沿着与之垂直的聆听一个方向则存在“突变”

下图是一个简单的示例

至此,你应当能体会到Radon变换的原理了。

接下来用Matlab进行测试

%% Radon Transform
function RadonTest()fileName=input('Input image file name:');
srcImage=imread(fileName);
grayImage=rgb2gray(srcImage);
cannyImage=edge(grayImage,'canny');theta=0:180;
[R,x]=radon(cannyImage,theta);
figure,imagesc(theta,x,R);
title('R_theta X');
xlabel('theta(degree)');
ylabel('X\prime');
colormap(hot);
colorbar;end

首先载入一张图片,然后灰度化,接着检测边缘

然后针对边缘原图像进行Radon变换

最后得到结果

示例1

原图像(有一条直线段)

Radon变换结果

其中的极亮(暗)点对应的是 X'=-45, theta=50° (大概位置),这表明原图像中截距45处,50+90=140°方向有一条直线(段)

示例2

原图像

Radon变换结果

我正在尝试利用OpenCV或者EmguCV实现Radon变换,请关注后续更新。

Radon变换及其Matlab代码实现相关推荐

  1. kl压缩 matlab,KL 变换实习matlab代码

    <KL 变换实习matlab代码>由会员分享,可在线阅读,更多相关<KL 变换实习matlab代码(4页珍藏版)>请在人人文库网上搜索. 1.K_L变换K-L变换定义以矢量信号 ...

  2. arnold函数 matlab_接再厉,发个Arnold置乱变换的matlab代码

    再接再厉,发个Arnold置乱变换的matlab代码2008-05-05 21:30以下是代码,自已看吧..希望对于初学者有所帮助 function Arnold(Image,Frequency,cr ...

  3. 数字扫描变换技术 matlab代码,基于Matlab的数字扫描变换器设计

    B超是目前广泛使用的超声诊断仪,B型超声诊断已经成为临床超声影像诊断中的重要手段[1].数字扫描变换(DigitalScanConverter,DSC)是B超中的核心部分,是计算机技术和数字图像处理技 ...

  4. 直线检测——Radon变换/霍夫变换/基于快速傅里叶变换的直线检测

    1. 直线检测 1.1. Radon直线检测原理 基于Radon变换的直线检测的目的就是检测根据角度变化时出现的"局部峰值",即可以确定直线的方向,同时,峰值大小能够确定直线上点的 ...

  5. OpenCV的图像直角坐标系转极坐标系的函数warpPolar()详解,并附自己写的实现直角坐标系转极坐标系的MATLAB代码

    [草稿]详解OpenCV实现图像直角坐标系转极坐标系的函数warpPolar(),并附自己写的实现直角坐标系转极坐标系的MATLAB代码 有些时候我们需要把图像或矩阵从直角坐标系(笛卡尔坐标系)转换到 ...

  6. 【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 1.输入:T(x,y,z) 使用stl读取函数完成T的导入工作 2.做Radon变换,得投影图:P 正常Radon变换即可. 3.对P:应用斜 ...

  7. K-L变换原理、图像压缩与人脸识别实战(附matlab代码)

    目录 摘要 K-L变换的基本原理 K-L变换在图像压缩中的应用 研究背景及意义 数字图像压缩与发展现状 K-L变换与图像压缩 K-L变换在人脸识别中的应用 人脸识别 K-L变换实现人脸识别 总结 参考 ...

  8. 图像增强算法汇总(直方图均衡化、拉普拉斯、Log变换、gamma伽马变换)附MATLAB代码

    一.图像增强算法介绍 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...

  9. Radon变换理论介绍与matlab实现--经验交流

    本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些. Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平面内 ...

  10. 【图像检测-道路检测】基于hough变换实现道路检测直线检测附matlab代码

    1 内容介绍 随着遥感技术和计算机技术的飞速发展,遥感图像的采集变得越来越容易,遥感图像中的物体特征识别及检测变得越来越重要,直线是图像中物体基本的特征之一,研究图像中直线的检测算法对计算机视觉和模式 ...

最新文章

  1. 深入浅出自定义标签(一)入门
  2. 对于这个函数const int func(const int a) const声明中,三个const分别是什么意思?...
  3. 安全 - 堡垒机 - Jumpserver
  4. 多行并一行显示的两种方式(DB2)
  5. [绝对原创]从VS2003(.net1.1)升级到vs2005(.net2.0)全程跟踪记录
  6. mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
  7. Android 开发 Camera2开发_3_处理预览和拍照偏暗问题
  8. IndexedDB封装
  9. excel删除行闪退_excel打开闪退解决 打开excel自动退出 自动关闭的解决
  10. cobar mysql_cobar mysql 高可用
  11. 课堂作业:首尾相连求最大子数组
  12. 第一篇博客--大学成长指南
  13. rax调用微信小程序原生事件
  14. linux 性能测试 跑分,测试10秒钟,分析8小时,性能评估只看跑分可不够
  15. Recover a secret string from random triplets
  16. 计算机辅助绘图中测距在哪,cad测距(cad测量距离快捷键)
  17. Python Parser的用法
  18. 申请并下载LIWC字典(英文版)用作科研
  19. vba中MsgBox的参数及用法
  20. 原知因制药将亮相第五届进博会,解锁青春逆龄密码

热门文章

  1. 长江大学计算机类分流,2020级环境科学与工程类学生专业分流方案
  2. 巧用京东物流分享链接批量查询多个京东快递的物流信息
  3. 目前为止最靠谱的禁用windows10update易升自动更新的办法
  4. 6.CCS新建工程及配置
  5. jsp酒店客房预订系统带前端
  6. 图文并茂教你怎么制作pdf文件的目录?
  7. 明日方舟如何在电脑上玩 明日方舟模拟器教程
  8. openwrt设置DNS
  9. [毕业设计]威客网站可行性研究报告书
  10. kotlin的by lazy