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变换,请关注后续更新。

本文原创,文章链接

http://blog.csdn.net/fengyhack/article/details/41873119

逆radon变换matlab,Radon变换及其Matlab代码实现相关推荐

  1. MATLAB中hough反变换,matlab中hough变换

    hough 变换提取直线(Matlab 实现) Hough 变换提取直线一.实验目标实现用 Hough 变换检测直线的算法二.实验内容 1.读入图像选取有较多直线及部分曲线以作对比的...... j= ...

  2. matlab实现阶跃响应变换,z域的阶跃响应matlab

    离散系统的的Z域分析及Matlab实现_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 离散系统的的Z域分析及Matlab实现_计算机软件及应用_...... 201 ...

  3. MATLAB坐标系变换之机器人工具箱系列(3)

    1.前言: 在机器人的应用中,可以使用不同的坐标系来定义机器人,传感器和其他物体的位置.通常,对象在三维空间中的位置可以通过位置和方向值指定.这些值有多个可能的表示形式应用于某些特定应用程序.平移和旋 ...

  4. 沃尔什变换 matlab,Walsh-Hadamard 变换

    Walsh-Hadamard 变换 Walsh-Hadamard 变换是一种将信号分解成一组基函数的非正弦类正交变换方法.这些基函数是 Walsh 函数,它们是值为 +1 或 –1 的矩形波或方波.W ...

  5. 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?

    https://www.douban.com/note/164400821/ 写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创.在此向多位原创作者致敬!!! ...

  6. 【转】为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?...

    写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创.在此向多位原创作者致敬!!!一.傅立叶变换的由来关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶 ...

  7. gabor 变换matlab,Gabor变换到底是什么鬼?

    欲讲gabor,必须先看下傅里叶变换有什么缺点! 1.傅里叶变换 1) 简介 数字图像处理的方法主要分成两大部分:空域分析法和频域分析法.空域分析法就是对图像矩阵进行处理:频域分析法是通过图像变换将图 ...

  8. 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换

    [纯技术帖]为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换来源: 陈诚--WECN的日志 写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,内容 ...

  9. PRI变换法原理解析及其matlab分析

    ---------------------------------------------------------------------------------------------------- ...

  10. matlab 电化学程序,基于MATLAB的电化学滴定曲线导数变换的实现

    冶金分析 ,2010 ,30(10) :1619Metallurgical Analysis ,2010 ,30(10) :16219文章编号 :1000 - 7571(2010) 10 - 0016 ...

最新文章

  1. 操作系统 地址 概念
  2. comboBox绑定数据库后SelectedIndexChanged事件出错
  3. gradle maven_将工件从Gradle自动提升到Maven Central
  4. Vmware下CentOs7 桥接模式下配置固定IP
  5. rman打开oracle归档日志,Oracle RAC中使用RMAN管理归档日志
  6. Win11系统线程异常未处理怎么办?Win11系统线程异常未处理解决方法
  7. python工程师工资多少-Python全栈工程师为何这么火薪资这么高看了才知道
  8. jmoiron sqlx mysql_mysql 一(或其他数据库)
  9. 游戏筑基开发之结构体定义动态数组及常见问题(C语言)
  10. ubuntu16.04中创建新用户
  11. mysql表结构及索引脚本
  12. 《Java从小白到大牛精简版》之第6章 运算符(上)
  13. 一个注册表操作类,很有用!
  14. 【IMX6ULL笔记】--内核底层驱动初步探究
  15. http(S)系列之(五):android之HttpURLConnection源码解析(1)
  16. SPSS如何计算Cronbach alpha和进行折半信度检验
  17. 统计相关系数(3)——Kendall Rank(肯德尔等级)相关系数及MATLAB实现
  18. UBOOT源码分析的第一阶段start.S分析(3)
  19. verilog二分频代码verilog三分频代码
  20. (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)

热门文章

  1. 2021年电工(初级)考试及电工(初级)考试题
  2. 监控视频压缩存储—视频实时压缩服务器
  3. eBay SOA开源平台
  4. 立体栅格地图_高精地图之3D栅格地图的应用
  5. 默纳克万能协议服务器图片,默纳克万能MDKE6服务器使用说明.docx
  6. 电脑文件夹都有什么奇葩的名称?程序员:从古至今没有出过车祸!
  7. 计算机中文件名无法更改原因,电脑系统文件夹名称修改不了怎么办
  8. Java 基础 —— Hello World
  9. 计算机硬盘存贮量单位,硬盘存储计量单位KB、MB、GB大小换算
  10. GO学习笔记(3)liteIde的使用和DEBUG的使用