MATLAB实现图像去模糊

news/2025/11/12 9:55:09/文章来源:https://www.cnblogs.com/theissky/p/19212573

一、算法

1. 维纳滤波去模糊(已知PSF)

% 读取模糊图像
img = imread('blurred.jpg');
gray_img = rgb2gray(img);
img = im2double(gray_img);% 定义PSF(运动模糊示例)
LEN = 28; % 模糊长度
THETA = 14; % 模糊角度
PSF = fspecial('motion', LEN, THETA);% 维纳滤波参数估计
K = 0.001; % 噪声功率估计
deblurred = deconvwnr(img, PSF, K);% 显示结果
figure;
subplot(1,2,1); imshow(gray_img); title('原始模糊图像');
subplot(1,2,2); imshow(deblurred); title('维纳滤波去模糊');

关键参数

  • K:噪声功率估计(需通过实验调整)
  • PSF:点扩散函数(需根据模糊类型选择)

2. 盲卷积去模糊(未知PSF)

% 初始化模糊核
initPSF = ones(size(PSF))/numel(PSF);% 盲卷积迭代
numIter = 10; % 迭代次数
deblurred = deconvblind(img, initPSF, numIter);% 显示模糊核估计
figure;
subplot(1,2,1); imshow(initPSF); title('初始PSF');
subplot(1,2,2); imshow(deconvblind(img, initPSF, numIter)); title('估计PSF');

优化技巧

  • 使用edgetaper减少边缘振铃效应
  • 结合拉格朗日乘数优化约束条件

3. Retinex理论去模糊

function output = singleScaleRetinex(img, sigma)% 高斯卷积估计光照分量illumination = imgaussfilt(img, sigma);% 对数域处理logImg = log(img + 0.01);logIllum = log(illumination + 0.01);% 反射分量恢复output = exp(logImg - logIllum);
end% 多尺度Retinex实现
sigmas = [15, 80, 250];
weights = [0.3, 0.3, 0.4];
msrImg = zeros(size(img));
for i = 1:numel(sigmas)msrImg = msrImg + weights(i) * singleScaleRetinex(img, sigmas(i));
end
msrImg = mat2gray(msrImg);

参数建议

  • 小尺度(σ=15):保留纹理细节
  • 大尺度(σ=250):抑制光照不均

二、运动模糊处理方案

1. 运动模糊建模

% 生成运动模糊PSF
LEN = 30; % 运动长度
THETA = 45; % 运动角度
PSF = fspecial('motion', LEN, THETA);% 添加高斯噪声
noisyImg = imnoise(imfilter(img, PSF, 'conv'), 'gaussian', 0, 0.001);

2. 维纳滤波恢复

% 噪声功率估计
noiseVar = var(noisyImg(:) - img(:));
K = noiseVar / var(img(:));
deblurred = deconvwnr(noisyImg, PSF, K);

三、应用

1. 车牌模糊恢复

% 读取模糊车牌图像
img = imread('car_plate.jpg');
% 预处理:直方图均衡化
img_eq = histeq(img);
% 维纳滤波去模糊
PSF = fspecial('gaussian', [5 5], 1);
deblurred = deconvwnr(img_eq, PSF, 0.001);

2. 医学图像增强

% 读取X光图像
img = imread('xray.png');
% Retinex处理
msrImg = multiScaleRetinex(img, [15,80,250]);
% 后处理:非局部均值去噪
denoised = nlmfilt(msrImg);

参考代码 matlab图像去模糊代码 www.youwenfan.com/contentcsl/80284.html

四、常见问题解决方案

1. 运动模糊角度估计

% 频谱分析法定位运动方向
img_fft = fftshift(fft2(img));
angle = angle(img_fft(:,:,1)); % 取第一个通道
theta = rad2deg(angle);

2. 模糊核自动估计

% 基于频域特征估计PSF
[Pxx, Pyy] = freqz2(PSF);
f = fft2(img);
K_est = sqrt(Pxx.*conj(f(:,:,1)).^2 + Pyy.*conj(f(:,:,2)).^2);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/963048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win11安装五笔输入法

Win11安装五笔输入法1 windows>设置>时间和语言->语言和区域>选项 2 找到: 键盘>添加键盘>微软五笔3 安装完毕5 可以使用

revit api 获取导入的cad图形的位置

revit api 获取导入的cad图形的位置foreach (RevitLinkInstance element in linkInstances) {var transform = element.GetTransform(); //<==获取相对位置关系var location = transform.Origin; //<==原点 }

家庭相册私有化:Immich+cpolar构建你的数字记忆堡垒 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年实木全屋定制公司权威推荐榜单:全屋定制加盟/全屋定制十大品牌/全屋定制加盟源头公司精选

在消费升级与家居需求多元化的推动下,实木全屋定制行业正迎来高速发展期,具有原木质感、环保特性与个性化设计的产品日益受到市场青睐。 据行业数据显示,2025年中国实木定制家居市场规模预计将达到千亿级别,年复合…

插板法 笔记

我是 baka。 \(n\) 个完全相同的物品放进 \(m\) 个盒子中,每个盒子至少放一个,求方案数。 考虑插板分开盒子,空隙有 \(n-1\) 个,故 \(\binom {n-1} {m-1}\)。 设每个盒子有 \(a_i\) 个物品,相当于 \(\sum a_i = n…

2025年正式整理5款免费在线客服系统软件

2025年正式整理5款免费在线客服系统软件 在客户体验至上的今天,一个高效、稳定的在线客服系统是企业连接用户、提升转化、塑造品牌形象的关键工具。对于初创团队、中小型企业或个人开发者而言,在控制成本的前提下,…

【URP】Unity[后处理]色调分离SplitToning

Split Toning(色调分离)是Unity URP后处理中用于对图像阴影和高光区域分别进行颜色校正的效果,通过独立控制阴影和高光的色调来创造独特的视觉风格。以下是详细解析: 核心功能与用途 ‌视【从UnityURP开始探索游戏…

详细介绍:5-4〔OSCP ◈ 研记〕❘ SQL注入攻击▸基于 UNION 的SQLi

详细介绍:5-4〔OSCP ◈ 研记〕❘ SQL注入攻击▸基于 UNION 的SQLi2025-11-12 09:45 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !i…

npm yarn pnpm 区别

pnpm、npm、yarn三者是前端常用的包管理器,那么他们有什么区别呢? npm(Node Package Manager) npm是Node.js的默认包管理器。自Node.js发布以来,npm就一直作为它的一个组成部分存在,因此,安装Node.js时也会自动安…

第七届智能控制、测量与信号处理国际学术会议 (ICMSP 2025)

第七届智能控制、测量与信号处理国际学术会议 (ICMSP 2025) 2025 7th International Conference on Intelligent Control, Measurement and Signal Processing (ICMSP 2025) 第七届智能控制、测量与信号处理国际学术会…

文档内容比对桌面软件V2.2.0(新增详细报告输出)

一.简介 功能: 1.支持文本、word、excel、PDF(含扫描件)、图片等格式的内容比对 2.支持比对后的相似度等的统计 二.界面 修改: 1.界面重构,分为两栏 2.增加差异和相似度统计 主界面: 导出的html比对报告,增加相…

C#语言中使用using关键字的介绍

在 C# 语言中,“using”关键字被用于不同的上下文和目的,它的用法大体上可以被分为三类:导入命名空间、简化资源管理和提供别名。 首先,"using"关键字最常见的用途是导入命名空间。这在 C# 程序中非常普…

matplotlib 中文显示异常的修复方法

这个问题很常见 问题原因 1. 字体缓存污染 matplotlib 在第一次运行时创建字体缓存,如果之前有错误的字体配置或损坏的缓存,会导致后续所有绘图都使用错误的字体设置。 2. 缓存不更新 即使你后来添加了正确的中文字体…

P2490 [SDOI2011] 黑白棋 笔记

前置知识:K-Nim 游戏。 由于白棋和黑棋交错放并且只能向中间走,相邻的两个白黑棋中间的格子数即可看作一堆石子。 问题转换为:有 \(N=n-k\) 个完全相同的物品,\(M=\frac k 2\) 个不同的盒子,把若干个物品放进盒子…

深入解析:OpenAI推出即时支付功能,ChatGPT将整合电商能力|技术解析与行业影响

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年卧式数控车床优质厂家推荐排行榜单

2025年卧式数控车床优质厂家推荐排行榜单前言随着制造业的快速发展,卧式数控车床作为精密加工的核心设备,其性能和质量直接影响着生产效率和产品质量。为帮助广大用户选择合适的设备供应商,我们特别整理了2025年度卧…

【machine learning】COVID-19 daily cases prediction - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【开题答辩全过程】以 北京房屋租赁数据分析与可视化为例,包含答辩的问题和答案 - 教程

【开题答辩全过程】以 北京房屋租赁数据分析与可视化为例,包含答辩的问题和答案 - 教程2025-11-12 09:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important;…

phpMyAdmin Docker 容器化部署指南

phpMyAdmin是一款用PHP编写的免费开源工具,旨在通过Web界面管理MySQL和MariaDB数据库。它支持数据库管理、表操作、用户权限配置等多种功能,同时提供SQL语句直接执行能力,是Web开发者和数据库管理员的常用工具。概述…