MATLAB实现模糊的图像变清晰

news/2025/12/26 3:38:34/文章来源:https://www.cnblogs.com/I989809/p/19353422

在MATLAB中,有多种方法可以让模糊的图像变清晰

方法类型 核心函数/工具 适用场景 关键点
盲反卷积 deconvblind 未知模糊原因的图像,同时估计点扩散函数(PSF)和复原图像 初始PSF尺寸估计很重要 ;可指定权重数组抑制振铃 。
非盲反卷积 deconvwnr, deconvlucy, deconvreg 已知或能估计出点扩散函数(PSF) 的情况 逆滤波对噪声敏感;Lucy-Richardson迭代效果较好。
深度学习 预训练网络或自定义网络(如GANs) 大量数据,复杂模糊,追求高质量复原 需要大量模糊-清晰图像对训练 。
逆滤波 fft2, ifft2, deconvwnr 理论理解,无噪或低噪声的理想模糊情况 实际应用受限,噪声放大明显 。

下面我们重点探讨表格中提及的两种主要方法:盲反卷积和基于深度学习的图像去模糊。

使用盲反卷积处理未知模糊

当你不清楚图像模糊的具体原因(比如不知道是相机抖动还是散焦),可以尝试盲反卷积。MATLAB提供了 deconvblind 函数 ,它能在不知道点扩散函数(PSF) 的情况下,通过迭代同时估计PSF和复原图像 。

一个典型的工作流如下

  1. 读取图像并模拟模糊:为了演示,我们通常先模拟一个模糊过程。

    I = imread('cameraman.tif');
    % 创建一个高斯滤波器作为点扩散函数来模拟模糊
    PSF = fspecial('gaussian',7,10);
    Blurred = imfilter(I,PSF,'symmetric','conv');
    
  2. 初始PSF估计:提供一个初始的PSF估计(比如一个小的矩形或高斯形状)作为起点。初始PSF的尺寸对结果影响很大,尺寸偏差可能导致复原图像出现明显振铃效应 。

    % 示例:创建一个与真实PSF大小相同的初始估计
    UNDERPSF = ones(size(PSF)-4); %  undersized PSF
    OVERPSF = padarray(UNDERPSF,[4 4],'replicate','both'); % oversized PSF
    INITPSF = padarray(UNDERPSF,[2 2],'replicate','both'); % 正确大小的PSF
    % 使用正确大小的INITPSF进行去模糊
    [J3,P3] = deconvblind(Blurred,INITPSF);
    
  3. 处理振铃效应:振铃效应常出现在强度对比强烈的区域和图像边界 。可以通过指定权重数组(WEIGHT) 来抑制,权重数组标明了图像中应重点处理或忽略的区域 。

    % 通过边缘检测和形态学操作创建权重数组
    WEIGHT = edge(Blurred,'sobel',0.08);
    se = strel('disk',2);
    WEIGHT = 1 - double(imdilate(WEIGHT,se));
    % 将图像边界的权重设为0,抑制边界振铃
    WEIGHT([1:3 end-(0:2)],:) = 0;
    WEIGHT(:,[1:3 end-(0:2)]) = 0;
    
  4. 对PSF附加约束:可以通过函数句柄 FUN 对每次迭代估计的PSF附加约束(如归一化、非负性)。

    % 例如,定义一个函数来裁剪PSF的边界
    P1 = 2; P2 = 2;
    FUN = @(PSF) padarray(PSF(P1+1:end-P1,P2+1:end-P2),[P1 P2]);
    
  5. 执行盲反卷积:组合以上要素,调用 deconvblind 函数。

    % 使用权重数组和约束函数,并进行30次迭代
    [J,P] = deconvblind(Blurred,INITPSF,30,[],WEIGHT,FUN);
    

使用深度学习进行图像去模糊

深度学习,特别是生成对抗网络(GANs),在处理复杂模糊(如运动模糊)方面表现出色 。深度学习方法的核心是通过大量模糊-清晰图像对训练一个神经网络模型,让模型学习从模糊图像到清晰图像的映射关系

在MATLAB中,你可以:

  1. 使用预训练网络:如果有合适的预训练去模糊网络,可以加载并使用。
  2. 训练自己的网络:这需要:
    • 数据集:准备大量成对的模糊和清晰图像 。
    • 网络结构:选择或设计合适的网络结构,如DeblurGAN系列 。
    • 损失函数:结合像素级损失(如L1损失)、感知损失(如基于VGG特征)和对抗损失进行训练 。
    • 训练:在MATLAB中利用深度学习工具箱配置训练选项并进行训练。

参数与技巧

无论用哪种方法,以下几点对获得好结果至关重要:

  • 点扩散函数(PSF)的估计:这是非盲反卷积成功的关键。PSF描述了图像模糊的方式。对于运动模糊,可以用 fspecial('motion', len, theta);对于高斯模糊,可以用 fspecial('gaussian', hsize, sigma)
  • 抑制振铃效应
    • 使用 edgetaper 函数对图像边缘进行预处理,可以有效减少由离散傅里叶变换引入的振铃效应 。
    • 在盲反卷积中,权重数组(WEIGHT) 是抑制振铃的有力工具 。
  • 噪声处理:许多反卷积算法会放大噪声。
    • deconvblinddeconvlucy 中,可以通过 dampar 参数来抑制噪声放大,该参数会阻尼与噪声水平相比变化较小的像素的迭代 。
    • deconvreg 函数则通过正则化参数来平衡图像平滑度和数据保真度。
  • 迭代次数:对于迭代算法(如 deconvlucydeconvblind),迭代次数太少会导致复原不足,太多则可能引入伪影。通常需要尝试 。

综合示例:盲反卷积

这里提供一个结合了上述技巧的盲反卷积综合示例 :

% 读取原始图像
I = imread('cameraman.tif');
figure; imshow(I); title('Original Image');% 模拟运动模糊
PSF_true = fspecial('motion', 21, 11);
Blurred = imfilter(I, PSF_true, 'conv', 'circular');
figure; imshow(Blurred); title('Blurred Image');% 初始PSF估计(大小与真实PSF相同)
initialPSF = ones(size(PSF_true));% 创建权重数组以抑制边界振铃
weight = edge(Blurred, 'sobel', 0.08);
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');% 使用盲反卷积去模糊
iterations = 30;
[J, recoveredPSF] = deconvblind(Blurred, initialPSF, iterations, [], weight);% 显示去模糊结果和复原的PSF
figure; 
subplot(1,2,1); imshow(J); title('Deblurred Image');
subplot(1,2,2); imshow(recoveredPSF, []); title('Recovered PSF');

参考代码 matlab图像去模糊代码 www.3dddown.com/cna/80284.html

评估去模糊效果

评估去模糊效果至关重要。除了主观视觉判断,还可以用客观指标:

  • PSNR(峰值信噪比):值越高,通常表示图像质量越好,与原始图像越接近。
  • SSIM(结构相似性指数):比PSNR更符合人眼视觉感知。

在MATLAB中,可以调用 psnrssim 函数来计算这些指标。

图像去模糊是一个反复试验和调整参数的过程。建议你从示例代码开始,逐步调整参数并观察效果。

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

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

相关文章

年终汇报新思路:领导真正关心的四个关键层面

又到年底,最近团队里几个年轻同事拿着几十页的年终总结来找我,问:“领导,我今年做的项目全列上了,您看还有没有遗漏?” 我扫了一眼——密密麻麻的表格、堆成山的截图、流水账式的功能列表。只好无奈地笑笑:“先…

使用深度操作系统下载JDK并配置环境变量(deepin 25 + openJDK-25 )

环境OS:Deepin v25.0.9 JDK:open jdk-25.0.1+8 JVM:hotspot部署JDK开始前更新deepin系统环境sudo apt update && sudo apt dist-upgrade -y下载JDK并移动到要安装的位置(/opt)OpenJDK25U-jdk_x64_linux_h…

转行网络安全:零基础小白的 3 个月入门学习计划(附资源清单)

转行网络安全:零基础小白的 3 个月入门学习计划(附资源清单) 引言 不少零基础同学想踏入网络安全行业,却因 “不知从哪学”“担心学不会” 望而却步。本文结合行业入门标准,整理出 3 个月可落地的学习计划&#xff0c…

Mapbox GL JS 核心表达式:`get` 完全教程

get 是 Mapbox GL JS 表达式系统中最基础、最常用的核心表达式之一,其核心作用是安全地获取属性值——既可以从地图要素(Feature)的 properties 字段取值,也可以从自定义对象取值;若目标属性不存在,会返回 …

编程等级考试哪个值得考?从内容导向和实用性角度判断

编程等级考试哪个值得考?从内容导向和实用性角度判断核心观点编程考级应被视为学习的里程碑,而非功利工具。它帮助孩子建立清晰目标,通过第三方评估查漏补缺,强化逻辑思维与抗压能力,并为综合素质评价增添分量。选择考…

滑台模组的安装

一 安装与调试安装平台与固定确保安装平台具有足够刚度与稳定性,以减小运行中的抖动与共振;尽量增大模组底座与平台的接触面积。安装台面平整度建议不低于0.05 mm/500 mm,高精密场合建议小于0.02 mm/500 mm。安装前清理平台异物、毛刺。固定螺…

论文重复比例超过30%?五个有效降重方案,让你顺利达标

"最新研究数据揭示,气候变暖与极端气象事件的发生频率呈现明显的正相关关系,这一发现为全球环境变化的影响提供了有力证据。" 首先,咱们聊聊人工降重的基本功 人工降重可不是简单换换词就行,它需要一点技巧和耐心。核…

AutoGPT能否用于自动生成培训材料?企业内训提效

AutoGPT能否用于自动生成培训材料?企业内训提效 在企业数字化转型的浪潮中,培训体系的响应速度正成为组织竞争力的关键指标。新员工入职周期不断压缩,业务系统频繁迭代,而传统的培训内容生产方式却依然依赖讲师手动整理文档、拼接…

论文查重率高于30%?掌握这五个高效方法,迅速达到合格标准

论文重复率过高时,采用AI工具辅助改写是高效解决方案之一,通过智能重组句式结构、替换同义词和调整语序,能在保持原意基础上显著降低重复率,例如将"研究表明气候变化导致极端天气增加"改写为"最新数据分析证实全球…

告别低效推理:vLLM连续批处理技术实战解析

告别低效推理:vLLM连续批处理技术实战解析 在大模型应用如火如荼的今天,一个看似简单的问题却困扰着无数工程师:为什么用户发个问题要等好几秒才能收到回复?明明GPU峰值算力没跑满,显存也还有空余,吞吐量却…

祛斑用什么精华靠谱?2025 国妆特字认证祛斑产品,淡斑口碑名列前茅 - 资讯焦点

进入秋冬季节,肌肤不仅要应对换季带来的屏障脆弱问题,前期日晒遗留的色素沉着、痘印反复,以及初老纹路加深等困扰也愈发凸显,“美白淡斑+痘印修护+抗衰紧致”成为多数人的护肤核心目标,相关搜索量在近两月持续走高…

从Anaconda迁移到Miniconda:节省70%磁盘空间的科学计算方案

从Anaconda迁移到Miniconda:节省70%磁盘空间的科学计算方案 在数据科学和机器学习项目日益复杂的今天,一个常见的痛点浮出水面:为什么我的笔记本才装了两个环境就快满了?为什么 CI/CD 流水线总是在“安装依赖”阶段卡住十分钟&…

纯镍旋塞阀有哪些结构优势?

纯镍旋塞阀凭借其独特的结构设计,在耐腐蚀性、密封性、操作便捷性和维护性等方面展现出显著优势,尤其适用于高温、强腐蚀等苛刻工况。以下是其核心结构优势的详细分析:一、双道沟槽密封环设计:零泄漏保障 动态密封机制 阀体进出口…

Qwen3-VL-8B图文生成实战:打造会‘看’的应用程序

Qwen3-VL-8B图文生成实战:打造会“看”的应用程序 在电商平台上,用户上传一张运动鞋的照片,系统不仅能识别出品牌和颜色,还能自动生成一句文案:“这是一双白色为主、带有蓝色条纹的跑鞋,侧面有明显Logo设计…

MATLAB实现基于几何均值分解(GMD)的混合预编码

在MATLAB中实现基于几何均值分解(GMD)的混合预编码,能有效平衡毫米波MIMO系统的频谱效率、误码率及实现复杂度。 GMD混合预编码核心原理 在毫米波大规模MIMO系统中,混合预编码通过减少所需射频链路的数量来降低硬件…

【必看收藏】RLHF:解锁大语言模型潜力的三大关键步骤

RLHF是释放大语言模型潜力的关键技术,通过引入人类反馈使模型更符合人类价值观和偏好。它解决了传统监督微调方法无法融入人类价值观和处理主观判断的局限性。RLHF训练过程分为三步:收集人类反馈数据、训练奖励模型预测人类偏好、使用PPO算法微调大语言模…

Day2 2. A+B问题II -卡码网C++基础课

题目链接:2. A+B问题II题目描述 计算a+b,但输入方式有所改变。 输入描述 第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。 输出描述 对于输入的每对a和b,你需要在相应的行输出a、b的和。 如第二对a和b,对…

2025年反应釜厂家优质品牌指南:技术创新与品质之选 - 深度智识库

一、2025年反应釜行业发展趋势与选型核心标准 2025年中国反应釜市场规模已达190亿元,预计未来五年年均复合增长率将达11.3%,其中新能源材料、生物医药等高端领域需求增速显著,推动行业向智能化、绿色化、定制化加速…

速藏!程序员转大模型:小白也能懂的生存升级干货

如今的开发圈,“逆水行舟,不进则退”的焦虑感愈发明显——曾让我们安身立命的代码能力,正在被AI技术悄然重塑。尤其是深耕CRUD领域的开发工程师,更是直观感受到岗位需求的微妙变化,这个一度被奉为“铁饭碗”的方向&…

2025 年BI本地私有化部署厂商优选指南:企业知识库部署厂商全栈方案如何实现大模型内网落地 - 品牌2026

2025年,越来越多企业意识到数据的重要性,数字化转型不再是“选择题”而是“必答题”。但很多企业都面临一个难题:数据分散在不同系统里,整合起来又慢又麻烦,还担心数据外传泄露。这时候,BI本地私有化部署就成了好…