• 小波指的是一种能量在...同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。 小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手...
            小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。
            图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。
            小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器。

    图像二维离散小波变换 :

            图像的二维离散小波分解和重构过程如下图所示,分解过程可描述为:首先对图像的每一行进行 1D-DWT,获得原始图像在水平方向上的低频分量 L 和高频分量 H,然后对变换所得数据的每一列进行 1D-DWT,获得原始图像在水平和垂直方向上的低频分量 LL、水平方向上的低频和垂直方向上的高频 LH、水平方向上的高频和垂直方向上的低频 HL 以及水平和垂直方向上的的高频分量 HH。重构过程可描述为:首先对变换结果的每一列进行以为离散小波逆变换,再对变换所得数据的每一行进行一维离散小波逆变换,即可获得重构图像。由上述过程可以看出,图像的小波分解是一个将信号按照低频和有向高频进行分离的过程,分解过程中还可以根据需要对得到的 LL 分量进行进一步的小波分解,直至达到要求。

                                                                                图1. 图像二维离散小波变换

    展开全文
  • 01 小波变换原理 所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。 相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值...

                                                                               01 小波变换原理  

    所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。

    相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。举一些小波的例子:

    可以看到,能量集中在x轴0值附近,以y轴的0值为基线,上下两个区域的波形面积相等。

    众所周知,图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。

    小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器,

    这里我们以一个图像的横向一维为例,讲讲小波的分解与还原,采用的是Haar小波做分解:

    图像原始像素矩阵:[6 4 8 7 5 9 3 2]

    分解低通滤波器:[ 1  1]/sqrt(2)

    分解高通滤波器:[-1 1]/sqrt(2)

    1. 用低通滤波器与原始像素矩阵做卷积得:[8 10 12 15 12 14 12 5]/sqrt(2)

    下采样得:[10 15 14 5]/sqrt(2)    ----->L

    2. 用高通滤波器与原始像素矩阵做卷积得:[-4 2 -4 1 2 -4 6 1]/sqrt(2)

    下采样得:[2 1 -4 1]/sqrt(2)    ----->H

    上例为一维情况,二维情况在做完横向滤波之后再进行纵向滤波即可。

    逆变换过程:

    重构低通滤波器:[1  1]/sqrt(2)

    重构高通滤波器:[1 -1]/sqrt(2)

    1. 对L数组插值得:[0 10 0 15 0 14 0 5]/sqrt(2)

    再用低通滤波器做卷积得:[10 10 15 15 14 14 5 5]/2

    2. 对H数组插值得:[0 2 0 1 0 -4 0 1]/sqrt(2)

    再用高通滤波器做卷积得:[2 -2 1 -1 -4 4 1 -1]/2

    两个数组求和得:[6 4 8 7 5 9 3 2] ,矩阵被还原了。

    二维图像信号

    对于二维图像信号,可以用分别在水平和垂直方向进行滤波的方法实现二维小波多分辨率分解。图2.5为经过二维离散小波变换的分解后子图像的划分。其中:

    (l) LL子带是由两个方向利用低通小波滤波器卷积后产生的小波系数,它是图像的近似表示。

    (2) HL子带是在行方向利用低通小波滤波器卷积后,再用高通小波滤波器在列方向卷积而产生的小波系数,它表示图像的水平方向奇异特性。(水平子带)

    (3) LH子带是在行方向利用高通小波滤波器卷积后,再用低通小波滤波器在列方向卷积而产生的小波系数,它表示图像的垂直方向奇异特性。(垂直子带)

    (4) HH子带是由两个方向利用高通小波滤波器卷积后产生的小波系数,它表示图像的对角边缘特性。(对角子带)

     (第一个字母表示列方向的处理,第二个字母表示行方向的处理,图像的奇异特性通过低通时保留,通过高通时被滤除)

    小波去噪方法也就是寻找从实际信号空间到小波函数空间的最佳映像,以便得到原信号的最佳恢复。

    目前,小波去噪的方法大概可以分为三大类:

    第一类方法(小波变换模极大值去噪法)是利用小波变换模极大值原理去噪,即根据信号和噪声在小波变换各尺度上的不同传播特性,剔除由噪声产生的模极大值点,保留信号所对应的模极大值点,然后利用所余模极大值点重构小波系数,进而恢复信号;

    第二类方法(小波系数相关性去噪法)是对含噪信号作小波变换之后,计算相邻尺度间小波系数的相关性,根据相关性的大小区别小波系数的类型,从而进行取舍,然后直接重构信号;

    第三类方法(小波变换阈值去造法)是小波阈值去噪方法,该方法认为信号对应的小波系数包含有信号的重要信息,其幅值较大,但数目较少,而噪声对应的小波系数是一致分布的,个数较多,但幅值小。

    这里主要主要小波阀值收缩去噪法:

    小波阀值去噪的基本思想:Donoho提出的小波阀值去噪的基本思想是将信号通过小波变换(采用Mallat算法)后,信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。其基本步骤为:

     

    (1)分解:选定一种层数为N的小波对信号进行小波分解;

    (2)阀值处理过程:分解后通过选取一合适的阀值,用阀值函数对各层系数进行量化;

    (3)重构:用处理后的系数重构信号。

                                                       02 小波阀值去噪的基本问题

    小波阀值去噪的基本问题包括三个方面:小波基的选择,阀值的选择,阀值函数的选择。

    (1)小波基的选择:通常我们希望所选取的小波满足以下条件:正交性、高消失矩、紧支性、对称性或反对称性。但事实上具有上述性质的小波是不可能存在的,因为小波是对称或反对称的只有Haar小波,并且高消失矩与紧支性是一对矛盾,所以在应用的时候一般选取具有紧支的小波以及根据信号的特征来选取较为合适的小波。

    (2)阀值的选择:直接影响去噪效果的一个重要因素就是阀值的选取,不同的阀值选取将有不同的去噪效果。目前主要有通用阀值(VisuShrink)、SureShrink阀值、Minimax阀值、BayesShrink阀值等。

    (3)阀值函数的选择:阀值函数是修正小波系数的规则,不同的反之函数体现了不同的处理小波系数的策略。最常用的阀值函数有两种:一种是硬阀值函数,另一种是软阀值函数。还有一种介于软、硬阀值函数之间的Garrote函数。

    另外,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(RMSE)来判断。

    附小波分解与重构图像的matlab程序

    
    clc;
    clear;
    % 装载图像
    load woman;
    % X包含载入的图像
    % 绘制原始图像
    figure(1);
    subplot(2,2,1);
    image(X);
    colormap(map);
    title('原始图像');
    % 使用sym5对X进行尺度为2的分解
    [c,s] = wavedec2(X,1,'sym5');
    % 从小波分解结构[c,s]进行尺度为1和2时的低频重构
    a1 = wrcoef2('a',c,s,'sym5',1); 
    a2 = wrcoef2('a',c,s,'sym5',1); 
    
    % 绘制尺度为1时的低频图像
    subplot(2,2,3);
    image(a1);colormap(map);
    title('尺度为1时的低频图像');
    % 绘制尺度为2时的低频图像
    subplot(2,2,4);
    image(a2);colormap(map);
    title('尺度为2时的低频图像');
    % 从小波分解结构[c,s]在尺度为2时重构高频
    % 'h' 是水平方向
    % 'v' 是垂直方向
    % 'd' 是对角方向
    hd2 = wrcoef2('h',c,s,'sym5',1); 
    vd2 = wrcoef2('v',c,s,'sym5',1); 
    dd2 = wrcoef2('d',c,s,'sym5',1);
    % 绘制高频图像
    figure(2);
    subplot(2,2,1);
    image(hd2);colormap(map);
    title('尺度为2时的水平高频图像');
    subplot(2,2,2);
    image(vd2);colormap(map);
    title('尺度为2时的垂直高频图像');
    subplot(2,2,3);
    image(dd2);colormap(map);
    title('尺度为2时的对角高频图像');
    subplot(2,2,4);
    image(hd2+dd2+vd2+a1);colormap(map);
    % 验证这些图像的长度都是sX
    sX = size(X)
    sa1 = size(a1)
    shd2 = size(hd2)
    norm(hd2+dd2+vd2+a1-X)

     

     

    展开全文
  •   从傅里叶变换到短时傅里叶变换再到小波变换,这些分析问题的方法是一代一代人的探索和积累得来的宝贵知识财富。比较常见的还有脊波变换,曲波变换,轮廓波变换。感觉一种方法弄懂了,在以后很有可能会再次用到。...

    前言

      从傅里叶变换到短时傅里叶变换再到小波变换,这些分析问题的方法是一代一代人的探索和积累得来的宝贵知识财富。比较常见的还有脊波变换,曲波变换,轮廓波变换。感觉一种方法弄懂了,在以后很有可能会再次用到。就像这次,本来本科毕设已经用到了小波变换和轮廓波变换,但是自己并没有把它完全弄懂,结果这次课程作业还是要重新看。。。虽然这一次也还是没搞懂。。这里主要记录MATLAB小波包中的函数的用法而已,也只记录了二维离散小波在图像分解和重构上的应用,小波变换好多基本概念自己还是没理解。

    正题

    图1图1
      二维离散小波变换最常见的应该是上面的图了。首先要明白,进行小波分解后得到的是一个低频分量和3个高频分量。其中LL1代表低频分量,HL1、HH1和LH1代表高频分量,后面的1代表是第一级分解。也经常用A(低频分量)、H(水平方向高频分量)、V(垂直方向高频分量)、D(对角线方向高频分量)来表示。

    wavedec2(X,N,‘wname’)

    例:[c,s]=wavedec2(X,2,'haar');
      这个函数就是将一幅图像X分解成小波系数存入c中,其中N代表分解的级数,wname代表所用的小波基函数。s 记录了每一级分解时各个小波系数的size,如下图,size记录的其实就是最开始那个图上,HH1,HH2,HH3…的边长,也就是像素大小。s最后一行是原始图像的大小。
    在这里插入图片描述

    detcoef2(O,C,S,N)

    例:[H1,V1,D1] = detcoef2('all',c,s,1);
      将c里面的高频系数重组成矩阵形式,参数N代表对第N级的分解系数进行操作。此函数只能重组高频系数,H1为水平方向,V1为垂直方向,D1为对角线方向。

    appcoef2(C,S,‘wname’,N)

    例:A2 = appcoef2(c,s,'haar',2);
      将c里面的低频系数重组成矩阵形式,N代表第几级分解。

    wrcoef2(‘type’,C,S,‘wname’,N)

    例:X_A2 = wrcoef2('a',c,s,'sym5',1)
      通过第N级分解的低频系数或高频系数重构图像。其中type是代表选择的是系数A,V,H,D中的哪一个进行重构。

    X = waverec2(C,S,‘wname’)

    例:waverec2(c_Recon1,s,'haar')
      直接通过c里面的所有系数来重构图像,但这里一般会将c里面部分系数置0,然后再重构图像。如果不置0的话,不就相当于重构回来的就是原来一模一样的图像了吗。
    下面是一个简单的图像重构的程序,先看一下部分图像
    在这里插入图片描述在这里插入图片描述在这里插入图片描述下面是代码

    %% 小波分解与重构
    clear;clc;close all;
    X = imread('standard_lena.bmp');
    % figure,imshow(X);
    [c,s]=wavedec2(X,2,'haar');%对图像X进行4级小波分解,分解得到的系数存到c,s是记录各个级系数的size
    %其实感觉这里可以把排序,从大到小,当然是H,D,A,V各排各的。在重构时,丢系数时从后面往前丢。
    
    [H1,V1,D1] = detcoef2('all',c,s,1);%将c里面的系数重组成矩阵形式,参数1代表对第一级的分解系数进行操作。都是高频系数,代表边缘
    % A1 = appcoef2(c,s,'haar',1);%一级分解低频系数
    [H2,V2,D2] = detcoef2('all',c,s,2);%将c里面的系数重组成矩阵形式,参数1代表对第一级的分解系数进行操作。都是高频系数,代表边缘
    A2 = appcoef2(c,s,'haar',2);%二级分解低频系数
    
    X_A2 = wrcoef2('a',c,s,'sym5',1); %通过二级分解后的低频系数重构图
    X_H1 = wrcoef2('h',c,s,'sym5',1); 
    X_V1 = wrcoef2('v',c,s,'sym5',1); 
    X_D1 = wrcoef2('d',c,s,'sym5',1); 
    X_H2 = wrcoef2('h',c,s,'sym5',2); 
    X_V2 = wrcoef2('v',c,s,'sym5',2); 
    X_D2 = wrcoef2('d',c,s,'sym5',2); 
    
    %% 保存各级分解重构图片
    figure(1);imshow(X_A2,[]);saveas(1,'picture/lena_A2.bmp');
    figure(2);imshow(X_H1,[]);saveas(2,'picture/lena_H1.bmp');
    figure(3);imshow(X_V1,[]);saveas(3,'picture/lena_V1.bmp');
    figure(4);imshow(X_D1,[]);saveas(4,'picture/lena_D1.bmp');
    figure(5);imshow(X_H2,[]);saveas(5,'picture/lena_H2.bmp');
    figure(6);imshow(X_V2,[]);saveas(6,'picture/lena_V2.bmp');
    figure(7);imshow(X_D2,[]);saveas(7,'picture/lena_D2.bmp');
    %% 图像重构
    c_RemainPortion = 0.05;%保留字带的系数所占百分比
    c_end = s(1,1)^2+round((length(c)-  s(1,1)^2)*c_RemainPortion);%在将系数c的后面部分设为0时,要考虑c的最前面是低频分量,是不可以去掉的;
    c_Recon1 =zeros(1,length(c));
    c_Recon1(1:c_end) = c(1:c_end);
    X_Recon1 = uint8(waverec2(c_Recon1,s,'haar'));
    figure(8);imshow(X_Recon1,[]);title('保留系数5%');saveas(8,'picture/lena_Recon1.bmp');
    
    c_RemainPortion = 0.1;%保留字带的系数所占百分比
    c_end = s(1,1)^2+round((length(c)-  s(1,1)^2)*c_RemainPortion);%在将系数c的后面部分设为0时,要考虑c的最前面是低频分量,是不可以去掉的;
    c_Recon2 =zeros(1,length(c));
    c_Recon2(1:c_end) = c(1:c_end);
    X_Recon2 = uint8(waverec2(c_Recon2,s,'haar'));
    figure(9);imshow(X_Recon2,[]);title('保留系数10%');saveas(9,'picture/lena_Recon2.bmp');
    
    c_RemainPortion = 0.2;%保留字带的系数所占百分比
    c_end = s(1,1)^2+round((length(c)-  s(1,1)^2)*c_RemainPortion);%在将系数c的后面部分设为0时,要考虑c的最前面是低频分量,是不可以去掉的;
    c_Recon3 =zeros(1,length(c));
    c_Recon3(1:c_end) = c(1:c_end);
    figure(10);X_Recon3 = uint8(waverec2(c_Recon3,s,'haar'));
    figure(9);imshow(X_Recon3,[]);title('保留系数20%');saveas(9,'picture/lena_Recon3.bmp');
    
    %% 计算熵和信噪比
    entropy(X);
    entropy(X_Recon1)
    MSE1 = mean(mean(X-X_Recon1).^2);
    PSNR1 = 20*log10(double(255/MSE1))
    entropy(X_Recon2)
    MSE2 = mean(mean(X-X_Recon2).^2);
    PSNR2 = 20*log10(double(255/MSE2))
    entropy(X_Recon3)
    MSE3 = mean(mean(X-X_Recon3).^2);
    PSNR3 = 20*log10(double(255/MSE3))
    
    
    
    展开全文
  • 最近在看物体识别论文摘要,好多论文中涉及到使用离散余弦傅里叶变换DFT(Discrete Fourier Transform)对图像进行处理,因此特地看了这部分的内容,傅里叶变换和小波变换。一、DFT的原理:以二维图像为例,归一化的...

    最近在看物体识别论文摘要,好多论文中涉及到使用离散余弦傅里叶变换DFT(Discrete Fourier Transform)对图像进行处理,因此特地看了这部分的内容,傅里叶变换和小波变换。

    一、DFT的原理:

    以二维图像为例,归一化的二维离散傅里叶变换可以写成如下形式:


    其中f(x,y)表示图像的空间域的值,而F表示频域的值,傅里叶转换的结果为复数,这也表明,傅里叶变换其实是一副实数图像和虚数图像叠加或幅度图像和相位图像叠加的结果,在实际的图像处理算法中,仅有幅度图像能够用得到,因为其包含了图像的所有几何结构信息。但是如果想通过修改幅度图和相位图来修改原空间图像,需保留幅度图和相位图来进行傅里叶变换,从而得到修改后的图像。

    在频域里面,高频部分代表了图像边缘、线条以及纹理等细节信息,低频部分代表了图像的轮廓信息。在这里首先介绍下空间域和频率域:

    空间域:

    一般情况下,空间域的图像为f(x,y),形象一点就是一个二维矩阵,每个坐标对应一个颜色值。

    频率域:

    频率:对于图像来说,可以指图像颜色值的梯度,即灰度级的变化速度。

    幅度:频率的权,即该频率所占的比例。

    二、代码实现与效果

    #include<iostream>
    #include<opencv2/core/core.hpp>
    #include<opencv2/highgui/highgui.hpp>
    #include<opencv2/imgproc/imgproc.hpp>
    using namespace std;
    using namespace cv;
    int main()
    {
    	//(1)读取原图像
    	Mat src = imread("101200.jpg",0);
    	if (!src.data)
    	{
    		cout << "Reading image error!" << endl;
    		return false;
    	}
    	imshow("src",src);
    	//(2)将输入图像扩展到最佳尺寸,将添加的像素扩展为0
    	int m = getOptimalDFTSize(src.rows);
    	int n = getOptimalDFTSize(src.cols);
    	Mat padded;
    	copyMakeBorder(src,padded,0,m-src.rows,0,n-src.cols,BORDER_CONSTANT,Scalar::all(0));//扩充图像边界
    	//(3)为傅里叶变换的结果(实部和虚部)分配存储空间
    	//将planes数组合并成一个多通道的数组complexI
    	Mat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(),CV_32F)};
    	Mat complexI;
    	merge(planes,2,complexI);
    	//(4)离散傅里叶变换
    	dft(complexI,complexI);
    	//(5)将复数转换为幅值,即=> log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2))
    	split(complexI, planes); // 将多通道数组complexI分离成几个单通道数组,planes[0] = Re(DFT(I), planes[1] = Im(DFT(I))
    	magnitude(planes[0], planes[1], planes[0]);//planes[0] = magnitude
    	Mat magnitudeImage = planes[0];
    	//(5)进行对数尺度(logarithmic scale)缩放
    	//由于幅度范围太大,不适合在屏幕显示。为了在屏幕显示,用对数尺度来替换线性尺度M1=log(1+M)
    	magnitudeImage += Scalar::all(1);//转换到对数尺度
    	log(magnitudeImage, magnitudeImage);//求自然对数
    	//(6)剪切和重分布幅度图象限
    	/*
    	剔除第二步添加的像素。重分布是把四个象限的四张图像拼接到一起
    	*/
    	//若有奇数行或奇数列,进行频谱裁剪      
    	magnitudeImage = magnitudeImage(Rect(0, 0, magnitudeImage.cols & -2, magnitudeImage.rows & -2));
    	//重新排列傅立叶图像中的象限,使得原点位于图像中心  
    	int cx = magnitudeImage.cols / 2;
    	int cy = magnitudeImage.rows / 2;
    	Mat q0(magnitudeImage, Rect(0, 0, cx, cy));  //roi区域的左上
    	Mat q1(magnitudeImage, Rect(cx, 0, cx, cy));  //roi区域的右上
    	Mat q2(magnitudeImage, Rect(0, cy, cx, cy));  //roi区域的左下
    	Mat q3(magnitudeImage, Rect(cx, cy, cx, cy)); //roi区域的右下
    	//交换象限(左上与右下进行交换)
    	Mat tmp;
    	q0.copyTo(tmp);
    	q3.copyTo(q0);
    	tmp.copyTo(q3);
    	//交换象限(右上与左下进行交换)
    	q1.copyTo(tmp);
    	q2.copyTo(q1);
    	tmp.copyTo(q2);
    	//(7)归一化,用0到1之间的浮点值将矩阵变换为可视的图像格式
    	/*
    	幅度值仍然超过可显示范围[0,1],normalize()归一化后可以显示
    	*/
    	normalize(magnitudeImage, magnitudeImage, 0, 1, NORM_MINMAX); 
    	//【9】显示效果图
    	imshow("dft", magnitudeImage);
    	//逆变换
    	Mat _complexim;
    	complexI.copyTo(_complexim);//把变换结果复制一份,进行逆变换,也就是恢复原图
    	Mat iDft[] = { Mat::zeros(planes[0].size(), CV_32F), Mat::zeros(planes[0].size(), CV_32F) };//创建两个通道,类型为float,大小为填充后的尺寸
    	idft(_complexim, _complexim);//傅立叶逆变换
    	split(_complexim, iDft);//结果貌似也是复数
    	magnitude(iDft[0], iDft[1], iDft[0]);//分离通道,主要获取0通道
    	normalize(iDft[0], iDft[0], 1, 0, CV_MINMAX);//归一化处理,float类型的显示范围为0-1,大于1为白色,小于0为黑色
    	imshow("idft",iDft[0]);
    	waitKey(0);
    	return 0;
    }

    实现结果:


    二、小波变换

    # include<opencv2/opencv.hpp>
    # include<iostream>
    
    using namespace std;
    using namespace cv;
    
    int main()
    {
    	Mat img = imread("101200.jpg", 0);
    	int Height = img.cols;
    	int Width = img.rows;
    	int depth = 1;    //定义分解深度,也就是几级分解
    	int depthcount = 1;
    	Mat tmp = Mat::ones(Width, Height, CV_32FC1);//CV_32FC1表示32位float,这在32位编译器上是32位float,也就是单精度。CV_64FC1在32位编译器上是64位float,也就是双精度。
    	Mat wavelet = Mat::ones(Width, Height, CV_32FC1);
    	Mat imgtmp = img.clone();
    	imgtmp.convertTo(imgtmp, CV_32FC1);
    	while (depthcount <= depth){
    		Width = img.rows / depthcount;
    		Height = img.cols / depthcount;
    		for (int i = 0; i < Width; i++)
    		{
    			for (int j = 0; j < Height / 2; j++)
    			{
    				tmp.at<float>(i, j) = (imgtmp.at<float>(i, 2 * j) + imgtmp.at<float>(i, 2 * j + 1)) / 2;//整体信息
    				tmp.at<float>(i, j + Height / 2) = (imgtmp.at<float>(i, 2 * j) - imgtmp.at<float>(i, 2 * j + 1)) / 2;//细节信息
    			}
    		}
    		for (int i = 0; i < Width / 2; i++)
    		{
    			for (int j = 0; j < Height; j++)
    			{
    				wavelet.at<float>(i, j) = (tmp.at<float>(2 * i, j) + tmp.at<float>(2 * i + 1, j)) / 2;//整体信息
    				wavelet.at<float>(i + Width / 2, j) = (tmp.at<float>(2 * i, j) - tmp.at<float>(2 * i + 1, j)) / 2;//细节信息
    			}
    		}
    		imgtmp = wavelet;
    		depthcount++;
    	}
    	wavelet.convertTo(wavelet, CV_8UC1);
    	wavelet += 100;            //图像暗度过低,所以这里我加了50
    	imshow("小波变换", wavelet);
    	waitKey(0);
    	return 0;
    }

    实现效果:

    .

    展开全文
  • 小波变换与图像、图形处理技术-孙延奎
  • 这段时间发布了不少小波图像处理的专题文章,是时候整理一下了,这篇文章作为一个导航页面,给出各个专题文章的连接,方便大家阅读!一、小波入门简介(1)小波分析的起源、发展应用...

     
    这段时间发布了不少小波图像处理的专题文章,是时候整理一下了,这篇文章作为一个导航页面,给出各个专题文章的连接,方便大家阅读!


    一、小波入门简介

    (1)小波分析的起源、发展与应用
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/09/1876282.aspx

    (2)感受小波
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/02/1864195.aspx

    二、小波变换与信号分解重构专题

    (1)小波变换与信号分解重构
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/09/1876329.aspx

    (2)自己动手编写小波信号分解与重构的Matlab程序
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/13/1881781.aspx

    (3)用自编的程序实现小波图像分解与重构
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/13/1881940.aspx

    三、小波图像融合专题

    (1)小波图像融合综述
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/14/1883889.aspx

    (2)小波图像融合的Matlab实现示例
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/16/1888808.aspx

    四、小波图像压缩专题

    (1)基于小波变换的图像压缩技术初探
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/12/1881231.aspx

    (2)零树小波图像压缩专题
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/15/1886395.aspx

    (3)嵌入式小波零树(EZW)算法的过程详解和Matlab代码
    http://blog.csdn.net/chenyusiyuan/archive/2007/11/29/1907584.aspx

    (4)多级树集合分裂(SPIHT)算法的过程详解与Matlab实现
    http://blog.csdn.net/chenyusiyuan/archive/2007/12/07/1923334.aspx

    (5)讨论:一种基于状态位图的SPIHT改进算法
    http://blog.csdn.net/chenyusiyuan/archive/2007/12/11/1930419.aspx

    展开全文
  • 原文地址:小波变换图像处理中的应用作者:茉莉清茶小波变换图像处理中的应用 一 小波图像去噪   图像在采集,转换和传输过程中常常受到成像设备和外部环境噪声干扰等影响产生噪声。小波去噪是利用小波变换中...
  • 图像处理-小波变换

    2019-08-10 18:01:16
    同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波.....
  • 1)尽管傅立叶变换自上世纪50年代以来一直是变换域图像处理的基石,但90年代出现的一种新的变换(小波变换)成为一种新的流行信号处理工具。 2)傅立叶变换(其基础函数是正弦曲线)不同,小波变换基于一些称作小波...
  • 图像小波变换

    2015-10-27 18:13:44
     相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它傅里叶波一样是正交波。  举一些小波的例子: 可以看到,能量集中在x轴0值附近,以y轴的0值...
  • 小波变换图像处理

    2015-11-15 13:04:30
    应用小波变换图像处理 图像金字塔,每一层的像素数为(2^i,2^j):图像金字塔基本操作 对一张图像不断的模糊之后向下采样,得到不同分辨率的图像,同时每次得到的 新的图像宽高是原来图像的1/2,...
  • 注:本文成于2017年12月,是《小波变换与图像处理》的课程作业 摘要雾天天气对户外场景图像会造成严重损害,表现为光照不均,色彩饱和度低,细节和对比度差,进而造成图像质量的退化,影响进一步的人眼分辨和机器...
  • 小波变换下的图像对比度增强技术实质上是通过小波变换图像信号分解成不同子带,针对不同子带应用不同的算法来增强不同频率范围内的图像分量,突出不同尺度下的近似和细节,从而达到增强图像层次感的目的。...
  • 4.Experiment Steps Result and Conlusion:1、了解各种小波性质2、观察各种小波函数及其尺度函数3、获得小波滤波器4、二维小波变换函数重构函数5、查看及处理小波系数6、用小波变换进行图像压缩边缘提取【附录...
  • 小波变换在数字图像处理中的应用是小波变换典型的应用之一。由信号分析中傅里叶变换的不足引出小波变 换, 然后简单介绍了小波变换的定义和种类, 分析了小波变换的性质和 Mallat 算法, 总结了小波变换在数字图像处理...
  • 基于小波变换图像修复浅析   摘要 ...基于小波变换图像去噪是图像去噪的主要方法之一,本文主要介绍了小波变换的一些基本理论,涉及小波的定义,及基于小波变换的在图像修复的应用。   关
  • 内容完全转载: 小波理论的基本概念及概述(第二版) 欢迎阅读此份关于小波变换的入门教程。小波变换是一个相对较新的概念(其出现大约是在20世纪...换言之,大多数介绍小波变换的文献对那些小波新手们来说用处不
  • 第十二章 小波变换 目录 1 引言 2 连续小波变换 3 二进小波变换 3.1 Haar变换 4 离散小波变换 4.1 多分辨率分析 4.2 快速小波变换算法 4.3 离散小波变换的设计 4.4 二维离散小波变换 4.5 双...
  • 图像融合:基于小波变换图像融合
  • 小波变换是多尺度多分辨率的分解方式,可以将噪声和信号在不同尺度上分开。 小波图像去噪处理 clear; [A,map]=imread('lenna.jpg'); X=rgb2gray(A); %画出原始图像 subplot(2,2,1);imshow(X); title('原始...
1 2 3 4 5 ... 20
收藏数 25,478
精华内容 10,191
关键字:

小波变换与图像处理