You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3D医学图像的傅里叶合成:3D光栅实现及波长范围疑问

3D光栅图像生成与波长范围计算问题

一、3D光栅的代码适配修正

你提到的2D转3D的核心问题在于:3D空间中,正弦波的传播方向需要用两个独立角度(而非一个)来定义,才能覆盖任意方向的波。原代码中重复使用同一个角度计算X和Z方向的分量,相当于强行限制了波的传播方向,无法正确描述3D空间的光栅。

修正后的代码

import numpy as np
import matplotlib.pyplot as plt

# 生成3D网格(采样间隔为1,范围-7到6,共14个点)
x = np.arange(-7, 7, 1)
X, Y, Z = np.meshgrid(x, x, x)

# 用球坐标系的两个角度定义3D波的传播方向
theta = np.pi * 0.5  # 方位角:与X轴在XY平面内的夹角
phi = np.pi * 0.25   # 极角:与XY平面的夹角

# 计算单位方向向量(满足kx² + ky² + kz² = 1)
kx = np.cos(theta) * np.cos(phi)
ky = np.sin(theta) * np.cos(phi)
kz = np.sin(phi)

wavelength = 5
# 3D正弦光栅:相位由空间点与方向向量的点积决定
grating = np.sin(2 * np.pi * (kx * X + ky * Y + kz * Z) / wavelength)

# 可视化Z=1处的切片
plt.set_cmap("gray")
plt.imshow(grating[:, :, 1])
plt.show()

代码说明

  • 用theta(方位角)和phi(极角)两个参数确定波的传播方向,对应球坐标系的标准定义,能生成任意方向的3D光栅。
  • 方向向量(kx, ky, kz)被归一化为单位向量,确保波的空间频率只由波长控制。

二、可见波长范围的数学推导

你通过实验得出的波长范围(图像宽度的0.1到2倍)可以通过采样定理和视觉感知解释:

1. 最小波长(下限)

根据奈奎斯特采样定理,采样频率必须至少是信号最高频率的2倍。你的网格采样间隔为1(每个点间隔1单位),因此波的空间频率(单位长度内的周期数)不能超过0.5/单位,对应最小波长为:

λ_min ≥ 2 × 采样间隔 = 2

若图像宽度为15(假设网格从-7到7共15个点),则λ_min≈15×0.13,和你实验的0.1倍宽度接近(实际视觉上允许轻微混叠,所以下限可略小于2)。

2. 最大波长(上限)

当波长接近或超过图像宽度时,图像内的波周期数不足1:

  • 若波长等于图像宽度,图像内刚好有1个完整周期,能看到明显的明暗条纹;
  • 若波长为图像宽度的2倍,图像内只有半个周期,仍能观察到灰度变化;
  • 若波长超过图像宽度的2倍,图像内的相位变化极小,视觉上几乎无差异。
    因此上限取图像宽度的1-2倍是合理的。

参考资料说明

你参考的英文博客文章原标题为《Python中的2D傅里叶变换与图像的傅里叶合成》,核心内容是讲解如何基于傅里叶变换原理,通过叠加不同频率、振幅的2D正弦光栅来分解和合成图像。

内容的提问来源于stack exchange,提问作者Jakub Mitura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:00:21