最大熵图像恢复

说明

图像降质的过程通常可以用以下模型描述:

Y = H ∗ X + N Y=H*X+N Y=HX+N

Y表示观测到的图像,H表示点扩展函数(Point Spread Function, PSF)。“*“表示二维卷积运算。

参考陈春涛 ,黄步根发表的文献

使用以下公式进行迭代计算:
X k = c   e x p ( λ k ∗ H ) X_k=c\ exp(\lambda_k*H) Xk=c exp(λkH)
λ k + 1 = λ k + Δ λ k \lambda_{k+1}=\lambda_{k}+\Delta\lambda_{k} λk+1=λk+Δλk
Δ λ k = l o g ( Y ) − l o g ( H ∗ X k ) \Delta\lambda_{k}=log(Y)-log(H*X_k) Δλk=log(Y)log(HXk)

matlab代码

clc,close all
clear

I = im2double(imread('cameraman.tif'));
figure
imshow(I)
title('Original Image');
saveas(gcf,'save1.bmp')

% add blur
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');

% add noise
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
                        noise_mean, noise_var);     
                                  
figure, imshow(blurred_noisy)
title('Simulate Blur and Noise')
saveas(gcf,'save2.bmp')

% MEM method

lambda = ones(size(blurred_noisy));
I2 = ones(size(blurred_noisy));
c=0.4;

for i=1:20
    dlambda = (log(blurred_noisy) - log(imfilter(I2, PSF, 'conv', 'circular')));
    lambda = lambda + dlambda;
    I2 = c*exp(imfilter(lambda, PSF, 'conv', 'circular'));
end

figure, imshow(I2)
title('MEM method')
saveas(gcf,'save.bmp')

效果

原始图像
模糊处理后的图像
恢复后图像

参考文献

[1] 陈春涛, 黄步根. 模糊图像的最大熵恢复[J]. 中国司法鉴定, 2010(01):76-78.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值