#就很固执#对上一篇的退化图像的最小二乘方滤波

数字图像学笔记 —— 17. 图像退化与复原(自适应滤波之「最小二乘方滤波」) 总之,约束最小二乘方滤波是一种非常强大的图像修复技术,它可以通过仅依赖于均值和方差的约束条件来估计未知的退化函数,并从退化的图像中恢复出尽可能接近原始图像的图像。对于上述图片来说,存在很明显的退化,而且我们也没有办法回到过去拍一张高清的照片,所以要想让照片得到修复,获得较好的视觉感受,维纳滤波在这里就无法使用了。维纳滤波(Wiener Filter),虽然是一种非常强大的退化图像还原算法,但是从实验过程我们也发现它存在着致命的缺陷,那就是要求输入退化系统的。,这是因为退化函数的总能量应该保持不变。 阅读详情

最小二乘方算法写得头疼,头绪很足但是效果不尽人意,希望记录下来日后常进行思考。


还是只谈干货

原理简单一提


退化模型的得出是从基本原理推导出一个数学模型的结果,假设图像在平面进行运动,通过对时间间隔内瞬时曝光量进行积分得到曝光总数,再通过傅里叶变换求出传递函数H。

约束最小二乘方滤波的核心是H对噪声的敏感问题,通过建立约束条件形成方程并求解得出最佳滤波方案,并可以迭代优化求解最优参数。


想做到的事情是:

  • 利用所给H(u,v)公式和原图手动做出a=0.1,b=0.1,T=1时的运动退化图像(不使用自带fspecial函数)
  • 对运动退化图像加一定的高斯噪声,并利用约束最小二乘方法进行滤波处理,目的得到“原图”。
  • 在进行滤波过程中,使用手动设定gama和迭代求出最优gama两种方法。
    clc,clear;
    [I,map]=imread('im.bmp'); % 原始图像X数据类型为uint8
    f=double(rgb2gray(I));
    [M,N]=size(f);
    % imshow(X,[]);title('ImageOrg.bmp');
    H = zeros(M,N);
    T=1;
    a=0.1;
    b=0.1;
    for i = 1:M
       for k = 1:N
           ii=i-M/2+0.000001;
           kk=k-N/2+0.000001;
           H(i,k) = (T/(pi*(ii*a+kk*b))) * sin(pi*(ii*a+kk*b))*exp(-j*pi*(ii*a+kk*b));
       end
    end
    F=fft2(f);
    F=fftshift(F);
    G=F.*H;
    g1=ifftshift(G);
    gg=ifft2(g1);
    ggg=abs(gg)/200;
    %gg=abs(g)/3;
    %imshow(ggg);title('result.bmp');
    %imwrite(ggg,'ims.bmp')
    %gsnoise
    noise_mean = 0;% 噪声均值
    noise_var = 0.00001;% 噪声方差
    GSnoisy = imnoise(ggg,'gaussian',...
        noise_mean, noise_var);% 加噪的运动模糊图像
    %%
    %约束最小二乘滤波
    %手动给gama赋值
    g=GSnoisy;
    %[g,map]=imread('ims.bmp');
    %g=double(rgb2gray(g));
    [M,N]=size(g);
    gama=0.00006;                  %手动赋值gama
    p=[0,-1,0;-1,4,-1;0,-1,0];   %p时域
    P=fft2(p,M,N);               %P频域
    G=fft2(g);
    Gs=fftshift(G);
    Fs=(conj(H).*Gs)./(abs(H).^2+gama*(abs(P).^2));
    f=ifft2(ifftshift(Fs));      %滤波结果(手动)
    figure(1)
    imshow((f));
    figure(2)
    imshow(ggg);
    
    
    %%
    %约束最小二乘滤波
    %自动迭代选取最优gama
    g=GSnoisy;
    G=fft2(g);
    Gs=fftshift(G)       %再写一遍防止出现混乱
    gap=1e-6;
    gama=1e-6;
    a=0.5;
    yita=M*N*(noise_mean^2+noise_var);
    iteration=0;
    while (true)
        iteration=iteration+1;
        if iteration>1000
            break;
        end
        Fs=(conj(H).*Gs)./(abs(H).^2+gama*(abs(P).^2));
        R=Gs-H.*Fs;
        r=ifftshift(R);
        r_=ifft2(r);
        rr=sum(sum(r_.^2));
        if rr<yita+a
            gama=gama+gap;
        elseif rr>yita+a
            gama=gama-gap;
        else
            gama=gama;
            break
        end
    end
    f=ifft2(ifftshift(Fs)); 
    figure(3)
    imshow(f);

    如果使用自带fspecial的H函数得到效果甚好,我猜是约束最小二乘方方法非常贴合fs函数的原理而不一定贴合冈萨雷斯里按照时域里积分对应到频域进行变换的方法,但是其运动退化去除效果还是很明显的,总之还是蛮玄学的,值得推敲的一个算法。

  • 下图是本文的效果图:

  • 退化:

  • 自己的H滤波(手动gama):

  • 自动gama:

  • 使用fspecial,滤波方法相同:

  •  

图像复原之约束最小二乘方滤波 图像复原,简单讲,就是恢复图像本来的面貌,但由于各种原因如图像采集过程中出现的误差导致得到的数字图像不清晰,不是我们人眼看到的实物场景那样,因此需要采取技术手段去除图像的不清晰。约束最小二乘方滤波就是其中一种较好的方法。在维纳滤波那一篇讲过,维纳滤波要求未退化图像和噪声的功率谱必须是已知的,通常这两个功率谱很难估计,尽管用一个常数去估计功率谱比,然而并不总是一个合适的解。约束最小二乘方滤波要求噪声 阅读详情

相关推荐

【图像复原】逆滤波、维纳滤波、最小二乘方滤波(代码实现与分析)

本篇博客聚焦用于图像复原技术的逆滤波、维纳滤波、最小二乘方滤波方法进行原理剖析、代码实现和结果总结,代码含有详细注释,希望帮助大家理解。以下将从图像复原概念、逆滤波、维纳滤波、最小二乘方滤波三个块题进行阐述,每一块题将分为实验原理、实验代码展示、实验结果分析三部分进行讲解。

wyr1849089774的博客 1万+

约束最小二乘方滤波去模糊

维纳滤波要求未退化图像和噪声功率谱已知。实际情景没有这么多先验知识。约束最小二乘滤波仅要求噪声方差和均值的知识。 g=Hf+ηg=Hf+\eta 假设g(x,y)的大小为M×NM\times N,g(x,y)g(x,y)第一行的图像元素构成向量gg的第一组NN个元素,第二行构成下一组NN个元素,结果向量MN×1MN\times 1维,矩阵HH有MN×MNMN\times MN维,这样转换增加了H

yuyangyg的博客 7772

约束的最小二乘方滤波详细讲解和代码 matlab

约束的最小二乘方滤波约束的最小二乘方图像复原公式推导算法实现步骤matlab 代码实现实验结果总结 约束的最小二乘方图像复原 维纳滤波图像复原技术是指除了要求了解关于退化系统的传递函数之外,还需要知道未退化图像的功率谱和噪声的功率谱,实际上比较困难。 本方法仅要求了解图像的噪声方差和均值,用有约束的最小二乘方图像复原技术进行图像的复原。 公式推导 算法实现步骤 (1)估计噪声的均值与方差 (1)设置迭代次数和精确度因子,设置时应从小到大逐步设定;选定一个初始值给γ,计算 (2)利用式(5.9-3

MARSHCW的博客 1万+

几个简单的数据点平滑处理算法

最近在写一些数据处理的程序。经常需要对数据进行平滑处理。直接用FIR滤波器或IIR滤波器都有一个启动问题,滤波完成后总要对数据掐头去尾。因此去找了些简单的数据平滑处理的方法。 在一本老版本的《数学手册》中找到了几个基于最小二乘法的数据平滑算法。将其写成了C 代码,测试了一下,效果还可以。这里简单的记录一下,算是给自己做个笔记。

Ivan 的专栏 16万+

最小二乘滤波(RLS)

采用matlab实现最小二乘滤波(RLS)算法功能,算法简洁

matlab最小二乘法滤波

matlab最小二乘法滤波 滤波 去噪 复原拉格朗日复原

【OpenCV 例程 300 篇】108. 约束最小二乘方滤波

约束最小二乘方滤波仅要求噪声方差和均值的知识或估计,这些参数通常可以由一幅给定的退化图像算出,因而具有更为广泛的应用。而且,维纳滤波是以最小化一个统计准则为基础,因此是平均意义上的最优,而约束最小二乘方滤波则对每幅图像都会产生最优估计。 与维纳滤波相比,最小二乘方滤波对于高噪声和中等噪声处理效果更好,对于低噪声二者处理结果基本相同。当手工选择参数以取得更好的视觉效果时,约束最小二乘方滤波的效果有可能比维纳滤波的效果更好。...

youcans的博客 4766

图像复原:逆滤波、维纳滤波、最小二乘滤波的实现

图像复原:逆滤波、维纳滤波、最小二乘滤波的实现

图像增强实战:空域滤波、频域滤波和退化恢复滤波器(附全部代码)

本文主要针对图片拍摄场景有雾气导致图片不清晰的情况,分别使用了三种方法:空域滤波、频域滤波和退化恢复滤波器对同一幅图片进行了增强处理,对三种方法的实验结果进行了对比,得出了一些结论。

m0_63859672的博客 2488

退化图像的逆滤波处理

此代码提供了一个matlab程序来实现By R.C.Gonzalez中描述的反滤波。 该程序基于500 * 500像素的图像,受大气湍流影响,其退化模型为高斯或高斯。 在程序中可以改变两个参数,该参数是H(i,j)的“exp”表达式中的第一个浮点数,其决定了高斯或高斯样退化模型函数---- H的方差。 另一个参数是可以在调用相同的代码中找到的阈值。 它改变图像处理范围的半径。

最小二乘方滤波_模糊图像复原_最小二乘方滤波_图像复原_

对有噪声模糊图像使用最小二乘方滤波方法进行复原重建。

opencv图像分析与处理(12)-逆滤波、维纳滤波、约束最小二乘方滤波和几何均值滤波

本节为opencv数字图像处理(10):图像复原与重建的第三小节,逆滤波、维纳滤波、约束最小二乘方滤波和几何均值滤波,主要包括:四种滤波复原图像的数学推导以及维纳滤波的C++实现。

kevin_zhao_zl的博客 5605

NLP实战:如何用CoNLL-2003数据集快速提升命名实体识别模型性能(附完整代码)

本文详细介绍了如何利用CoNLL-2003公开数据集,通过深度剖析数据特点、构建鲁棒的数据预处理流水线、选择合适的模型架构(如BERT-CRF)以及优化训练策略,来系统性地提升命名实体识别(NER)模型的性能。文章提供了完整的代码示例,并分享了处理数据不均衡、标签对齐等核心挑战的实战技巧,帮助读者从理论到实践全面掌握NER任务。

cola5的博客 494

滤波估计法(一)——最小二乘

最小二乘做预测

Hazel_HY的博客 2300

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解)

本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。

weixin_26905487的博客 553

psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究

[1]李亚楼,吴中习.Matlab模型接入PSASP暂态稳定计算模块的方法[J].电网技术,2008,32(19):31-36.Li Yalou,Wu Zhongxi.An Approach to Interface Matlab Model with PSASP Transient Stability Module [J].Power System Technology,2008,32(19):...

weixin_39636245的博客 1082

图像去模糊(约束最小二乘方滤波)

这是图像去模糊的第三篇,接着上节说道逆滤波对噪声特别敏感。约束最小二乘方滤波(Constrained Least Squares Filtering,aka Tikhonov filtration,Tikhonov regularization)核心是H对噪声的敏感性问题。减少噪声敏感新问题的一种方法是以平滑度量的最佳复原为基础的,因此我们可以建立下列

风吹夏天的专栏 4万+

告别同质化!用PyTorch Geometric手把手实现RGCN处理多关系图数据(附实战代码)

本文详细介绍了如何使用PyTorch Geometric实现关系图卷积网络(RGCN)处理多关系图数据,特别适用于社交网络分析、推荐系统等场景。通过实战代码演示了从数据加载、模型构建到训练优化的完整流程,帮助开发者高效处理异构图数据,提升模型性能。

weixin_30781433的博客 259

数字图像处理,图像复原2 图像滤波复原 系统退化函数估计 维纳滤波器 约束最小二乘方滤波器(正则化 稳定算子q) 均匀运动模糊图像 讲的比较随意粗糙 不是很懂

控制理论中的系统辨识过程 一定情况下满足精度 统计学的观点 公式推导就不要看了,这边的都是省略证明的 下面这个约束最小二乘方滤波器看得不是太懂 正则化方法 病态 噪声越...

Arthur_Holmes的博客 1031

华为OD新系统机试真题 - 端口流量统计

华为OD机试新系统真题【端口流量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统4月26号机试真题【端口流量统计】。

qq_45776114的博客 762

51、基于深度卷积神经网络的自闭症分类研究

本研究提出了一种基于深度卷积神经网络的自闭症分类方法,通过融合VGGNet-19和ResNet-52模型的特征,并在决策层采用SVM分类器,实现了对自闭症谱系障碍(ASD)和典型发育(TD)个体的准确区分。研究使用ABIDE数据集,结合数据增强和特征拼接技术,取得了88.12%的分类准确率和0.88的ROC曲线下面积。结果表明,该方法在自闭症自动诊断中具有良好的性能,同时研究也探讨了其局限性,并展望了未来改进方向,如多模态数据融合、迁移学习和模型可解释性的提升。

grpc6streamer的博客 129

SLAM学习笔记2:Kalman Filter(卡尔曼滤波) 与Least Square(最小二乘法) 的比较

从最优估计理论出发,针对当前广泛使用的Graph SLAM和经典的kalman filter SLAM,分析对比它们的异同点及原因。

调味瓶的技术宅梦想实现路 3万+

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5548

加权最小二乘(wls)滤波算法原理及实现

加权最小二乘滤波WLS(weighted least squares)加上双边滤波,引导滤波是三种较为经典的边缘保持性滤波算法,该算法最早见于论文:《Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation》中,原作者项目主页:http://www.cs.huji.ac.il/~danix/epd/,

满城风絮 4万+

【数据集】中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

中国大气污染物数据集CHAP(1km空间分辨率)-韦晶团队

WW、forever的博客 2595

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: 很多人想找找不到的2维DFT矩阵算法和手动Fspecial退化函数实现
下一篇: 图像处理黄金算子:Canny算子手写体!!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值