Radon变换及其Matlab代码实现
转自: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代码实现相关推荐
- kl压缩 matlab,KL 变换实习matlab代码
<KL 变换实习matlab代码>由会员分享,可在线阅读,更多相关<KL 变换实习matlab代码(4页珍藏版)>请在人人文库网上搜索. 1.K_L变换K-L变换定义以矢量信号 ...
- arnold函数 matlab_接再厉,发个Arnold置乱变换的matlab代码
再接再厉,发个Arnold置乱变换的matlab代码2008-05-05 21:30以下是代码,自已看吧..希望对于初学者有所帮助 function Arnold(Image,Frequency,cr ...
- 数字扫描变换技术 matlab代码,基于Matlab的数字扫描变换器设计
B超是目前广泛使用的超声诊断仪,B型超声诊断已经成为临床超声影像诊断中的重要手段[1].数字扫描变换(DigitalScanConverter,DSC)是B超中的核心部分,是计算机技术和数字图像处理技 ...
- 直线检测——Radon变换/霍夫变换/基于快速傅里叶变换的直线检测
1. 直线检测 1.1. Radon直线检测原理 基于Radon变换的直线检测的目的就是检测根据角度变化时出现的"局部峰值",即可以确定直线的方向,同时,峰值大小能够确定直线上点的 ...
- OpenCV的图像直角坐标系转极坐标系的函数warpPolar()详解,并附自己写的实现直角坐标系转极坐标系的MATLAB代码
[草稿]详解OpenCV实现图像直角坐标系转极坐标系的函数warpPolar(),并附自己写的实现直角坐标系转极坐标系的MATLAB代码 有些时候我们需要把图像或矩阵从直角坐标系(笛卡尔坐标系)转换到 ...
- 【CT算法,radon变换】基于MATLAB的CT算法,radon变换的三维建模仿真
1.软件版本 MATLAB2021a 2.本算法理论知识 1.输入:T(x,y,z) 使用stl读取函数完成T的导入工作 2.做Radon变换,得投影图:P 正常Radon变换即可. 3.对P:应用斜 ...
- K-L变换原理、图像压缩与人脸识别实战(附matlab代码)
目录 摘要 K-L变换的基本原理 K-L变换在图像压缩中的应用 研究背景及意义 数字图像压缩与发展现状 K-L变换与图像压缩 K-L变换在人脸识别中的应用 人脸识别 K-L变换实现人脸识别 总结 参考 ...
- 图像增强算法汇总(直方图均衡化、拉普拉斯、Log变换、gamma伽马变换)附MATLAB代码
一.图像增强算法介绍 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- Radon变换理论介绍与matlab实现--经验交流
本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些. Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平面内 ...
- 【图像检测-道路检测】基于hough变换实现道路检测直线检测附matlab代码
1 内容介绍 随着遥感技术和计算机技术的飞速发展,遥感图像的采集变得越来越容易,遥感图像中的物体特征识别及检测变得越来越重要,直线是图像中物体基本的特征之一,研究图像中直线的检测算法对计算机视觉和模式 ...
最新文章
- 深入浅出自定义标签(一)入门
- 对于这个函数const int func(const int a) const声明中,三个const分别是什么意思?...
- 安全 - 堡垒机 - Jumpserver
- 多行并一行显示的两种方式(DB2)
- [绝对原创]从VS2003(.net1.1)升级到vs2005(.net2.0)全程跟踪记录
- mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
- Android 开发 Camera2开发_3_处理预览和拍照偏暗问题
- IndexedDB封装
- excel删除行闪退_excel打开闪退解决 打开excel自动退出 自动关闭的解决
- cobar mysql_cobar mysql 高可用
- 课堂作业:首尾相连求最大子数组
- 第一篇博客--大学成长指南
- rax调用微信小程序原生事件
- linux 性能测试 跑分,测试10秒钟,分析8小时,性能评估只看跑分可不够
- Recover a secret string from random triplets
- 计算机辅助绘图中测距在哪,cad测距(cad测量距离快捷键)
- Python Parser的用法
- 申请并下载LIWC字典(英文版)用作科研
- vba中MsgBox的参数及用法
- 原知因制药将亮相第五届进博会,解锁青春逆龄密码