小波变换

小波分析

小波变换分成两个大类:离散小波变换(DWT) 和连续小波转换(CWT)。两者的主要区别在于,连续变换在所有可能的缩放和平移上操作,而离散变换采用所有缩放和平移值的特定子集。所有小波变换可以视为时域频域表示的形式,所以和调和分析相关。

应用

1.影像分割
影像分割可以定义为,将影像分成若干个区域,而这些像素组成区域必须为各个类似的像素所连结而成.
临界值法: 主要是靠设定临界值,来去区分物体与背景.
区域法: 将影像分为若干个子区域,这些子区域有相连性
边界法: 借由求影像梯度大小,来找出正确影像边界的方法
边缘法: 利用一阶导数的大小来侦测出边缘所在的位置,之后再使用一阶导数的方向将小的边缘连结成边界的方法.
借由小波转换的方法,将原始的影像,经过特定的小波转换的技巧后, EX: symlets wavelet, 滤除掉噪声,并且 对X轴方向做一次小波转换,对Y轴方向做一次小波转换,之后采用影像分割的方法,提高影像分割的精确度.
2.影像压缩
原始的图形资料 -> 色彩模式的转换 -> DCT转换 -> 量化器 -> 编码器 -> 压缩完成
算法细节参考小波压缩。
3.边缘侦测
4.音乐信号分析
5.遥测影像分析
6.生物医学信号分析:心电图 (Electrocardiography) 与脑波图 (Electroencephalography)

小波转换的优点

可以同时观察频率和时间轴,在频率高时有较好的时间清晰度,在频率低时有较好的频率清晰度。
有快速小波转换可以加速运算。
可以分离出信号的精细或粗糙成分。
在小波理论中,可以用较少的小波系数去逼近一个函数。
对信号去噪或压缩信号时,不会对信号造成明显的破坏。
适用于分析突变信号,以及奇异信号
可以分析信号不同scale大小样貌

代码实现

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt
from skimage import data,filters
from numpy import *#1  读入图片数据
img = cv2.imread("huidu4.png")
img = cv2.resize(img, (448, 448))
# 将多通道图像变为单通道图像
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(np.float32)
noiseSigma=0.04
img =img+random.normal(0, noiseSigma, size=img.shape)   #生成正态分布plt.figure('小波变换分解一层')
##coeffs = pywt.dwt2(img, 'haar')    # 2分解一层
coeffs = pywt.wavedec2( img, 'haar', level=1)
cA, (cH, cV, cD) = coeffs# 将各个子图进行拼接,最后得到一张图(影像压缩)
AH = np.concatenate([cA, cH], axis=1)   # np.concatenate 数组拼接函数 axis表示对应行
VD = np.concatenate([cV, cD], axis=1)
img1 = np.concatenate([AH, VD], axis=0)##可以进行图像阈值分割/(影像分割)
thresh = filters.threshold_otsu(img)   #返回一个阈值
dst =(img<= thresh)*1.0                #根据阈值进行分割#软阈值 重构  计算系数
#pywt.thresholding.软,尤其是它的lambda表达式:lambda x: pywt.thresholding.soft(x, threshold)threshold = noiseSigma*sqrt(2*log2(img.size))
NewWaveletCoeffs = map (lambda x: pywt.thresholding.soft(x,threshold), coeffs)
NewImage = pywt.waverec2( coeffs, 'haar')titles = ['Source','compression','segmentation' ,"reconstruction"]
images = [img ,img1,dst,NewImage]
for i in range(4):  plt.subplot(1,4,i+1), plt.imshow(images[i], 'gray')  plt.title(titles[i])  plt.xticks([]),plt.yticks([])
plt.show()##1  图片
##2  分解
##3  阈值(同时进行处理)
##4  重构
##5  图片

效果图

图二是将影像经过处理的结果,可以看出在高频部分,左下角为水平方向的边缘;右上方为垂直方向的边缘;右下方为图形的角落。而左上角为低频,可继续做小波转换,分出更粗略、接近原影像的缩略图,来达到压缩效果。
图三是图像阈值分割技术。把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。
图四是重构之后的图像。

彩色图像分量处理

split函数:返回值顺序为:B、G、R

代码

##提取lena图像的R、G、B成分#encoding:utf-8#
#彩图R、G、B的提取
#
import numpy as np
import cv2
import matplotlib.pyplot as pltimage = cv2.imread("caise2.jpg")#R、G、B分量的提取
(B,G,R) = cv2.split(image)# 通道分解提取R、G、B分量BH = cv2.equalizeHist(B) # 对b分量进行均衡化
GH = cv2.blur(G, (5,5)) # 对b分量进行均值滤波化
RH = cv2.medianBlur(R,5)# 对b分量进行中值滤波化#显示原图和每个分量操作后的图像 (这里因为Plt会有些变色)
titles = ['Original', 'Red','Green',"Blue"]
images = [image,BH,GH,RH]
for i in range(4):  plt.subplot(1,4,i+1), plt.imshow(images[i], 'gray')  plt.title(titles[i])  plt.xticks([]),plt.yticks([])
plt.show()###encoding:utf-8
##
###
###彩图R、G、B的提取与合并
###
##import numpy as np
##import cv2
##
##image = cv2.imread("H:\\img\\lena.jpg")
##cv2.imshow("Original",image)
##cv2.waitKey(0)
##
###R、G、B分量的提取
##(B,G,R) = cv2.split(image)#提取R、G、B分量
###R、G、B的合并
##merged = cv2.merge([B,G,R])#合并R、G、B分量
##cv2.imshow("Merged",merged)
##cv2.waitKey(0)

效果图


上图是对每个分量进行平滑或者锐化滤波器处理之后的结果,由于用到了plt进行显示,所以会出现变色问题,上一个文章有对变色问题的处理。

参考:
https://zh.wikipedia.org/wiki/%E5%B0%8F%E6%B3%A2%E5%88%86%E6%9E%90

小波变换(分解/重构)和彩色图像分量处理相关推荐

  1. 数字图像处理-DFTDCTWHT小波变换分解重构(Matlab)

    文章目录 数字图像处理-DFT&DCT&WHT&小波变换分解重构(Matlab) 基本的matlab图像处理函数的使用 代码块 运行效果 傅里叶变换(DFT) 对图像进行傅里叶 ...

  2. 8.4 小波变换分解与重构算法

    8.4 小波变换分解与重构算法

  3. 从excel中读取信号,首先计算信号的vmd分解,得到imf分量

    从excel中读取信号,首先计算信号的vmd分解,得到imf分量,然后根据imf分量与原始信号的相关系数确定出信号imf喝噪声imf,对有用的imf进行小波阈值滤波,最后对滤波后的imf进行重构输出信 ...

  4. RGB彩色图像分量提取(java实现)

    引文 生活中最常见的RGB图像,比如手机照片,即为标准的三通道24位深RGB图像. 冈萨雷斯和伍兹所著的<数字图像处理>第二版中给出如下定义:一幅RGB图像,可以看作是一个MN3的彩色像素 ...

  5. matlab 小波功率谱,小波变换后的各频率分量的功率谱,

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面程序是用来提取脑电波信号的,利用小波提取四种频率分量的波α.β.δ.θ,现在不明白如何求频率分量的功率谱? 其中一段代码是: %dalt fs1=ff ...

  6. 小波功率谱 matlab,小波变换后的各频率分量的功率谱,

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面程序是用来提取脑电波信号的,利用小波提取四种频率分量的波α.β.δ.θ,现在不明白如何求频率分量的功率谱? 其中一段代码是: %dalt fs1=ff ...

  7. MATLAB小波分解/重构wavedec/waverec函数中L和C的意义

    这两天在做用小波阈值法进行信号去噪的问题,需要将信号进行五层小波分解,每进行一层分解时都将该层得到的细节系数CDi进行一次阈值化处理.这可以通过多次调用matlab中的dwt函数来实现.但是,在信号进 ...

  8. matlab 小波启发式阈值滤波,小波阈值去噪

    小波阈值去噪 小波阈值去噪 目录 1.概念 2.原理 3.影响降噪效果的因素 3.1小波基的选择 3.2分解层数的选择 3.3阈值的选择 3.4阈值函数的选择 4.MATLAB代码 参考文献 小波分析 ...

  9. Matlab进行gnss用户坐标计算,论文推荐 | 嵇昆浦,沈云中:含缺值GNSS基准站坐标序列的非插值小波分析与信号提取...

    关键词:GNSS坐标时间序列 缺失数据 小波变换 信号提取 Dyadic wavelet transform and signal extraction of GNSS coordinate time ...

最新文章

  1. django常用的模型字段类型和常用的查询
  2. 为mysql数据库建立索引
  3. MySQL 索引底层数据结构实现
  4. 用Fragments创建动态UI(翻译)
  5. 博客园12月份第1周51Aspx源码发布详情
  6. AI人才供不应求:应届生年薪可达50万 没出校门已被抢光
  7. 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学要求
  8. 黑苹果intel 9560ac网卡成功驱动,无需换卡
  9. HDOJ试水心酸总结
  10. 传输栅输入端异常导通
  11. MAME set 4 player
  12. android 屏幕密度范围,Android屏幕密度
  13. 学习RabbitMQ[上]
  14. 绘图神器draw.io(写文必备)
  15. 手机IO workload解析
  16. JavaScript的循环和
  17. C语言设计A与B的区别,C语言辅导 - abc与a=b=c的区别 and something else
  18. matlab 符号表达式正负,如何在Matlab上为符号表达式编写`lhs()`或`rhs()`函数
  19. vue页面自适应屏幕宽高_vue组件页面高度根据屏幕大小自适应
  20. 统考英语计算机报名入口奥鹏,考试服务

热门文章

  1. Java 获取linux根目录下的文件夹_Linux使用
  2. mysql 自动补零_mysql 补零
  3. 机器人最新天赋符文天赋加点图_英雄联盟机器人最新天赋和符文加点
  4. 某饭店招待国外考察团
  5. Transformer介绍及架构解析
  6. 舟山医院妇幼保健院区网络系统及容灾系统采购项目
  7. 浏览器控制打印机在线打印
  8. linux安装mysqldb是被,Linux上安装配置mysqldb和sqlalchemy
  9. Java调用打印机打印pdf
  10. BSN如何推动全球区块链技术落地?