📄 代码19-6.txt
字号:
I = imread('sample4.jpg'); % 读入图像
I=rgb2gray(I); % 图像灰度转换
figure; % 新建窗口
imshow(I); % 显示原始图像
title('Original Image'); % 设置图像标题
PSF = fspecial('gaussian',7,10); % 设置滤波器
Blurred = imfilter(I,PSF,'symmetric','conv'); % 图像卷积计算
figure; % 新建窗口
imshow(Blurred); % 显示处理后的图像
title('Blurred Image'); % 设置图像标题
UNDERPSF = ones(size(PSF)-4); % 欠尺寸PSF
[J1 P1] = deconvblind(Blurred,UNDERPSF); % 图像复原
figure; % 新建窗口
imshow(J1); % 显示处理后的图像
title('Deblurring with Undersized PSF'); % 设置图像标题
OVERPSF = padarray(UNDERPSF,[4 4],'replicate','both'); % 过尺寸PSF
[J2 P2] = deconvblind(Blurred,OVERPSF); % 图像复原
figure; % 新建窗口
imshow(J2); % 显示处理后的图像
title('Deblurring with Oversized PSF'); % 设置图像标题
INITPSF = padarray(UNDERPSF,[2 2],'replicate','both'); % 全尺寸PSF
[J3 P3] = deconvblind(Blurred,INITPSF); % 图像复原
figure; % 新建窗口
imshow(J3); % 显示处理后的图像
title('Deblurring with INITPSF'); % 设置图像标题
figure; % 新建窗口
subplot(221); % 子图定位
imshow(PSF,[],'InitialMagnification','fit'); % 显示真实PSF
title('True PSF'); % 图像标题显示
subplot(222); % 子图定位
imshow(P1,[],'InitialMagnification','fit'); % 显示欠尺寸PSF
title('Reconstructed Undersized PSF'); % 图像标题显示
subplot(223); % 子图定位
imshow(P2,[],'InitialMagnification','fit'); % 显示过尺寸PSF
title('Reconstructed Oversized PSF'); % 图像标题显示
subplot(224); % 子图定位
imshow(P3,[],'InitialMagnification','fit'); % 显示重构PSF
title('Reconstructed true PSF'); % 图像标题显示
WEIGHT = edge(I,'sobel',0.07); % 图像边缘显示
se = strel('disk',2);
WEIGHT = 1-double(imdilate(WEIGHT,se));
WEIGHT([1:3 end-[0:2]],:) = 0;
WEIGHT(:,[1:3 end-[0:2]]) = 0;
figure;imshow(WEIGHT);title('Weight array');
[J P] = deconvblind(Blurred,INITPSF,30,[],WEIGHT); % 图像复原
figure; % 新建窗口
imshow(J); % 显示处理后的图像
title('Deblurred Image'); % 设置图像标题
P1 = 2;
P2 = 2;
FUN = @(PSF) padarray(PSF(P1+1:end-P1,P2+1:end-P2),[P1 P2]);
[JF PF] = deconvblind(Blurred,OVERPSF,30,[],WEIGHT,FUN); % 图像复原
figure; % 新建窗口
imshow(JF); % 显示处理后的图像
title('Deblurred Image'); % 去模糊图像
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -