图像复原之由投影重建图像

2024-03-25 05:18

本文主要是介绍图像复原之由投影重建图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图像复原之由投影重建图像

简述部分

引言

最初接触由投影重建图像这块内容的时候是在应用在车牌识别的特征提取,通过车牌在垂直投影下的特征足够其进行不同字符的识别。

这里写图片描述

上图仅仅利用了图像的垂直投影,下面显示了一个简单图像的特定角度下的投影

这里写图片描述

当收集到一副图像各个角度的投影后,并希望通过这些投影的图像重建原图像。通过上图的最后一张图片也就是直接重建的图像可见,直接重建会有非常明显的“晕环”现象。

雷登变换

雷登变换阐述了一幅图像与其在各个角度下投影的具体表示。
这里写图片描述

下面显示一副图像的雷登变换
这里写图片描述

图像在各个角度下的雷登变换的集合称为正弦图。
以第一行的图像为例。明显的,其像素点的值在90°的投影下是最多的,在0°或180°的投影下是最少的。对应于右侧的正弦图也能够体现出来。

试想这样一个问题,如果我们把各个角度下的投影经过一次反投影在求和是否会复原图像呢?答案是肯定的。
这里写图片描述

上图显示了由正弦图直接得到的反投影图像。如引言所述,可见其有非常明显的“晕环现象”。有人可能会想到,如果将每次投影的角度间隔选的小一点是否还会存在这样的问题呢?当然了,增大采样次数是一个消耗资源的方法。而我们这里还有更好的解决这个问题的办法,这个方法是建立在傅里叶切片定理上的。

傅里叶切片定理

这里写图片描述

傅里叶切片定理用一句话表示就是:一个投影的一维傅里叶变换就是得到该投影原图的二维傅里叶变换的一个切片,其切片角度就是投影的角度θ。

由此定理就可以通过投影的频域来消除晕环现象了,这种重建方法称为滤波反投影法。

总结由此方法得到反投影的步骤如下:

  1. 计算每个投影的一维傅里叶变换
  2. 用一个滤波函数|w|乘以每个傅里叶变换,就是加窗。
  3. 得到每个滤波后的一维反傅里叶变换。
  4. 将3得到的求和

这里写图片描述

这就是滤波反投影法(加汉明窗)复原的图像。可见,已经很好的消除了“晕环现象”。

扇形射线束滤波反投影的重建

试想,当我们用扇形射线束代替上述的平行射线束自然会有更加不错的效果。
这里写图片描述

这里写图片描述

扇形射线束是当前CT系统使用的方法,具有高分辨率,高SNR和更快的扫描时间。
下面用matlab的fanbeam实现基于扇形射线束的投影图像

这里写图片描述

  • 使用ifanbeam实现图像重建
    这里写图片描述

  • 左图是直接重建的效果,右图加汉明窗并且将传感器间隔缩小到原来1/10的效果。

示例源码

clc;
clear;
close all;
g1 = zeros(600, 600);
g1(100:500, 250:350) = 1;
g2 = phantom('Modified Shepp-Logan', 600);
subplot(2,2,1);imshow(g1);
subplot(2,2,3); imshow(g2);theta = 0:0.5:179.5;
%执行雷登变换
[R1, xp1] = radon(g1, theta);
[R2, xp2] = radon(g2, theta);
%显示投影图像(正弦图)
r1_show = flipud(R1');
r2_show = flipud(R2');
subplot(2,2,2);imshow(r1_show, [], 'XData', xp1([1 end]), 'YData', [179.5, 0]);
axis xy;
axis on;
xlabel('\rho');
ylabel('\theta');
subplot(2,2,4);imshow(r2_show, [], 'XData', xp2([1 end]), 'YData', [179.5, 0]);
axis xy;
axis on;
xlabel('\rho');
ylabel('\theta');%从正弦图得到反投影图
f1 = iradon(R1, theta, 'Hamming');
f2 = iradon(R2, theta, 'Hamming');
figure;
subplot(1,2,1);imshow(f1, []);
subplot(1,2,2);imshow(f2, []);
%}
%使用扇形射线束
D = 1.5*hypot(size(g1,1), size(g2,2))/2;b1_line=fanbeam(g1, D, 'FanSensorGeometry', 'line', 'FanSensorSpacing', 1, 'FanRotationIncrement', 0.5);
b1_line_s=flipud(b1_line');b2_line=fanbeam(g2, D, 'FanSensorGeometry', 'line', 'FanSensorSpacing', 1, 'FanRotationIncrement', 0.5);
b2_line_s=flipud(b2_line');b1_src=fanbeam(g1, D, 'FanSensorGeometry', 'arc', 'FanSensorSpacing', .08, 'FanRotationIncrement', 0.5);
b2_src=fanbeam(g2, D, 'FanSensorGeometry', 'arc', 'FanSensorSpacing', .08, 'FanRotationIncrement', 0.5);figure;
subplot(2,2,1);imshow(g1);
subplot(2,2,2); imshow(b1_line_s, [], 'XData', [0, 850], 'YData', [0, 360]);
axis xy;
axis on;
ylabel('扇形旋转角度');
xlabel('传感器个数');
subplot(2,2,3);imshow(g2);
subplot(2,2,4); imshow(b2_line_s, [], 'XData', [0, 850], 'YData', [0, 360]);
axis xy;
axis on;
ylabel('扇形旋转角度');
xlabel('传感器个数');%扇形反投影滤波重建
B1 = fanbeam(g2, D);
fB1=ifanbeam(B1, D);B2 = fanbeam(g2, D, 'FanSensorSpacing', .05, 'FanRotationIncrement', .5);
fB2=ifanbeam(B2, D, 'FanSensorSpacing', .05, 'FanRotationIncrement', .5, 'filter', 'Hamming');figure;
subplot(1,2,1);imshow(fB1, []);
subplot(1,2,2);imshow(fB2, []);

这篇关于图像复原之由投影重建图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843931

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构