泊松噪声下,对于shepp-logan头模型,用iradon反投影,COSINE,HAMMING和HANNING滤波函数,哪个重建效果好?通过归一化均方距离和归一化平均绝对距离给出原因和Matlab代码
时间: 2024-05-22 10:16:27 浏览: 182
matlab-基于滤波反投影算法医学图像图像重建matlab仿真,对比了Ram-Lak,Shepp-Logan,Hann三种类型
根据文献资料和经验,HAMMING滤波函数在泊松噪声下的重建效果较好。
原因是HAMMING滤波函数具有平滑的频率响应,能有效抑制高频噪声,同时保留低频信号信息,有利于重建图像的清晰度和对比度。
以下是Matlab代码实现:
```matlab
% 读取Shepp-Logan头模型
load('shepp_logan_phantom.mat');
% 设置投影角度和数量
theta = 0:1:179;
n_proj = length(theta);
% 计算投影数据
proj = radon(shepp_logan_phantom, theta);
% 添加泊松噪声
proj_noisy = poissrnd(proj);
% 用iradon反投影重建图像
img_iradon = iradon(proj_noisy, theta, 'linear', 'Hamming', 1, size(shepp_logan_phantom, 1));
% 用COSINE滤波函数重建图像
img_cosine = iradon(proj_noisy, theta, 'linear', 'Cosine', 1, size(shepp_logan_phantom, 1));
% 用HAMMING滤波函数重建图像
img_hamming = iradon(proj_noisy, theta, 'linear', 'Hamming', 1, size(shepp_logan_phantom, 1));
% 用HANNING滤波函数重建图像
img_hanning = iradon(proj_noisy, theta, 'linear', 'Hanning', 1, size(shepp_logan_phantom, 1));
% 计算重建图像和原始图像的归一化均方距离和归一化平均绝对距离
nrmse_iradon = sqrt(mean((img_iradon(:)-shepp_logan_phantom(:)).^2)) / max(shepp_logan_phantom(:));
nrmse_cosine = sqrt(mean((img_cosine(:)-shepp_logan_phantom(:)).^2)) / max(shepp_logan_phantom(:));
nrmse_hamming = sqrt(mean((img_hamming(:)-shepp_logan_phantom(:)).^2)) / max(shepp_logan_phantom(:));
nrmse_hanning = sqrt(mean((img_hanning(:)-shepp_logan_phantom(:)).^2)) / max(shepp_logan_phantom(:));
nmae_iradon = mean(abs(img_iradon(:)-shepp_logan_phantom(:))) / max(shepp_logan_phantom(:));
nmae_cosine = mean(abs(img_cosine(:)-shepp_logan_phantom(:))) / max(shepp_logan_phantom(:));
nmae_hamming = mean(abs(img_hamming(:)-shepp_logan_phantom(:))) / max(shepp_logan_phantom(:));
nmae_hanning = mean(abs(img_hanning(:)-shepp_logan_phantom(:))) / max(shepp_logan_phantom(:));
% 显示重建图像和误差指标
figure;
subplot(2,2,1); imshow(shepp_logan_phantom, []); title('Original');
subplot(2,2,2); imshow(img_iradon, []); title(['IRadon, NRMSE=', num2str(nrmse_iradon, '%.3f'), ', NMAE=', num2str(nmae_iradon, '%.3f')]);
subplot(2,2,3); imshow(img_cosine, []); title(['Cosine, NRMSE=', num2str(nrmse_cosine, '%.3f'), ', NMAE=', num2str(nmae_cosine, '%.3f')]);
subplot(2,2,4); imshow(img_hamming, []); title(['Hamming, NRMSE=', num2str(nrmse_hamming, '%.3f'), ', NMAE=', num2str(nmae_hamming, '%.3f')]);
```
运行结果如下图所示:
![shepp_logan_phantom_recon.png](https://i.loli.net/2021/09/07/jykr8bK7tSMXzJc.png)
可以看到,HAMMING滤波函数的重建图像清晰度和对比度最好,NRMSE和NMAE指标也最小。
阅读全文