Matlab:盲反卷积还原失焦图像

简介: Matlab:盲反卷积还原失焦图像

输出结果

image.png



实现代码



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%       盲反卷积还原失焦图像             %

%                                       %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


I = imread('G:\BaiduNetdiskDownload\5.jpg');

I=rgb2gray(I)

PSF=fspecial('gaussian',7,30);

Blurred=imfilter(I,PSF,'symmetric','conv');  

figure;imshow(Blurred);title('失焦图像');  

UNDERPSF = ones(size(PSF)-4);

[J1 P1] = deconvblind(Blurred,UNDERPSF);

figure;imshow(J1);title('Deblurring with Undersized PSF');

 

OVERPSF = padarray(UNDERPSF,[4  4],'replicate','both');

[J2 P2] = deconvblind(Blurred,OVERPSF);

figure;imshow(J2);title('Deblurring with Oversized PSF');    

INITPSF = padarray(UNDERPSF,[2 2],'replicate','both');

[J3 P3] = deconvblind(Blurred,INITPSF);

figure;imshow(J3);title('Deblurring with INITPSF');  

 

figure;

subplot(221);imshow(P1,[],'InitialMagnification','fit');

title('重建 Undersized PSF');

subplot(222);imshow(P2,[],'InitialMagnification','fit');

title('重建 Oversized PSF');

subplot(223);imshow(P3,[],'InitialMagnification','fit');

title('重建  init PSF');  

 

WEIGHT = edge(I,'sobel',.3);  

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('复原图像');  

 

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('复原图像');  

displayEndOfDemoMessage(mfilename)  


相关文章
|
3月前
|
机器学习/深度学习 算法 数据可视化
通过深度学习和人脸图像进行年龄段估计matlab仿真
通过深度学习和人脸图像进行年龄段估计matlab仿真
|
3月前
|
存储 缓存 算法
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像双边滤波实现,包括tb测试文件和MATLAB辅助验证
|
1月前
|
机器学习/深度学习 算法 网络架构
基于yolov2深度学习网络的人脸检测matlab仿真,图像来自UMass数据集
**YOLOv2算法在MATLAB2022a中实现人脸检测:** 展示6个检测结果图,利用Darknet-19进行特征提取,网络每个网格预测BBox,包含中心偏移、尺寸、置信度和类别概率。多任务损失函数结合定位、置信度和分类误差。程序加载预训练模型,遍历图像,对检测到的人脸以0.15阈值画出边界框并显示。
|
2月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
3月前
|
机器学习/深度学习 算法 数据可视化
python/matlab图像去雾/去雨综述
python/matlab图像去雾/去雨综述
46 0
|
2月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
25 1
|
1天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
8天前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
10天前
|
算法 数据安全/隐私保护 计算机视觉
基于DCT变换的彩色图像双重水印嵌入和提取算法matlab仿真
**算法摘要:** - 图形展示:展示灰度与彩色图像水印应用,主辅水印嵌入。 - 软件环境:MATLAB 2022a。 - 算法原理:双重水印,转换至YCbCr/YIQ,仅影响亮度;图像分割为M×N块,DCT变换后嵌入水印。 - 流程概览:两步水印嵌入,每步对应不同图示表示。 - 核心代码未提供。
|
11天前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。

热门文章

最新文章