傅里叶单像素成像

傅里叶单像素成像

张子邦, 陆天傲, 彭军政,等.傅里叶单像素成像技术与应用[J]. 红外与激光工程, 2019, 48(6).

数学原理

通过获取图像的傅里叶谱来重建图像本身。图像的傅里叶谱通过对目标物体投影一些列不同的傅里叶基地图案,并通过单像素探测器测量所得的光强值来获得。图像的重建过程仅仅是依次二维离散逆傅里叶变换。利用自然图像在傅里叶域的稀疏性以实现高效率的成像。
对一个目标物体进行二维成像,本质上就是一个对该目标物体的光强分布的空间信息获取和再现过程。二维单像素成像,就是通过仅适用一个没有空间分辨能力的探测器——单像素探测器——来获取物体的空间信息,并对所获取的信息施以响应的算法来重建物体图像。由此可见,二维单像素成像本身包含了一对关于空间分辨能力的矛盾,即:成像过程对空间分辨能力的需求而单像素探测器缺乏空间分辨能力的矛盾

基于傅里叶分析,1807年,J.Fourier提出傅里叶分析理论,指出任意一个来纳许的信号都可以通过傅里叶基得线性组合构成(傅里叶正变换的意义)。

图1

换言之,任意一个连续信号都可以适用无穷多个空间频率不同的正弦或余弦波进行线性叠加(傅里叶逆变换的物理意义)
二维傅里叶正变换和逆变换
C ( f x , f y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ I ( x , y ) e x p [ − j ⋅ 2 π ( f x x + f y y ) ] d f x d f y C(f_x,f_y)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}I(x,y)exp\left[-j\cdot2\pi(f_xx+f_yy)\right]df_xdf_y C(fx,fy)=++I(x,y)exp[j2π(fxx+fyy)]dfxdfy
I ( x , y ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ C ( f x , f y ) e x p [ − j ⋅ 2 π ( f x x + f y y ) ] d x d y I(x,y)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}C(f_x,f_y)exp\left[-j\cdot2\pi(f_xx+f_yy)\right]dxdy I(x,y)=++C(fx,fy)exp[j2π(fxx+fyy)]dxdy

  • x,y是空间域中的直角坐标;
  • f x ,      f y f_x,\;\;f_y fx,fy是傅里叶域中的直角坐标,对应x,y方向的空间频率;
  • I ( x , y ) I(x,y) I(x,y)表示二维图像
  • C ( f x , f y ) C(f_x,f_y) C(fx,fy)表示二维图像的傅里叶谱
  • j是虚数单位

扩展到离散信号:

C ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 I ( x , y ) e x p [ − j 2 π ( u x M + v y N ) ] C(u,v)=\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}I(x,y)exp\left[-j2\pi\left(\frac{ux}{M}+\frac{vy}{N}\right)\right] C(u,v)=x=0M1y=0N1I(x,y)exp[j2π(Mux+Nvy)]
I ( x , y ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 C ( u , v ) e x p [ − j 2 π ( u x M + v y N ) ] I(x,y)=\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}C(u,v)exp\left[-j2\pi\left(\frac{ux}{M}+\frac{vy}{N}\right)\right] I(x,y)=x=0M1y=0N1C(u,v)exp[j2π(Mux+Nvy)]

任何一个二维图像均为一系列傅里叶基地图案(不同空间频率和初相为的余弦条纹图案)的线性叠加的结果(即线性组合)。额日对应个傅里叶基地图案的权重,就是傅里叶系数 C ( u , v ) C(u,v) C(u,v)


通过单像素探测器获取二维图像的傅里叶谱

图像通过傅里叶正变换,可以得到图像在傅里叶域的图像——傅里叶谱。
获取图像的傅里叶谱的过程就是获取图像对应每一个傅里叶基地图案权重的过程。为获得物体图像的傅里叶系数,首先适用计算机产生傅里叶基地图案。并将所得的图案投影到目标物体上,在适用单像素探测器对所得的光信号强度进行探测。
图2

傅里叶基地图案本质上就是一系列具有空间频率、初相位不同的强度成余弦分布的图像。适用数学表达式可表示为:
P ( x , y ; f x , f y , ϕ ) = a + b ⋅ c o s ( 2 π f x x + 2 π f y y + ϕ ) P(x,y;f_x,f_y,\phi)=a+b\cdot cos(2\pi f_xx+2\pi f_yy+\phi) P(x,y;fx,fy,ϕ)=a+bcos(2πfxx+2πfyy+ϕ)

  • a是平均光强、
  • b是对比度
  • x,y是目标物体所在平面的直角坐标,
  • f x f_x fx f y f_y fy分别是对应x、y方向的空间频率
  • ϕ \phi ϕ是初相位

设物体在单像素探测器方向测量投影仪投影傅里叶基地图案时所采用的光照方向的反射强度为 R ( x , y ) R(x,y) R(x,y),记物体图像为 I ( x , y ) I(x,y) I(x,y),则物体图像和物体的反射强度分布关系为 I ( x . y ) ∝ R ( x , y ) I(x.y)\propto R(x,y) I(x.y)R(x,y)。目标物体在傅里叶基底图案 P ( x , y ; f x , f y , ϕ ) P(x,y;f_x,f_y,\phi) P(x,y;fx,fy,ϕ)照明下,所得的反射光的光强为:
E ϕ ( f x , f y ) = ∬ S R ( x , y ) ⋅ P ( x , y ; f x , f y , ϕ ) d x d y E_{\phi}(f_x,f_y)=\iint_SR(x,y)\cdot P(x,y;f_x,f_y,\phi)dxdy Eϕ(fx,fy)=SR(x,y)P(x,y;fx,fy,ϕ)dxdy

其中, S S S为傅里叶基地图案的投影区域。单像素探测器的光响应值为:
D ϕ ( f x , f y ) = D n + β ⋅ E ϕ ( f X , f y ) D_\phi(f_x,f_y)=D_n+\beta\cdot E_\phi(f_X,f_y) Dϕ(fx,fy)=Dn+βEϕ(fX,fy)

  • D n D_n Dn是背景照明在探测器位置引起的光响应值,
  • β \beta β是一个与单像素探测器放大倍数、探测器与物体的空间关系有关的因子。

为获取对应空间频率为 ( f x , f y ) (f_x,f_y) (fx,fy)的傅里叶系数 C ( f x , f y ) C(f_x,f_y) C(fx,fy),j将空间频率为 ( f x , f y ) (f_x,f_y) (fx,fy)而初位相依次位 0 , π / 2 , π , 3 π / 2 0,\pi/2,\pi,3\pi/2 0,π/2,π,3π/2的四个傅里叶基底图案,分别投影到物体上。这四个傅里叶基图案分别记为 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3 P 4 P_4 P4:
在这里插入图片描述
那么单像素探测器依次采集信号可以得到响应值 D 1 , D 2 , D 3 D_1,D_2,D_3 D1,D2,D3 D 4 D_4 D4
在这里插入图片描述

然后根据四步相移法,得到关于反射强度 R ( x , y ) R(x,y) R(x,y)的傅里叶正变换积分式:
在这里插入图片描述

  • j是叙述单位, F F{} F表示傅里叶正变换。

又由于 I ( x , y ) ∝ R ( x , y ) I(x,y)\propto R(x,y) I(x,y)R(x,y)所以可以认为:
在这里插入图片描述

通过上述过程我们就可以得到原图像的每一个傅里叶因子 C ( f x , f y ) C(f_x,f_y) C(fx,fy)。通过对目标物体投影不同的空间频率的四步相移傅里叶基底图案,可获得物体图像傅里叶谱中对应不同空间频率的傅里叶系数。
对所获得的物体图像傅里叶谱实行逆傅里叶变化,即可实现物体图像的重建:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGXEb4eb-1621759377110)(leanote://file/getImage?fileId=60a4ae27ab64415fa2000817)]

其中, F − 1 { } F^{-1}\{\} F1{}表示逆傅立叶变换。
要无失真的重建图像分辨率为 M × N M\times N M×N像素的图像,则需要获取其傅立叶谱中的全部 M × N M\times N M×N个傅立叶系数。由于每个傅立叶系数需要投影四部相移的傅立叶基底图案,即需要花费4次测量;又由于物体图像再数学上是一个实值得矩阵,其傅立叶谱具有共轭对称性,因此获取 M × N M\times N M×N个傅立叶系数共需要 2 × M × N 2\times M\times N 2×M×N次测量。换言之,在无失真重建图像的情况下,使用四部相移法获得图像的傅立叶谱,花费的测量数是重建图像像素数的两倍,其根本原因是四步相移方法本质上是一种差分测量。

图像能量主要集中在傅立叶谱的低频部分,而高频的傅立叶系数的模很小甚至接近于零。因此,可以通过只投影低空间频率的傅立叶基底图案,获取低频的傅立叶系数并直接使高频的系数置零来重建物体图像,从而实现较少测量次数的目的。


程序

Single-pixel imaging by means of Fourier spectrum acquisition

  • 程序步骤:
    • 四步相移正弦条纹图案生成
      • P Φ ( x , y , f x , f y ) = a + b ⋅ cos ⁡ ( 2 π f x x + 2 π f y y + Φ ) P_{\Phi}(x,y,f_x,f_y)=a+b\cdot \cos(2\pi f_x x+2\pi f_y y+\Phi) PΦ(x,y,fx,fy)=a+bcos(2πfxx+2πfyy+Φ)
    • 图案投影
      • E Φ ( f x , f y ) = ∬ ϕ R ( x , y ) P Φ ( x , y , f x , f y ) d x d y E_{\Phi}(f_x,f_y)=\iint\limits_\phi R(x,y)P_{\Phi}(x,y,f_x,f_y)dxdy EΦ(fx,fy)=ϕR(x,y)PΦ(x,y,fx,fy)dxdy
    • 单像素信号获取
      • D Φ ( f x , f y ) = D n + k E Φ ( f x , f y ) D_\Phi(f_x,f_y)=D_n+kE_\Phi(f_x,f_y) DΦ(fx,fy)=Dn+kEΦ(fx,fy)
    • 得到表面反射率
      • [ D 0 ( f x , f y ) − D π ( f x , f y ) ] + j ⋅ [ D π / 2 ( f x , f y ) − D 3 π / 2 ( f x , f y ) ] = 2 b k ⋅ F { R ( x , y ) } \left[D_0(f_x,f_y)-D_\pi(f_x,f_y)\right]+j\cdot \left[D_{\pi/2}(f_x,f_y)-D_{3\pi/2}(f_x,f_y)\right]=2bk\cdot F\{R(x,y)\} [D0(fx,fy)Dπ(fx,fy)]+j[Dπ/2(fx,fy)D3π/2(fx,fy)]=2bkF{R(x,y)}
      • 2 b k ⋅ R ( x , y ) = F − 1 { [ D 0 ( f x , f y ) − D π ( f x , f y ) ] + j ⋅ [ D π / 2 ( f x , f y ) − D 3 π / 2 ( f x , f y ) ] } 2bk\cdot R(x,y)=F^{-1}\{\left[D_0(f_x,f_y)-D_\pi(f_x,f_y)\right]+j\cdot\left[D_{\pi/2}(f_x,f_y)-D_{3\pi/2}(f_x,f_y)\right]\} 2bkR(x,y)=F1{[D0(fx,fy)Dπ(fx,fy)]+j[Dπ/2(fx,fy)D3π/2(fx,fy)]}粗体

具体步骤

  • 读取图片
  • 参数设置
    • 相移步数
    • 相移量
    • 采样率
    • 采样方式(圆形)
  • 频率坐标图
  • 频率采样顺序
  • 获取傅立叶域对称中心
  • 生成投影图案
  • 进行数据采集
  • 根据公式利用采集的数据计算频率因子(在这个过程中要补全对称的数据)
  • 通过逆傅立叶变换恢复图像

** 本文只是学习过程中的总结,如有侵权请联系 **

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简的Matlab仿真傅里叶像素成像光场相机的代码,可以作为参考: ```matlab % 定义物体参数 object_size = [100 100]; % 物体大小 object_depth = 10; % 物体深度 object_phase = 2*pi*rand(object_size); % 物体相位 % 定义相机参数 pixel_size = 5e-6; % 像素大小 pixel_num = [64 64]; % 像素数量 focal_length = 50e-3; % 焦距 NA = 0.1; % 数值孔径 wavelength = 532e-9; % 波长 % 定义采样参数 sample_num = 100; % 采样次数 sample_mask = rand(pixel_num) < 0.5; % 采样掩模 % 生成采样矩阵 sample_matrix = zeros(pixel_num(1)*pixel_num(2), sample_num); for i = 1:sample_num % 生成随机相位模式 sample_phase = 2*pi*rand(pixel_num); % 计算相位差 phase_diff = object_phase - sample_phase; % 计算采样光强 sample_intensity = abs(fftshift(fft2(exp(1i*phase_diff)))); sample_intensity = sample_intensity .* sample_mask; sample_intensity = sample_intensity(:); % 添加采样矩阵 sample_matrix(:, i) = sample_intensity; end % 重建图像 reconstruct_image = zeros(object_size); for i = 1:sample_num % 生成随机相位模式 sample_phase = 2*pi*rand(pixel_num); % 计算相位差 phase_diff = object_phase - sample_phase; % 计算反傅立叶变换 sample_intensity = sample_matrix(:, i); sample_intensity = reshape(sample_intensity, pixel_num); sample_intensity = ifft2(ifftshift(sample_intensity)); % 计算重建图像 reconstruct_image = reconstruct_image + sample_intensity .* exp(-1i*phase_diff); end reconstruct_image = abs(reconstruct_image) / sample_num; % 显示结果 figure; subplot(1, 2, 1); imshow(object_phase, []); title('物体相位'); subplot(1, 2, 2); imshow(reconstruct_image, []); title('重建图像'); ``` 这个代码实现了一个简傅里叶像素成像光场相机的仿真,其中包括了物体参数、相机参数、采样参数和重建过程。具体来说,它先生成了一个随机相位的物体,并根据相机参数和采样参数生成了随机的相位模式,然后通过傅里叶变换计算出采样光强,最后通过反傅里叶变换和相位差计算出重建图像。需要注意的是,这个代码还比较简,实际应用中可能需要更多的算法和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值