问题标签 [tomography-reconstruction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3336 浏览

matlab - Matlab中Radon变换的实现,输出大小

由于我的问题的性质,我想在 Matlab 中评估 Radon 变换的数值实现(即不同的插值方法给出不同的数值)。

在尝试编写自己的氡气并将其与 Matlab 的输出进行比较时,我发现我的氡气投影尺寸与 Matlab 的不同。

因此,如果需要氡样品,我对如何计算数量有一点直觉。让我们做2D案例。


这个想法是最大尺寸将是当对角线(至少是矩形)部分在氡变换中被投影时,所以diago=sqrt(size(I,1),size(I,2)). 因为我们什么都不想,n_r=ceil(diago)n_r应该是氡变换的离散样本的数量,应该确保没有数据被遗漏。

我注意到 Matlab 的radon输出总是均匀的,这是有道理的,因为你总是想要一条“射线”穿过旋转中心。而且我注意到在所有情况下,数组的端点都有 2 个零。

所以在那种情况下,n_r=ceil(diago)+mod(ceil(diago)+1,2)+2;

但是,我似乎与 Matlab 有一些小的差异。

一个 MWE:


由于 Matlab 的 Radon 变换是我无法研究的函数,我想知道为什么会出现这种差异。

0 投票
1 回答
626 浏览

matlab - Matlab中利用遗传算法优化图像重建算法

我正在尝试使用遗传算法优化图像重建算法。我将初始种群大小设为 10。我有一个输入图像和 10 个重建图像。适应度函数是这两者之间的区别。那是

我想选择其中最好的适应度人群。但是我的适应度结果是一个图像(具有强度值的矩阵)。那么我怎样才能为每个群体获得一个单一的适应度值,以便在下一阶段进行交叉。请帮助。在此先感谢

0 投票
1 回答
688 浏览

matlab - Matlab中遗传算法的变异阶段

我正在使用 Matlab 中的遗传算法优化图像重建算法。我在两个种群上进行了交叉并生成了两个后代,而没有在 matlab 中使用“ga”工具包。所以目前我有两个 1*n 矩阵,其整数值范围为 0-255(它们是按行主要顺序排列的两个图像)。例如

我做了单点排序交叉并得到了后代

接下来我需要以0.02的概率进行突变。我在这里使用了'gaoptimset'并编码如下。

我打印了结果。它给出了一个没有任何值的结构。

谁能帮我对交叉的孩子(Off_1和Off_2)进行突变?提前致谢。

0 投票
1 回答
225 浏览

matlab - matlab中滤波反投影/iradon的定性和定量分析

我想知道是否有人遇到过这个问题。

我可以从类似于原始图像的 matlab 重建图像,但是,实际值总是不同的。

例如,原始图像在矩阵中的值范围为 0 到 1,而我的重建图像的范围为 -0.2 到 0.4。

重建的图像看起来与原始图像相似,只是图像中的数据具有不同的比例。

这是我的意思的示例代码。

0 投票
1 回答
386 浏览

matlab - 从matlab中的图像中删除同心圆

我有我试图操纵的 OCT 成像数据:

在此处输入图像描述

我想删除由图像中心的同心圆包围的所有点。到目前为止,我手动指定了最大圆的半径并将圆区域内的所有点设置为黑色。这些圆圈的大小可能会因图像源和伪影而异,因此我正在尝试找到一种更理想的方法来执行此删除操作。

我最初以为我可以使用 imfindcircles() 来识别这些圆,但是无论指定的半径如何,该算法都无法检测到其中的大部分。依赖连接组件(bwareaopen、regionprops)的方法也会失败,因为同心圆似乎连接到更大的结构。

我的一个想法是我可以转换为极坐标,因为同心圆的中心将始终位于图像的中心,从而产生此图像:

在此处输入图像描述

这应该更容易处理。有没有人有任何想法?

0 投票
1 回答
443 浏览

performance - 从断层扫描投影中提取正弦图

我叫 Lorenzo,是意大利的博士后研究员。我的工作与使用同步辐射的断层成像有关。这对我来说是一个新领域,我开始面对 Matlab 编写一些代码。

我对断层成像完全陌生,Matlab 向我展示了新的挑战。我的实际问题是从堆叠的平行图像投影中创建正弦图。对于不在现场的人员,正弦图是检测在检测器上的样本中特征位置的投影的映射,作为 X 射线束和样本之间角度的函数。

我从实验中得到的是一系列不同角度的 2D 射线照相,您可以将其视为一个矩形“体积”,其中尺寸分别是单个投影中的行数和列数,体积由角度。正弦图只是这个体积的横向切割。这意味着不是从侧面而是从顶部读取体积,因此我将创建一个新的图像数组,其尺寸是列数和投影,数组长度是投影中的行数。为了在这个实验中给出数字,我有 4000 个大小为 2048x1370 像素的投影,所以对于我的计算机技能来说,这是一个巨大的计算问题。

我需要你的帮助才能更快地执行一些操作。我的代码在第一部分分配了一个数组来包含所有图像,这是一个 34 Gb 数组,但我有 130 Gb RAM,所以没问题。执行此操作的代码使用了一个 imread 循环:

这不是最快的方法,现在创建这个数组需要 332 秒。我找到了几种解决方案来改善这一点,我会这样做。

第二步是划分一个平场(没有样本拍摄的图像)。我的代码采用平面并使用 imdivide 将数组中的每个图像划分为平面图像:

这一步似乎很快,但它被称为 4000 次。你有什么建议吗?有没有更好的方法来执行它?

现在我最大的问题是如何以最快的方式在投影体积中进行水平切割?我的基本想法是从“顶部”读取音量。报告如下,它完成了它的工作,但是它需要很长时间:

你能帮我加快这个操作吗?我希望我的问题很清楚,否则请询问,我会尝试更好地解释它。

0 投票
1 回答
2944 浏览

matlab - MATLAB中的滤波反投影和设计滤波器

我正在尝试编写自己的 MATLAB 代码来计算逆氡变换(iradon),到目前为止,我已经成功地使用斜坡滤波器、汉明窗以及在空间中使用一维投影的卷积来重建图像根据 Kak 和 Shakey 的教科书,在我的代码中带有窗口 h 的域。但是,我认为如果我采用窗口 h 的 FFT 并将其乘以一维投影的 FFT,我应该能够获得相同的重建。不幸的是,我得到的是一团糟。

只需用完 = myfbp4('conv') 或 myfbp4('filter') 就会显示不同的结果。卷积似乎工作正常,但过滤方法并没有像我希望的那样工作。

任何人都可以看到问题吗?(抱歉,如果有任何多余的代码,我试图删掉大部分......我还应该提到这段代码是从某个地方借来的并进行了一些修改,但我不记得我在哪里找到它)。

提前致谢

编辑:问题解决了。问题是我没有采用窗口 h 的傅立叶变换的绝对值来获得频率窗口。对于那些发现这一点的人,hfft = abs(fft(h,N)) 应该替换 hfft = fft(h, N)。

0 投票
1 回答
748 浏览

matlab - 如何直接从解析表达式创建幻象正弦图?

要创建模拟幻象正弦图,通常首先创建二维数字图像:

然后应用 rand() 变换

但是,由于幻影图像有其解析表达式,如果对解析表达式进行氡变换,即直接对模拟图像进行氡变换,模拟平行投影会更准确。

在matlab中可以吗?

0 投票
1 回答
99 浏览

matlab - 如何获得沿特定线的矩阵的投影?

给定线上点的参数化L(t,θ)x(s):= t cos θ − s sin θ y(s):= t sin θ + s cos θ,其中t是从原点到与 成角度的线的θ距离x-axis,并且s是线上的某个点。

如何以特定步长Img在这条线上投影图像。使用它我必须进一步实施氡变换。L(t,θ)s

我的问题是如何定义步长s和值t?另外,我需要旋转Img还是不旋转可以吗?

请帮忙。

0 投票
1 回答
730 浏览

matlab - 检测噪声图像中的线伪影

我正在对计算机断层扫描投影图像进行图像处理。我正在进行的处理会产生一种特定类型的伪影,它表现为一条穿过整个图像的垂直线:

线条神器

我目前通过比较每列的平均值来检测它。如果平均值小于左侧和右侧列邻居的平均值的一半,则该列被视为线伪影。然后将其内插为左侧和右侧相邻像素的最大值。

插值效果很好(图像右侧),但检测过于临时。它也经常失败,因为许多仅包含黑色背景的列可以满足该条件,因为泊松噪声明显。这会导致在过滤掉下一阶段的噪声时出现伪影。我使用 BM3D 效果很好,不希望对整个图像进行中值滤波。

你能想出更好的方法来检测这些“线伪影”吗?请注意图像中对象的强边界以及伪影中也包含的大量噪声。