paper 42 :图像的小波变换
关于小波变换我只是有一个很朴素了理解。不过小波变换可以和傅里叶变换结合起来理解。
傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数。
小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数。
不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性。
小波变换步骤:
1.把小波w(t)和原函数f(t)的开始部分进行比较,计算系数C。系数C表示该部分函数与小波的相似程度。
2.把小波向右移k单位,得到小波w(t-k),重复1。重复该部知道函数f结束.
3.扩展小波w(t),得到小波w(t/2),重复步骤1,2.
4.不断扩展小波,重复1,2,3.
我这里使用的haar小波,缩放函数是[1 1],小波函数是[1 -1]。是最简单的小波了。
先看看分解的效果,这次我选用了大图:
尺度为2的全分解小波包:
下面是matlab代码:
main.m
clear all;
close all;
clc;
img=double(imread('Lena (2).jpg'));
[m n]=size(img);
[LL LH HL HH]=haar_dwt2D(img); %当然dwt2(img,'haar')是一样的,我只是想明白细节
img=[LL LH;HL HH]; %一层分解
imgn=zeros(m,n);
for i=0:m/2:m/2
for j=0:n/2:n/2
[LL LH HL HH]=haar_dwt2D(img(i+1:i+m/2,j+1:j+n/2)); %对一层分解后的四个图像分别再分解
imgn(i+1:i+m/2,j+1:j+n/2)=[LL LH;HL HH];
end
end
imshow(imgn)
haar_dwt2D.m
function [LL LH HL HH]=haar_dwt2D(img)
[m n]=size(img);
for i=1:m %每一行进行分解
[L H]=haar_dwt(img(i,:));
img(i,:)=[L H];
end
for j=1:n %每一列进行分解
[L H]=haar_dwt(img(:,j));
img(:,j)=[L H];
end
%本来分解不应该加mat2gray的,不过为了有好的显示效果就加上了
LL=mat2gray(img(1:m/2,1:n/2)); %行列都是低频
LH=mat2gray(img(1:m/2,n/2+1:n)); %行低频列高频
HL=mat2gray(img(m/2+1:m,1:n/2)); %行高频列低频
HH=mat2gray(img(m/2+1:m,n/2+1:n)); %行列都是高频
end
haar_dwt.m
function [L H]=haar_dwt(f) %显然,我没有做边界处理,图片最好是2^n*2^n型的
n=length(f);
n=n/2;
L=zeros(1,n); %低频分量
H=zeros(1,n); %高频分量
for i=1:n
L(i)=(f(2*i-1)+f(2*i))/sqrt(2);
H(i)=(f(2*i-1)-f(2*i))/sqrt(2);
end
end
参考来源:
http://amath.colorado.edu/courses/5720/2000Spr/Labs/Haar/haar.html
http://www.cs.ucf.edu/~mali/haar/
http://wenku.baidu.com/view/7839b821aaea998fcc220eed.html
paper 42 :图像的小波变换的更多相关文章
- paper 54 :图像频率的理解
我一直在思考一个问题,图像增强以后,哪些方面的特征最为显著,思来想去,无果而终!翻看了一篇知网的paper,基于保真度(VIF)的增强图像质量评价,文章中指出无参考质量评价,可以从三个方面考虑:平均梯 ...
- Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
原文:Win8 Metro(C#)数字图像处理--2.42图像光照效果算法 [函数名称] 图像光照效果 SunlightProcess(WriteableBitmap src,int X,in ...
- paper 14 : 图像视觉领域部分开源代码
做图像处理,没有一定的知识储备是不可能的,但是一定要学会“借力打力”,搜集一些很实用的开源代码,你们看看是否需要~~ 场景识别: SegNet: A Deep Convolutional Encode ...
- 【DWT笔记】傅里叶变换与小波变换
[DWT笔记]傅里叶变换与小波变换 一.前言 我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图.脑电图.地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到 ...
- Paper藐小之处明察秋毫故时有物外之趣
暂且针对第一篇叶脉提取的paper 插入图像的"图 N": 英 Times New Roman, 中 宋体, 10磅. 文末的引文: 两端对齐. 流程图框格内文字换行时, 忌: 将 ...
- Pedestrian Attributes Recognition Paper List
Pedestrian Attributes Recognition Paper List 2018-12-22 22:08:55 [Note] you may also check the upda ...
- OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...
- 跟我学Python图像处理丨何为图像的灰度非线性变换
摘要:本文主要讲解灰度线性变换,基础性知识希望对您有所帮助. 本文分享自华为云社区<[Python图像处理] 十六.图像的灰度非线性变换之对数变换.伽马变换>,作者:eastmount . ...
- 车牌识别LPR(六)-- 字符分割
第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...
随机推荐
- oracle变量的定义和使用【转】
在程序中定义变量.常量和参数时,则必须要为它们指定PL/SQL数据类型.在编写PL/SQL程序时,可以使用标量(Scalar)类型.复合(Composite)类型.参照(Reference)类型和LO ...
- yii2.0框架中session与cookie的用法
我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用 function actionS1(){ echo $t ...
- SQLAlchemy 一对多
下述範例描述了電影同導演的多對一關係.範例中說明了從用戶定義的Python類建立數據表的方法,雙方關係例項的建立方法,以及最終查詢數據的方法:包括延遲載入和預先載入兩種自動生成的SQL查詢. 結構定義 ...
- AC自动机算法详解
首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一.一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章, ...
- Fatal error: Cannot redeclare tran() (previously declared in
解决方法如下: 1.你该段源码里面是不是有include 或者require 之类的包含其他文件函数 包含的文件里已经有 函数 nw() 的定义 而这段代码里又有nv()的定义 所以出现redecla ...
- Introduction to Project Management(II)
Introduction The purpose of this paper is to gain an understanding of project management and to give ...
- Ubuntu 14.04安装OpenCV 3.1
从OpenCV官网上下载OpenCV官网上下载OpenCV的未编译源代码: 点击这里 国内很多网络打开OpenCV官网速度缓慢,可以点击如下地址直接从GitHub上下载OpenCV 3.1的源代码 下 ...
- TTL和CMOS
reprint from:http://blog.csdn.net/hemeinvyiqiluoben/article/details/9253249 TTL和COMS电平匹配以及电平转换的方法 一. ...
- iOS NSDate计算时间间隔
//获取开始时间 NSDate* tmpStartData = [NSDate date]; /*( 执行代码段 )*/ ; i<; i++) { DLog(@"%d",i) ...
- shell脚本编程-循环(for、while、until)
for命令格式:– list参数:迭代中要用的一系列值– 每个迭代中,变量var会包含列表中的当前值– do和done语句之间输入的命令可以是一条或多条标准的bash shell命令 1 2 3 ...