自适应方向提升小波去噪

本文介绍了自适应方向提升小波在图像去噪中的应用,重点讲解了2.3方向预测和3.1.1方向预测的细节。通过减少预测方向,可以提高程序效率,避免图像插值。正变换过程将图像分解为四个分量,方向预测则通过计算高频矩阵的二范数确定预测方向。
摘要由CSDN通过智能技术生成

提升小波与方向提升小波

标签(空格分隔): 算法学习


1、第二代提升小波

……(留在日后填写,原理以及实现细节,这里先直接贴程序吧)

2、自适应方向提升小波

2.1main函数

clear all;close all;clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%此文件主要实现一种简单的自适应方向小波去噪
%%基于第二代提升小波的预测和更新两个步骤
%%%%%%       调参数
%%%%%%
img_ori = double(imread('test.bmp'));%读入图像
if size(img_ori,3) == 3;
    img_ori = rgb2gray(img_ori);
end;
[img_rows,img_cols] = size(img_ori);
var_noise = 20;%噪声方差
img_noise = addNoise(img_ori,var_noise);%给图像加入高斯噪声
tic
%正变换
[LL,LH,HL,HH,dir_mat11,dir_mat12] = ADL97(img_noise,1);
[LL2,LH2,HL2,HH2,dir_mat21,dir_mat22] = ADL97(LL,2);
[LL3,LH3,HL3,HH3,dir_mat31,dir_mat32] = ADL97(LL2,3);
%系数处理
thr=sqrt(1*mean(abs(HH(:)))/0.6745)*sqrt(2*log(img_rows*img_cols));%%阈值计算
[LH,HL,HH]=softDe(LH,HL,HH,thr,1);
[LH2,HL2,HH2]=softDe(LH2,HL2,HH2,thr,2);
[LH3,HL3,HH3]=softDe(LH3,HL3,HH3,thr,3);
%反变换
LL2 = IADL97(LL3,LH3,HL3,HH3,dir_mat31,dir_mat32);
LL = IADL97(LL2,LH2,HL2,HH2,dir_mat21,dir_mat22);
out_img = IADL97(LL,LH,HL,HH,dir_mat11,dir_mat12);
toc
nois_PSNR = calcuPSNR(double(img_ori),double(img_noise));
recons_PSNR = calcuPSNR(double(img_ori),double(out_img));
imwrite(uint8(out_img),'recons.bmp');

2.2 ADL97正变换

function [LL,LH,HL,HH,dir_mat,dir_mat2] = ADL97(img,decom_level)
%%%      输入:待处理图像,分解级数
%%%      输出:小波分解系数LL,LH,HL,HH
%%%      提升小波系数: alfa: -1.586134342
%%%                   beta: -0.052980118
%%%                   gamma: 0.0882911075
%%%                   delta:0.443506852
%%%                   coef:1.230174105

%设置提升系数
alfa    = -1.586134342;
beta    = -0.052980118;
gamma   =  0.882911075;
delta   =  0.443506852;
coef     =  1.230174105;
%得到方向矩阵,大小与输入图像大小一致
dir_mat = getDirMat(img,1,decom_level);
% dir_mat = getDirMat2(img,1);


%% 接下来是97二代提升小波核心步骤   
%%%%%%%%%%%%%%%%%%============行变换   flag ==1 =================%%%%%%%%%%%
flag = 1;
%预测 step = 1
step =1;
img = singleLifting(img,flag,step,alfa,dir_mat);
%更新 step = 2
step =2;
img = singleLifting(img,flag,step,beta,dir_mat);
%预测 step = 1
step =1;
img = singleLifting(img,flag,step,gamma,dir_mat);
%更新 step = 2
step =2;
img = singleLifting(img,flag,step,delta,dir_mat);

%提取高频分量
high_freq = img(1:2:end,:)/coef;
%提取低频分量
low_freq = img(2:2:end,:)*coef;

%% 将提取到的高频分量再次进行上述步骤,得到HL,HH
%%%%%%%%%%%%%%%%%%============列变换   flag ==2 =================%%%%%%%%%%%
flag = 2;
%预测 step = 1
step =1;
high_freq =singleLifting(high_freq,flag,step,alfa);
%更新 step = 2
step =2;
high_freq = singleLifting(high_freq,flag,step,beta);
%预测 step = 1
step =1;
high_freq=singleLifting(high_freq,flag,step,gamma);
%更新 step = 2
step =2;
high_freq=singleLifting(high_freq,flag,step,delta);

%提取高频分量,HH
HH = high_freq(:,1:2:end)/coef;
%提取低频分量
HL = high_freq(:,2:2:end)*coef;

%% 再做一次方向预测,得到LL,LH;
dir_mat2 = getDirMat(low_freq,2,decom_level);
% dir_mat2 = getDirMat2(img,1);
%预测 step = 1
step =1;
low_freq = singleLifting(low_freq,flag,step,alfa,dir_mat2);
%更新 step = 2
step =2;
low_freq = singleLifting(low_freq,flag,step,beta,dir_mat2);
%预测 step = 1
step =1;
low_freq = singleLifting(low_freq,flag,step,gamma,dir_mat2);
%更新 step = 2
step =2;
low_freq = singleLifting(low_freq,flag,step,delta,dir_mat2);

%提取高频分量,LH
LH = low_freq(:,1:2:end)/coef;
LL = low_freq(:,2:2:end)*coef;
end

2.3方向预测

function dir_mat = getDirMat(img,flag,decom_level)
%%% 输入: 
%%%    img :待处理图像   double
%%%    flag: 处理步骤     flag==1, 当前处理为行操作    flag== 2,  当前处理为列操作
%%%    decom_levle:小波分解级数
%%%    blk_size: 窗内所有分解采用一个方向 初始定为16
%%% 输出:
%%%      dir_mat = 方向矩阵,大小与输入图像大小相同
blk_size =32;
win_size = blk_size/(2^(decom_level -1 ));%分块大小
%将整个图像分成大小为win*win的块进行计算
blk_img = getBlock(img,win_size);
[rows,cols] = size(blk_img);
for i = 1: rows
    for j =1:cols        
        dir_mat(i,j)=dir_est(blk_img{i,j},flag);
    end
end
[m,n] =size(dir_mat);

for i =1:m
 
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值