MATLAN图像处理之盲去卷积

%盲去卷积
%图像复原中,困难的是得到PSF(PSF) 不以PSF复原图像的方法 盲去卷积
%MLE 最大似然估计为基础,用被随机噪声干扰的量进行估计的最优化策略
%将图像数据看成是随机量,它们与另一族可能的随机量之间有某种似然性
%似然函数用g(x,y) f(x,y) h(x,y)来表达 

%deconvblind来执行盲区卷积
%[fr,PSFe]=deconvblind(g,INITPSF)
%g表示退化图像,INITPSF时点扩散函数的初始估计  PSFe是这个函数最终计算得到的
%估计值,fr是利用估计的PSF复原的图像 用来取得复原图像的算法L-R迭代
%PSF估计受其初始推测尺寸的很大影响

%[fr,PSFe]=deconvblind(g,INITPSF,NUMIT,DAMPAR,WEIGHT)
% NUMIT迭代的次数  默认10次
%DAMPAR 是标量  指定了结果图像同原图像的偏离阈值
%当像素偏离原值的范围在DAMPAR内,不用再迭代
%这即抑制了这些像素上的噪声,又保存了必要的图像细节
%WEIGHT是一个与g同样大小的数组,它为每一个像素分配一个权重来反映其重量
%例如从某个有缺陷的成像组中得出的一个不良像素最终会被赋以权重值零,从而排除该像素来求解
%这个数组的另一个用处是可以根据平坦区域修正量调整像素的权重。
%当用一个指定的PSF来模拟模糊时,WEIGHT可以哦从计算像素中剔除那些来自图像边界的像素点
%复原图想呈现振铃,在复原之前使用edgetaper
clc
clear
g=imread('D:MATLAB图像处理\亮度调节与空间滤波\11.jpg');
g=im2double(g);
% f=checkerboard(8);
PSF=fspecial('gaussian',7,10);%产生一个大小7*7 标准变差10的高斯PSF 点扩散函数
INITPSF=ones(size(PSF));
SD=0.01;
DAMPAR=10*SD;
% g=imnoise(imfilter(f,PSF),'gaussian',0,SD^2);
NUMIT=30;%迭代次数
LIM=ceil(size(PSF,1)/2);%4
WEIGHT=zeros(size(g));
WEIGHT(LIM+1 : end-LIM , LIM+1:end-LIM)=1;
[fr,PSFe]=deconvblind(g,INITPSF,NUMIT,DAMPAR,WEIGHT);
figure
% subplot(2,2,1)
% imshow(pixeldup(PSF,73),[])
subplot(2,2,2)
imshow(pixeldup(PSFe,73),[])
title('根据图像估计的PSF扩散函数')
subplot(2,2,3)
imshow(g)
title('原图')
subplot(2,2,4)
imshow(fr)
title('恢复的图像')

发布了103 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39653453/article/details/102310247
今日推荐