单光子探测器的光子高效计算 3-D 和反射成像附matlab代码

简介: 单光子探测器的光子高效计算 3-D 和反射成像附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

从场景的主动照明中捕获低光照水平的深度和反射率图像具有广泛的应用。传统上,即使使用对单个光子敏感的检测器,每个像素也需要数百个光子检测来减轻泊松噪声。我们开发了一种稳健的方法来估计深度和反射率,该方法使用每个像素的固定停留时间以及在场景中平均每个像素检测到一个光子的量级。我们的计算图像形成方法将物理上准确的单光子计数统计与现实世界反射率和 3-D 结构中存在的空间相关性的利用相结合。在强背景光下进行的实验表明,我们的方法能够准确地恢复场景深度和反射率,而基于最大似然 (ML) 估计或其近似的传统成像方法会导致噪声较大的图像。对于深度,性能优于信号无关的噪声去除算法,例如应用于像素级 ML 估计的中值滤波或块匹配和 3-D 滤波 (BM3D);对于反射率,性能类似于信号相关的噪声去除算法,例如泊松非局部稀疏 PCA 和具有方差稳定变换的 BM3D。我们的框架将光子效率提高了传统处理的 100 倍,并且在光栅扫描操作中总采集时间限制下的第一光子成像也有所改进。因此,我们的新成像器将可用于快速、低功耗和抗噪声的主动光学成像,

⛄ 部分代码

%%

% Sample code and data for

%   Photon-efficient computational 3D and reflectivity

%   imaging with single-photon detectors

% by D.Shin, A.Kirmani, V.Goyal, and J.H.Shapiro, IEEE TCI 2015


% Uses variants of SPIRAL-TAP software developed in the paper

%   This is SPIRAL-TAP: Sparse Poisson intensity reconstruction algorithms?theory and practice

% by Z.Harmany, R.Marcia, and R.Willett, IEEE TIP 2012


% When using this software in your publications, please cite both papers..


%%


clc; clear; close all;



load('g1x1_10.mat');

% load('matlab1.mat')

% load('rjmcmc1.mat')

[m,n,T] = size(mm);

Ts = cell(m,n);

for i = 1:m

   for j = 1:n

       Ts{i,j} = find(mm(i,j,:));

   end

end


[nr,nc] = size(Ts);

C0 = zeros(nr,nc);

D0 = zeros(nr,nc);

for i=1:nr

   for j=1:nc        

       ts = Ts{i,j};

       C0(i,j) = length(ts);

       D0(i,j) = mean(ts);

   end

end

unobserved = isnan(D0);

D0(unobserved) = 0;


addpath(genpath([pwd '/fcns']));

AT = @(x) x; A = @(x) x;

C1 = SPIRALTAP_BIN(C0,A,0.5,100, ...

   'noisetype','binomial', ... % approx for binomial

   'penalty','tv', ...

   'maxiter',60,... % `120

   'Initialization',C0,...

   'AT',AT,...

   'monotone',1,...

   'miniter',1,...

   'stopcriterion',3,...

   'tolerance',1e-12,...

   'alphainit',0.1,...

   'alphaaccept',1e80,...

   'logepsilon',1e-10,...

   'saveobjective',1,...

   'savereconerror',1,...

   'savecputime',1,...

   'savesolutionpath',0,...

   'truth',C0,...

   'verbose',0);

max_count = 20;

scales = C1/max_count;

scales(scales>1) = 1;

img_filt = get_rom(Ts);

D_mean = get_thres(Ts,img_filt,scales);

D_mean(isnan(D_mean)) = 0;

AT = @(x) x; A = @(x) x;

D1 = SPIRALTAP_blank(D_mean,A,10, ...

   'noisetype','gaussian', ...

   'penalty','tv', ...

   'maxiter',40,...

   'Initialization',img_filt,...

   'AT',AT,...

   'monotone',1,...

   'miniter',1,...

   'stopcriterion',3,...

   'tolerance',1e-12,...

   'alphainit',0.01,...

   'alphaaccept',1e80,...

   'logepsilon',1e-10,...

   'saveobjective',1,...

   'savereconerror',1,...

   'savecputime',1,...

   'savesolutionpath',0,...

   'truth',zeros(nr,nc),...

   'verbose',0);

range_C = [0,max_count];

range_D = [1350,1550];


% for k = 1:m

%     for l = 1:n

%         if dep1(k,l)==4096

%             dep1(k,l) = 0;

%             D0(k,l) = 0;

%             D1(k,l) = 0;

%             depth_im(k,l) = 0;

%         end

%     end

% end

       


figure;

subplot(221); imagesc(C0, range_C);axis image;axis off;colorbar;colormap jet;

title('reflectivity - ML');

subplot(222); imagesc(D0, range_D);axis image;axis off;colorbar;colormap jet;

title('depth - ML');

subplot(223); imagesc(C1, range_C);axis image;axis off;colorbar;colormap jet;

title('reflectivity - proposed');

subplot(224); imagesc(D1, range_D);axis image;axis off;colorbar;colormap jet;

title('depth - proposed');

% rmse1 = rmse(D0,dep1);

% rmse2 = rmse(D1,dep1);

% rmse3 = rmse(depth_im,dep1);

% subplot(222);imagesc(D1, [0,150]);axis image;axis off;colorbar;colormap jet;

% subplot(223);imagesc(C0, [0,10]);axis image;axis off;colorbar;colormap jet;

% subplot(221);imagesc(D0, [0,150]);axis image;axis off;colorbar;colormap jet;

% subplot(224);imagesc(C1, [0,10]);axis image;axis off;colorbar;colormap jet;

%colormap('gray');


⛄ 运行结果

⛄ 参考文献

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
|
1月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
42 2
|
1月前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
199 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
2月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
128 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)