数字图像处理6:小波变换,图像复原和边缘检测

小波变换、图像复原、边缘检测

这一部分和上一节是连在一起的,里面的一些函数在上一篇文章中已经给出,这里不重复给出。
图像可以根据小波变换变换成四幅图像。四幅图像分别是近似图像,水平细节图像,垂直细节图像和对角线细节图像。通过对这四个分量的调整,可以进行图像的边缘处理或者噪声去除。下面是本次实验的实验思路。

设计思路

小波变换实验思路

小波变换的步骤如下:
步骤 1:本次实验使用正交归一化四阶对称小波 h_phi,首先,根据公式
hpsi(i) = (−1)(i − 1) ∗ hphi(9 − i) 。求出函数 h_psi,之后变可以翻转变换得到 h0 h1 g0 g1,得到上面四个函数之后,便可以开始进行卷积操作。

步骤 2:之后使用上面得到的函数,对图像的列进行分解,分别于 h0 和 h1 进行卷积,之后进行列的以二为基的下采样,得到中间图像。

步骤 3:之后对中间图像的行进行分解,同样分别两次使用 h0 和 h1 进行卷积,之后进行行的以二为基的下采样,这时我们得到了四张图像,这四张图像便是近似图像 im_M ,水平细节图像 im_H,垂直细节图像 im_V 和对角线细节图像 im_D。

图像复原实验思路

图像的直接复原就是,利用小波反变换得到原来的图像。下面是处理步骤:

步骤 1:分组 im_M 和 im_H 一组,im_V 和 im_D 一组。首先对每组进行以二为基的行上采样,使用线性插值算法,之后分别与 g0,g1 进行卷积计算,得到两幅中间图像 im_M 1 和 im_D1。

步骤 2:im_M 1 和 im_D1 进行以二为基的列上采样,使用线性插值算法,之后分别与 g0, g1 进行卷积计算,得到合成图像 im_B。

边缘检测实验思路

仿照书中的处理方法,将一次小波变换的四幅图像中的近似图形再次进行小波变换,得到 im_MM ,im_MH,im_MV ,im_MD,将 im_MM 其全部置为 0,之后进行两次小波反变换,得到边缘检测的处理图像。
对纵向的边缘检测,将 im_MM ,im_MH,im_H 全部置为 0,之后进行两次小波反变换,得到纵向的边缘检测。

代码

主函数
%% 运行 exp7_12.m 

clc;
clear;
close all;

%% 课本图 7.12
% 读取图片
im = imread('demo-2.tif');   % 原始图像 uint8

%% 函数h_phi的正交归一化四阶对称小波滤波器系数
h_phi = [0.0322 -0.0126 -0.0992 0.2979 0.8037 0.4976 -0.0296 -0.0758];
h_psi = zeros(1,8); 
for i = 1:1:8
    h_psi(i) = (-1)^(i-1) * h_phi(9-i);
end
i = 1:1:8;
h0(i) = h_phi(9-i);
h1(i) = h_psi(9-i);
g0(i) = h_phi(i);
g1(i) = h_psi(i);

%% 小波变换
[im_M,im_H,im_V,im_D] = my_dwt(im,h0,h1);

%% 小波反变换(图像复原)
im_B1 = my_idwt(im_M,im_H,im_V,im_D,g0,g1);

%% 图像边缘检测
[im_MM,im_MH,im_MV,im_MD] = my_dwt(im_M,h0,h1);
% 去除尺度图像
[M,N] = size(im_MM);
im_MM = zeros(M,N);
% 图像复原
im_M1 = my_idwt(im_MM,im_MH,im_MV,im_MD,g0,g1);
im_B2 = my_idwt(im_M1,im_H,im_V,im_D,g0,g1);

% 去除横向的小波图像
[M,N] = size(im_MH);
im_MH = zeros(M,N);
[M,N] = size(im_H);


% 图像复原
im_M1 = my_idwt(im_MM,im_MH,im_MV,im_MD,g0,g1);
im_B3 = my_idwt(im_M1,im_HX,im_V,im_D,g0,g1);

%% 图像归一化显示
im_M = uint8(255.0*(mat2gray(im_M)));
im_V = uint8(255.0*(mat2gray(im_V)));
im_H = uint8(255.0*(mat2gray(im_H)));
im_D = uint8(255.0*(mat2gray(im_D)));
im_B1 = uint8(255.0*(mat2gray(im_B1)));
im_B2 = uint8(255.0*(mat2gray(im_B2)));
im_B3 = uint8(255.0*(mat2gray(im_B3)))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值