C语言实现radon变换

Radon变换 Radon变换与逆变换原理,也是CT投影和图像重建的基本理论。 阅读详情

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

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

相关推荐

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

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

zzj的博客 5851

Cuda实现Radon变换

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

筑梦★逐梦 1376

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

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

425

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

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

weixin_32535825的博客 901

radon c语言 带注释

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

RADON变换的基本原理

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

STM32G4实战:用CubeMX+Keil五分钟搞定FreeRTOS多任务LED控制(避坑指南)

本文详细介绍了如何在STM32G4系列芯片上使用CubeMX和Keil快速配置FreeRTOS实现多任务LED控制,包括环境准备、时钟配置、任务创建及常见问题解决方案。重点解决了时钟源冲突等高频问题,并提供了优化建议和进阶应用示例,帮助开发者高效完成嵌入式开发任务。

joy55的博客 222

AHB总线协议

1. 简介         AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内

ivy_reny的专栏 8万+

Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果

rv1126 gstreamer opencv negetive effect

Aisy_D的专栏 1463

HT7036计量芯片SPI通信与数据读取实战解析

本文详细解析HT7036计量芯片的SPI通信与数据读取实战,涵盖SPI时序配置、命令发送、数据读取及常见问题排查。重点介绍如何通过SPI接口与MCU通信,实现电能数据的稳定采集与处理,为智能电表等应用提供实用解决方案。

vscode5coder的博客 264

在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目

本文介绍了在昇腾910B服务器上部署开源PDF解析工具Mineru2.5的过程。首先从昇腾社区下载mindie镜像并运行容器,安装系统依赖。针对部署过程中遇到的多个报错问题(如torchvision与torch版本不匹配、昇腾软件栈与NumPy 2.0不兼容等),提供了具体解决方案和兼容版本。通过设置环境变量、安装指定版本的Python依赖包,成功部署Mineru项目并下载模型。最后运行测试,验证了在NPU设备上运行pipeline的可行性。整个过程详细记录了版本适配和错误处理方法,为类似部署场景提供了参考

一起加油吧 2164

10X Genomics单细胞数据分析实战:从FASTQ到UMAP可视化的完整流程

本文详细介绍了10X Genomics单细胞数据分析的完整流程,从FASTQ原始数据处理到UMAP可视化。通过Seurat工具包实现数据质量控制、标准化、降维聚类和细胞注释,特别适合生物信息学新手学习。文章包含可复现的代码示例和常见问题解决方案,帮助研究者快速掌握单细胞测序数据分析的核心技术。

weixin_30952535的博客 535

ML307R OpenCPU TCP使用

实现现象 平台下发数据,板子在收到数据之后,马上再发送到平台,通过串口助手可以看到已经接收到数据。ML307R TCP 是使用LWIP的标准的socket通信,具体TCP流程可以自行百度。实验目的:实现把接收的数据再发送到服务端。因为是4G,所以必须用外网的。

面朝大海春暖花开 2232

Jetson agx Orin 适配Xenomai4

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

xiaoning132的专栏 465

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 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、付费专栏及课程。

余额充值