单像素成像

单像素成像



前言

这里对单像素成像的原理,历史和应用等等先不过多介绍了。在一般的单像素成像实验中,我们都是用随机散斑,然而为了计算方便,可以用正交基底作为散斑图案,这一篇文章中主要介绍基于傅里叶基底的单像素成像。
傅里叶谱是由一系列傅里叶系数组成的。为了获得傅里叶系数,将对应的傅里叶条纹投影到目标上,并使用关联探测器测量,可以通过关联算法重建傅里叶谱。将正弦条纹作为照明基底,就能够得到图像中各个空间频率的信息所对应的系数。


一、相关公式

这一节介绍一下单像素成像的相关公式。由于写公式太麻烦了,这里直接引用暨南大学张子邦的博士论文《傅里叶单像素成像技术》,相关片段的截图。
请添加图片描述
请添加图片描述
请添加图片描述

二、相关代码

1.读入目标

代码如下(matlab):

clear all;
close all;
I=imread('');# 目标路径
[N,~]=size(I(:,1));
f=0:N-1;
I_T1=zeros(N,N);
I_T2=zeros(N,N);
I_T3=zeros(N,N);
I_T4=zeros(N,N);
temp=0;# 平均光强a
temp1=0;

2.核心代码

以下是根据公式编写的代码:

N1=1;
N2=N;
for j=N1:N2
	for k=N1:N2
		for m=1:N
			for n=1:N
				temp=temp+double(I(m,n))*cos(2*pi*(j-1)*(m-1)/N+2*pi*(k-1)*(n-1)/N);
			end# I(m,n)为物体图像反射强度
			temp1=temp1+temp;
			temp=0;
		end
		I_T1(j,k)=temp1;
		temp1=0;
	end
end
temp=0;
temp1=0;
for j=N1:N2
	for k=N1:N2
		for m=1:N 
			for n=1:N
				temp=temp+double(I(m,n))*cos(2*pi*(j-1)*(m-1)/N+2*pi*(k-1)*(n-1)/N+pi/2);
			end
			temp1=temp1+temp;
			temp=0;
		end
		I_T2(j,k)=temp1;
		temp1=0;
	end
end
temp=0;
temp1=0;
for j=N1:N2
	for k=N1:N2
		for m=1:N 
			for n=1:N
				temp=temp+double(I(m,n))*cos(2*pi*(j-1)*(m-1)/N+2*pi*(k-1)*(n-1)/N+pi);
			end
			temp1=temp1+temp;
			temp=0;
		end
		I_T3(j,k)=temp1;
		temp1=0;
	end
end
temp=0;
temp1=0;
for j=N1:N2
	for k=N1:N2
		for m=1:N
			for n=1:N
				temp=temp+double(I(m,n))*cos(2*pi*(j-1)*(m-1)/N+2*pi*(k-1)*(n-1)/N+3*pi/2);
			end
			temp1=temp1+temp;
			temp=0;
		end
		I_T4(j,k)=temp1;
		temp1=0;
	end
end
I_F=(I_T1-I_T3+i*(I_T2-I_T4)); # 公式(2-12),可得到傅里叶系数
I1=ifft2(I_F);# 逆变换得到目标图像

总结

以上就是今天要讲的内容,简单介绍了单像素成像的仿真代码。有问题可以留言或者私信交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值