MATLAB实现光学综合孔径望远系统仿真

发布于:2025-08-07 ⋅ 阅读:(23) ⋅ 点赞:(0)
一、系统建模与参数设置

1. 孔径阵列设计

% 参数定义
N = 64;          % 阵列尺寸
D = 1.0;         % 单孔径直径(m)
spacing = 1.5*D; % 子孔径间距
fillFactor = 0.4;% 填充因子

% 生成稀疏孔径阵列(以十字臂结构为例)
[x,y] = meshgrid(linspace(-N/2,N/2,N));
aperture = zeros(N,N);
aperture(abs(x)<=D/2 | abs(y)<=D/2) = 1; % 中心十字臂
aperture(mod(x,3*D)==0 | mod(y,3*D)==0) = 1; % 外围环形臂

2. 波前传播模型

lambda = 500e-9; % 波长(m)
k = 2*pi/lambda; % 波数
focalLength = 2.0; % 焦距(m)

% 生成点源目标(假设位于焦平面)
object = zeros(N,N);
object(N/2,N/2) = 1; % 点目标

% 子孔径波前生成
wavefront = zeros(N,N,N);
for i = 1:N
    for j = 1:N
        if aperture(i,j)
            phase = k*sqrt(focalLength^2 + (i-N/2)^2 + (j-N/2)^2);
            wavefront(:,:,i,j) = exp(1i*phase);
        end
    end
end

二、MTF分析与可视化

1. 点扩散函数(PSF)计算

% 合成总波场
totalWavefront = sum(wavefront, 'all');

% 焦平面PSF计算
PSF = abs(fftshift(fft2(totalWavefront)))^2;
PSF = PSF / max(PSF(:)); % 归一化

2. MTF计算与绘制

% 计算光学传递函数(OTF)
OTF = fftshift(fft2(fftshift(PSF)));

% 提取MTF
MTF = abs(OTF);
MTF = MTF / max(MTF(:));

% 绘制MTF曲线
figure;
plot(linspace(-0.5,0.5,N), MTF(N/2,:));
xlabel('归一化空间频率 (cycles/pixel)');
ylabel('MTF');
title('综合孔径系统MTF曲线');
grid on;

三、图像重构算法实现

1. 退化模型模拟

% 添加噪声与模糊
noisyImage = imnoise(im2double(PSF), 'gaussian', 0, 0.001);
blurKernel = fspecial('gaussian', [5 5], 0.5);
blurredImage = imfilter(noisyImage, blurKernel, 'conv');

2. 改进型Richardson-Lucy算法

function restored = RL_deconv(image, PSF, iter)
    [rows,cols] = size(image);
    restored = im2double(image);
    PSF_pad = padarray(PSF, [rows-1,cols-1], 'post');
    
    for iter = 1:iter
        % 估计噪声协方差矩阵
        noiseCov = (restored - imfilter(restored, PSF_pad, 'conv'))^2;
        
        % 更新估计
        restored = restored .* conv2(imfilter(restored, PSF_pad, 'conv'), PSF, 'full');
        restored = restored ./ (1 + conv2(noiseCov, PSF.^2, 'full'));
    end
end

% 参数设置
iter = 50;
restoredImage = RL_deconv(blurredImage, PSF, iter);

四、性能验证与对比

1. 分辨率测试

% 生成分辨率测试靶标
resolutionTarget = checkerboard(10, 0.05, 0.05);

% 仿真成像过程
simulatedImage = imfilter(resolutionTarget, PSF, 'conv');
noisySim = imnoise(simulatedImage, 'poisson');

% 重构结果对比
figure;
subplot(1,3,1); imshow(resolutionTarget); title('原始靶标');
subplot(1,3,2); imshow(noisySim); title('含噪图像');
subplot(1,3,3); imshow(restoredImage); title('重构结果');

2. MTF量化评估

% 计算实际MTF
[~,~,mtf] = birefringenceMTF(restoredImage, lambda, focalLength);

% 对比理论MTF
figure;
plot(theoreticalMTF(:,1), theoreticalMTF(:,2), 'r--', mtf(:,1), mtf(:,2), 'b-o');
legend('理论值', '仿真值');
xlabel('空间频率 (cycles/mm)');
ylabel('MTF');

五、关键算法优化

1. 自适应权重分配

% 基于信噪比的权重调整
SNR = 10*log10(mean(restoredImage(:).^2)/mean(noiseCov(:)));
weight = 1./(1 + 10^(-SNR/10));

2. 并行计算加速

% 使用parfor加速迭代过程
parfor iter = 1:iter
    % 并行计算各子区域
    for sub = 1:numSubRegions
        restored(sub).img = RL_subregion(sub);
    end
end

参考代码 用matlab建立光学综合孔径望远系统的仿真程序 youwenfan.com/contentcsb/80035.html

通过上述方法,可构建完整的综合孔径望远系统仿真平台,为光学系统设计提供理论验证工具。实际应用中需根据具体需求调整孔径分布、噪声模型和重构算法参数。


网站公告

今日签到

点亮在社区的每一天
去签到