MATLAB---约束最小平方滤波
% 约束最小平方滤波
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
tic
[filename ,pathname]=...uigetfile({'*.bmp';'*.tif';'*.jpg';},'选择图片'); %选择图片路径
str=[pathname filename]; % 合成路径+文件名
im = imread(str); % 读图
noise_mean = 0; % 均值
noise_var =1e-3; % 方差
im = imnoise(im,'gaussian',noise_mean, noise_var); % 原图像 + 白噪声% 约束最小平方滤波
Xd = im2double(im);
HSIZE = [3 3]; % 模板窗口大小
SIGMA = 0.5; % 标准差
H = fspecial('gaussian',HSIZE,SIGMA);
noise_power = noise_var * prod(size(Xd)); % prod(size(Xd))=65536;噪声的功率
[Zd, LAGRA] = deconvreg_filter(im,H,noise_power); % 应用约束最小平方滤波figure('color',[1,1,1]),
subplot(121),imshow(im);title('原始图像')
colormap(jet) % 颜色
shading interp % 消隐
subplot(122),imshow(Zd,[]);title('约束最小平方滤波图像')
colormap(jet) % 颜色
shading interp % 消隐
toc
function [J, LAGRA] = deconvreg_filter(I,PSF,NP)
% 约束最小平方滤波器
%函数输入:
% I: 输入的二维图像矩阵
% PSF: 退化函数的空域模板
% NP: 表示噪声的功率
%函数输出:
% J: 约束最小平方滤波图像
% LAGRA: 可以为一个数值,表示指定约束最小平方的最佳复原参数y,
% 也可以为[min,max]形式,表示参数y的搜索范围
% 若此参数省略,则表示搜索范围为[1e-9,1e9] 。% 约束最小平方滤波
if ~isa(I,'double')I = double(I)/255;
end
LR = [1e-9 1e9]; % 复原参数搜索范围
% 求解输入图像维数
sizeI = size(I);
% PSF 矩阵
sizePSF = size(PSF);
% 输入图像的维数求解
numNSdim = find(sizePSF~=1);
NSD = length(numNSdim);
% 转化PSF函数到期望的维数 光传递函数OTF
otf = psf2otf(PSF,sizeI);
% regop:通过计算拉普拉斯算子计算图像的平滑性
% 具体见表达式(10.23)if NSD == 1,regop = [1 -2 1];else % 二维矩阵% 3x3 Laplacian matrixesregop = repmat(zeros(3),[1 1 3*ones(1,NSD-2)]);% center matrix of Laplacianidx = [{':'}, {':'}, repmat({2},[1 NSD-2])];regop(idx{:}) = [0 1 0;1 -NSD*2 1;0 1 0]; % 模板算子end
% regop =
% 0 1 0
% 1 -4 1
% 0 1 0% 改变REGOP折返回原始维数idx1 = repmat({1},[1 length(sizePSF)]);idx1(numNSdim) = repmat({':'},[1 NSD]);REGOP(idx1{:}) = regop;
% 转化PSF函数到期望的维数 光传递函数OTF
REGOP = psf2otf(REGOP,sizeI);fftnI = fftn(I);
R2 = abs(REGOP).^2;
H2 = abs(otf).^2;% 计算LAGRA值
if (numel(LR)==1) || isequal(diff(LR),0),% LAGRA is givenLAGRA = LR(1);
else % 采用fminbnd在[1e-9,1e9]优化,加速计算R4G2 = (R2.*abs(fftnI)).^2;H4 = H2.^2;R4 = R2.^2;H2R22 = 2*H2.*R2;ScaledNP = NP*prod(sizeI);LAGRA = fminbnd(@ResOffset,LR(1),LR(2),[],R4G2,H4,R4,H2R22,ScaledNP);
end;% 重构图像
Denom = H2 + LAGRA*R2;
Nomin = conj(otf).*fftnI;% 保证Denom中的最小值取为sqrt(eps)
Denom = max(Denom, sqrt(eps));
J = real(ifftn(Nomin./Denom)); % 取实部
endfunction f = ResOffset(LAGRA,R4G2,H4,R4,H2R22,ScaledNP)
% 计算反向卷积残差-留数计算
% Parseval's theorem
Residuals = R4G2./(H4 + LAGRA*H2R22 + LAGRA^2*R4 + sqrt(eps));
f = abs(LAGRA^2*sum(Residuals(:)) - ScaledNP);
end
MATLAB---约束最小平方滤波相关推荐
- matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...
由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...
- 自适应滤波-最小均方误差滤波
1.最小均方误差滤波原理 低通滤波不能像中值滤波那样很好的滤除冲激噪声.因为低通滤波的最终结果混合了图像信号无关的噪声和信号本身.相反,中值滤波能够在保护图像边缘不受损失的情况下,滤除与图像信号无关的 ...
- PCA--主成分分析(Principal components analysis)-最小平方误差解释
最小平方误差理论 假设有这样的二维样本点(红色点),回顾我们前面探讨的是求一条直线,使得样本点投影到直线上的点的方差最大.本质是求直线,那么度量直线求的好不好,不仅仅只有方差最大 ...
- XY的模式识别学习笔记-最小平方误差准则分类 MSE
最小平方误差准则分类 MSE 最小平方误差准则分类 定义 简单例题及Matlab代码实现 大三数学狗,记录一下学习过程. 最小平方误差准则分类 定义 对线性不可分的样本集,不等式组 a T y i & ...
- 基于matlab的语音信号滤波处理
基于matlab的语音信号滤波处理 摘要:本课程设计的主要目的是在MATLAB环境下,使用窗口设计法设计一个滤波器,并对语音信号进行滤波去噪.开发平台为MATLAB,设计方法为窗口设计法.用麦克风采集 ...
- matlab求最小范数解,python中计算最小范数解或伪逆解最精确的方法是什么?
我的目标是解决:Kc=y 对于伪逆(即最小范数解): ^{pr2}$ 这样模型(希望)是高次多项式模型f(x) = sum_i c_i x^i.我特别感兴趣的是我们有更多的多项式特征比数据(少方程太多 ...
- 最小平方误差判别 MSE
最小平方误差判别准则函数 对于上一节提出的不等式组: 在线性不可分的情况下,不等式组不可能同时满足.一种直观的想法就是,希望求一个a*使被错分的样本尽可能少.这种方法通过求解线性不等式组来最小化错分样 ...
- matlab最小错误率决策,利用MATLAB实现最小错误率贝叶斯判别
利用MATLAB实现最小错误率贝叶斯判别 摘要:matlab软件平台为用户提供了强大的科学计算与可视化功能,具有简单.易用的用户环境,尤其适合矩阵数据的计算处理.根据matlab的特点,将其与模式识别 ...
- 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...
图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...
最新文章
- android开发我的新浪微博客户端-登录页面功能篇(4.2)
- select子查询多个字段_SQL复杂查询
- 【Android 系统开发】 Android 系统启动流程简介
- MSDE 1433端口
- 大疆口袋云台存储卡_让拍摄更加安心,大疆无人机与口袋相机的存储卡选择:东芝M303E...
- 2021浙江英语高考成绩查询,2021浙江高考英语试卷难度如何
- 安卓开发入门到精通!免费Android高级工程师学习资源,系列篇
- 电脑有回声_电脑连接麦克风有回音怎么办?麦克风回声的解决方法
- 招博后,比利时鲁汶大学 A2H 部计算机视觉动物行为分析方向
- 面试官:Spring代理目标bean时为何通过TargetSource类型对目标bean封装?
- 【layUI时间控件使用】:按钮显示时间并放到输入框
- VMware出现“该虚拟机似乎正在使用中”问题
- 转载《五大免费采集器哪个好,火车头,海纳,ET,三人行,狂人采集 》
- 机器学习(7)——支持向量机(二):线性可分支持向量机到非线性支持向量机
- 单片机线选法存储印象(地址范围)方法+例题
- MacOS 的任务管理器
- 机器学习之K-Means
- 【在线工具】常用在线工具集合
- 从Excel中解救你!如何用Python实现报表自动化
- js中唤醒弹框的3种方式