C语言实现radon变换

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

因为实验室的要求,需要用C语言实现radon变换,对于刚刚我这个大二刚接触这种纯理论纯算法的人来说,真心不是一般的纠结。。。网络上搜索了好久,也没有找到。最后在CSDN论坛见过别人发过一截代码,可是看起来依然不知道什么意思,不明觉厉。。

后来装了个MATLAB后,查看MATLAB的radon函数,发现其中使用了radonc这么个函数,网上好不容易找到radonc.c文件,发现是一个MATLAB和C语言的混合编程,对于有C语言基础的人来说,看起来完全没有任何压力。。。

针对自己对于radon变换的理解,给整个代码写了注解,相信,有了这个文件,再要换成C语言版本,应该很简单吧。。

对于,这段radon变换代码,配上下面的这段关于radon变换的解释,相信更好理解!

Radon变换:

考虑b=ax+y,将原来的XY平面内的点映射到AB平面上。则原来在XY平面上的一条直线的所有的点,在AB平面上都位于同一个点。通过记录下AB平面上的点的积累厚度,可反知XY面上的一条线的存在。在新平面下得到相应的点积累的峰值,可得出原平面的显著的线集。


例如:XY平面上的一个直线 y=2x-3; 

变换  -3=-2x+y;   其中:a=-2,b=-3

      若有两个点在XY平面:(0,-3),(2,1),此两点都过直线,则可知有AB平面上,此两点在(-2,-3)AB平面上。

一种更好的表示方法是用r和q来代替ab。即:xcosa+ysina=r  【极坐标形势】



以图像的中心为极坐标原点,直线X`即为新的投影坐标,q为角度。我们所要求的原坐标上的一条直线,是一条垂直于上图X`的一条直线,而非X`本身。


源代码:

/* Copyright 1993-2003 The MathWorks, Inc. */   
   
/* $Revision: 1.13.4.3 $  $Date: 2003/08/01 18:11:24 $ */   
   
/*  
 *   
 * RADONC.C .MEX file  
 * Implements Radon transform.  
 *  
 * Syntax  [P, r] = radon(I, theta)  
 *  
 * evaluates the Radon transform P, of I along the angles  
 * specified by the vector THETA.  THETA values measure   
 * angle counter-clockwise from the horizontal axis.    
 * THETA defaults to [0:179] if not specified.  
 *  
 * The output argument r is a vector giving the  
 * values of r corresponding to the rows of P.  
 *  
 * The origin of I is computed in the same way as origins  
 * are computed in filter2:  the origin is the image center  
 * rounded to the upper left.  
Radon变换 Radon变换与逆变换原理,也是CT投影和图像重建的基本理论。 阅读详情

相关推荐

直线检测-Radon变换、Hough变换

radon函数对应格式包括:[R,xp] = radon(I,theta); 其中,R为线积分值,xp为径向坐标,theta为投影角度; 图像投影,就是说将图像在某一方向上做线性积分(累加求和)。如果将图像看成二维函数f(x, y),则其投影就是在特定方向上的线性积分,比如f(x, y)在垂直方向上的线性积分就是其在x轴上的投影;f(x, y)在水平方向上的线积分就是其在y轴上的投影。通过这些投影,可以获取图像在指定方向上的突出特性,这在图像模式识别等处理中可能会用到。 Radon(拉东)算...

知识搬运工的博客 1万+

radon c语言 带注释

radon c语言 带注释,里面有详细的注释,可以看懂,之前的都是没有注释的,但愿对大家有用!!

图像Radon变换与傅里叶变换(matlab)

图像变换是将图像从空间域变换变换域。图像变换的目的是根据图像在变换域的某些性质对其处理。通常这些性质在空间域内很难获取。在变换域内处理结束后,将处理的结果进行反转变换到空间域。我们所看到的图像是在空域上的,其信息具有很强的相关性,所以经常将图像信息通过某种数学方式变换到其他正交矢量空间上。一般称原始图像为空间域图像,称变换后的图像为变化域图像,变换域的图像可反变换为空间域图像。变换后的图像,一方面能够有效的反映图像自身特征,另一方面也可使能量集中在少量数据上,有利于图像存储、传输及处理。

zzj的博客 5837

RADON变换的基本原理

radon变换的基本原理,matlab代码

拉东(Radon变换

学习笔记

学习记录 7226

Radon(拉当)变换:超详细讲解

Radon 变换本质上是将一个二维函数(通常是图像)通过投影的方式转换为一维函数。数学上,它可以表示为:( f(x, y) ) 是二维图像。( \theta ) 是投影的角度(0°到180°之间)。( t ) 是投影线的偏移量。( R(f)(\theta, t) ) 表示在角度 ( \theta ) 和偏移量 ( t ) 下的 Radon 变换结果。Radon 变换的物理意义是在不同的角度 ( \theta ) 上,通过积分(投影)获取图像的二维函数 ( f(x, y) ) 的投影值。

小蜗牛的珍贵百宝箱 3657

Cuda实现Radon变换

有关radon变换的算法的详情,写在这里:http://blog.csdn.net/celte/article/details/9826505 用Cuda实现radon变换,可以类似C语言程序操作。。。 这里可以简单的使用一个block,每个block包含numAngles个thread(在下面的代码中是181个thread) #include #include "math.h" #inc

筑梦★逐梦 1375

深入CT图像重建:滤波反投影代码实现

计算机断层扫描(CT)是一种利用X射线生成身体内部结构横截面图像的技术。在医学领域,CT扫描对于疾病的诊断和治疗计划的制定至关重要。CT图像重建技术则是这一过程的核心,它通过一系列复杂的数据处理和计算步骤,将X射线探测器获得的原始数据转换成清晰、准确的图像。本章将探讨CT重建技术的基础知识,包括其工作原理、所用算法类型以及在医疗诊断中的重要性。我们将从CT重建的基本概念开始,逐步介绍其在现代医疗成像中的应用,以及它如何通过算法解析和图像重建技术,帮助医生获取患者身体内部结构的详细信息。

weixin_32535825的博客 897

用c语言移植matlab算法程序一点小小的经验

<br />这几天移植一个matlab编的用radon变换检测直线的算法,由于之前没有这方面的经验,移植过程纠结了我两三天,主要是一些不起眼的小问题,检查一遍又一遍就是看不出来!不过这个过程中也发现了自己一个的优点就是能够执着的坚持,一直执着的认为只要用matlab验证通过的程序一定可以通过c语言实现

清闲老窝的专栏 5017

CT断层成像系列03——Radon拉东变换具体实现,CT正向投影数据实现(附C++,Matlab代码)

puluotac的博客 421

【亲测免费】 推荐项目:NFFT - 非等间距快速傅里叶变换

推荐项目:NFFT - 非等间距快速傅里叶变换库 项目介绍 NFFT 是一个由C语言编写的软件库,专门用于计算非等间距的快速傅里叶变换和相关变体。这个库不仅提供了基本的非等间距快速傅里叶变换(NFFT),还扩展到了多个领域,包括实值数据、球面、旋转群和超双曲交叉等场景的应用。 项目技术分析 NFFT 实现了以下几种主要的变换: 非等间距快速傅里叶变换 (NFFT):从频率到时间/空间域的转换。 ...

gitblog_00022的博客 808

C++实现滤波反投影图像重建:从原理到工程实践

图像重建是计算机视觉和医学成像领域的核心技术,旨在从投影数据中恢复物体的内部结构。其核心原理基于Radon变换和傅里叶中心切片定理,通过将投影数据转换到频域,解决由外窥内的逆问题。滤波反投影算法通过引入斜坡滤波器补偿频域不均匀采样,有效抑制了直接反投影导致的星状伪影和模糊,从而获得高质量的重建图像。该技术在医学CT、工业无损检测等场景中具有重要应用价值。本文聚焦于滤波反投影算法的C++实现,详细拆解了Radon变换、频域滤波和反投影等关键步骤,并提供了完整的、无第三方依赖的代码实践,旨在帮助读者深入理解算法

weixin_33892359的博客 403

TomoPhantom 项目推荐

TomoPhantom 项目推荐 1. 项目基础介绍和主要编程语言 TomoPhantom 是一个用于生成 2D/3D/4D 分析型 phantom(模拟数据)及其 Radon 变换(平行光束)的软件工具。该项目主要用于图像处理,特别是用于测试各种断层扫描重建方法。TomoPhantom 的主要编程语言是 Python,同时也使用了 C 和 CMake 进行部分功能的实现。 2. 项目的核心功能 ...

gitblog_00192的博客 325

变换与组合变换:信号处理与AI中的数学核心与实践指南

在信号处理与机器学习领域,变换是将数据从一个域映射到另一个域的基础数学工具,例如从时域到频域的傅里叶变换。其核心原理在于通过线性或非线性操作,揭示数据的内在结构与特征。理解变换的可逆性至关重要,逆变换确保了信息在分析处理后能够无损或可控地还原,这是数据压缩、加密和完整信号重建的技术基石。组合变换则通过串联或并联多种变换,构建出更强大的特征提取与处理流水线,例如在图像压缩中结合离散余弦变换与小波变换。这些技术广泛应用于音频降噪、图像编解码、深度学习模型架构设计等场景。本文聚焦于逆变换与组合变换实现细节与设计

weixin_30932215的博客 371

傅里叶变换:从投影切片定理到CT滤波反投影的核心原理

傅里叶变换是一种将信号从时域/空域转换到频域分析的强大数学工具,其核心在于揭示信号的频率组成。在工程实践中,它通过快速算法(FFT)实现了高效频谱分析,为信号处理、图像重建等提供了理论基础。在医学成像与工业无损检测领域,这一原理直接支撑了计算机断层扫描(CT)技术的实现。具体而言,投影切片定理利用傅里叶变换,将物体在不同角度的线积分投影与其二维频谱的径向切片联系起来,从而架起了从投影数据重建断层图像的桥梁。基于此,滤波反投影算法将频域的滤波操作转换到空间域执行,成为临床CT重建的主流方法。本文通过剖析投影切

413

基于Matlab的数字图像处理系统设计要点

基于MATLAB的数字图像处理系统设计 摘 要 MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理想开发工具。 笔者阐述了一种基于MATLAB的数字图像处理系统设计,其中包括图像处理领域的大部分算法,运用MATLAB 的图像处理工具箱对算法进行了实现,论述了利用系统进行图像显示、图形表换及图像处理过程,系统支持索引图像、灰度图像、二值图像、RGB 图像等图像类型;支持BMP、GIF、JPEG、TIFF、PNG 等图像文件格式的读,

GGMMM123的博客 1100

Matlab实现车牌识别的关键技术解析

计算机视觉中的车牌识别技术是智能交通系统的核心组件,通过图像处理和模式识别原理实现车辆身份的自动识别。该技术主要依赖颜色空间转换、形态学处理和模板匹配等基础算法,在停车场管理、交通监控等场景具有重要应用价值。Matlab凭借其强大的矩阵运算能力和丰富的图像处理工具箱,成为开发车牌识别系统的理想平台。本文详细解析了基于Matlab的车牌定位、字符分割和识别等关键技术实现,特别适合数字图像处理学习者和算法验证场景。项目中采用的垂直投影法和模板匹配等方案,在保证92%以上识别率的同时,展现了Matlab在快速原型

weixin_34050519的博客 381
上一篇: C#的配置文件App.config使用总结
下一篇: CreateFile打开串口失败,返回INVALID_HANDLE_VALUE
celte
博客等级 码龄15年 40粉丝 74原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值