图像处理的两种变换:2D-DWT和Gabor变换

news/2024/10/18 6:04:54/

 pywt官方API文档: 2D Forward and Inverse Discrete Wavelet Transform 

目录

1. 二维离散小波变换2D-DWT

1.1 二维离散小波变换的相关公式

1.2 使用pywt实现2D-DWT

2.  窗口傅里叶变换Gabor


1. 二维离散小波变换2D-DWT

DWT(Discrete Wavelet Transformation)代表离散小波变换。

作用:对于图像来说,它能够将图像变换为一系列的小波系数并将这些系数进行高效的压缩和储存,并且小波的粗略边缘消除了DCT压缩普遍具有的方块效应从而可以更好地还原和表现图像。

 

1.1 二维离散小波变换的相关公式

(1)尺度函数(Father Scaling Function)和小波函数(Mother Wavelet Function)

一种常见的尺度函数,哈尔尺度函数:

一种常见的小波函数,哈尔小波函数:

 

(2) 二维尺度函数和二维小波函数

其中, \varphi(x)是给定的一维尺度函数,\psi (x)是给定的一维小波函数,\varphi(x,y)是一个二维尺度函数,\psi^H\psi^Y\psi^D分别是沿水平边缘、垂直边缘、对角线方向变化的二维小波函数。

(3) 尺度和平移基函数

 

(4) 二维离散小波变换

 

其中, W_\varphi (0,m,n)是图像f(x,y)的低频子带, W_\varphi ^i(0,m,n)i=\{H,V,D\}代表三种不同方向的高频子带,M,H是图像f(x,y)的长和宽,f(x,y)是原图像的离散形式,\varphi (x,y)\psi (x,y)是尺度和平移基函数。

(5) 反二维离散小波变换

四种子带图像相加。

1.2 使用pywt实现2D-DWT

(1)pywt.dwt2

作用:进行2D-DWT变换,将原图像分解为四种子带图像。

pywt.dwt2(data, wavelet, mode='symmetric', axes=(-2, -1))

data: 输入的数据
wavelet:小波函数
mode: 默认是对称的


return: (cA, (cH, cV, cD))要注意返回的值,分别为低频分量,水平高频、垂直高频、对角线高频。高频的值包含在一个tuple中。

import numpy as np
from matplotlib import pyplot as plt
import pywt
import PILimg = PIL.Image.open("1.png")
img = np.array(img)
LLY,(LHY,HLY,HHY) = pywt.dwt2(img, 'haar')
plt.subplot(2, 2, 1)
plt.imshow(LLY, cmap="Greys")
plt.subplot(2, 2, 2)
plt.imshow(LHY, cmap="Greys")
plt.subplot(2, 2, 3)
plt.imshow(HLY, cmap="Greys")
plt.subplot(2, 2, 4)
plt.imshow(HHY, cmap="Greys")
plt.show()

 (2) pywt.idwt2

作用:根据分解的四种子带图像,重构原图像。

pywt.idwt2(coeffs, wavelet, mode='symmetric', axes=(-2, -1))


coeffs: 经小波变换后得到的各层的系数
wavelet:小波函数

mode: 默认是对称的

axes:计算DWT的轴

import numpy as np
from matplotlib import pyplot as plt
import pywt
import PILimg = PIL.Image.open("1.png")
img = np.array(img)
LLY,(LHY,HLY,HHY) = pywt.dwt2(img, 'haar')# 根据小波系数重构回去的图像
rimg = idwt2((LLY,(LHY,HLY,HHY)), 'haar')plt.imshow(rimg, cmap="Greys")
plt.show()

重构图像:

 

 

2.  窗口傅里叶变换Gabor

作用:Gabor滤波器可以在频域上不同尺度、不同方向上提取相关的特征。另外,Gabor函数与人眼的作用相仿,所以经常用作纹理识别上,并取得了较好的效果。

(1) skimage.filters.gabor

作用:使用 Gabor 滤波器内核的实部虚部过滤图像。

skimage.filters.gabor(image, frequency, theta=0, bandwidth=1, sigma_x=None, sigma_y=None, n_stds=3, offset=0, mode='reflect', cval=0) 

参数

    image:二维阵列,输入图像。
    frequency:浮点数,调和函数的空间频率。以像素为单位指定。
    theta:浮点数,可选,以弧度表示的方向。如果为 0,则谐波在 x 方向。
    bandwidth:浮点数,可选,滤波器捕获的带宽。

    sigma_x, sigma_y:浮点数,可选,x- 和 y-directions 的标准偏差。
    n_stds:标量,可选,内核的线性大小是 n_stds(默认为 3)标准差。
    offset:浮点数,可选,以弧度为单位的谐波函数的相位偏移。
    mode:{‘constant’, ‘nearest’, ‘reflect’, ‘mirror’, ‘wrap’},可选,用于将图像与内核卷积的模式
    cval:标量,可选,填充过去输入边的值

返回

    real, imag:数组

(2)取模

skimage.filters.gabor()函数返回的是图像变换后的实部和虚部,在图像识别领域一般使用其模作为图像特征。

import matplotlib.pyplot as plt
from skimage import filters,io,color
import numpy as npfilename='1.png'
img = io.imread(filename)#读取图像#调用gabor函数
real, imag = filters.gabor(img, frequency=1.5,theta=45,n_stds=5)
#取模图像
img_mod=np.sqrt(real.astype(float)**2+imag.astype(float)**2)
#图像显示
plt.figure()
plt.subplot(2,2,1)
plt.imshow(img,cmap='gray')
plt.subplot(2,2,2)
plt.imshow(img_mod,cmap='gray')
plt.subplot(2,2,3)
plt.imshow(real,cmap='gray')
plt.subplot(2,2,4)
plt.imshow(imag,cmap='gray')
plt.show()
​

滤波效果:

 


http://www.ppmy.cn/news/581091.html

相关文章

GCP学习笔记(二)——大数据和机器学习

文章目录 一、数据读取和处理1.Pub/Sub代码实践PublishingSubscribing 2. Dataflow使用Python搭建Pipeline 3. Dataproc4. Cloud Data Fusion5. 其他工具Cloud Composer (Apache Airflow)Cloud Scheduler 二、可视化与分析1. Looker2. Looker Studio3. B…

Stability AI 推出 SDXL 0.9:AI 图像生成的一次飞跃

点击上方蓝色“飞雪无情”关注我的公众号,设个星标,第一时间看文章 SDXL 0.9发布与特点 稳定AI公司宣布推出SDXL 0.9,这是Stable Diffusion文本到图像模型套件的重大升级。与其前身Stable Diffusion XL beta相比,新版本在图像和构…

操作系统——Windows 线程的互斥与同步

一、实验题目 Windows 线程的互斥与同步 二、实验目的 (1) 回顾操作系统进程、线程的有关概念,加深对 Windows 线程的理解。 (2) 了解互斥体对象,利用互斥与同步操作编写生产者-消费者问题的并发程序,加深对 P (即 semWait)、V(即 semSig…

【技术选型】Redis的几种集群方案、及优缺点对比

文章目录 背景一、主从模式二、哨兵模式三、Redis Cluster四、各大厂的Redis集群方案客户端分片代理分片Codis 五、Redis集群方案解决方案六、Redis集群方案原理总结 背景 在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上&#xff0…

Windows XP SP3英文版镜像

链接:https://pan.baidu.com/s/1q4Yu6UFXNMIqAaTz_xGyhQ 提取码:09ik

xplorer2 的注册码

425F080378ABC40101110AAF37BA192D8FFDA5C938C82BB729087DD4D824ED7851C9055689ED78A3EF0E577B45BB8880AE5675C4081801376A3BC03B294E67CD0A74816BA96A64B0524E64F015B84EAA5E34F8E5A3457F6237AA30F1E3DF5E69FEE7E50B

Speex for Android

http://blog.csdn.net/chenfeng0104/article/details/7088138 在Android开发中,需要录音并发送到对方设备上。这时问题来了,手机常会是GPRS、3G等方式上网,所以节省流量是非常关键的,使用Speex来压缩音频文件,可以将音…

speex版本下载

speex 作为一个开源的语音编码库,很值得研究。在官网,基本只能下载最新的版本,要了解SPEEX发展脉络,可以在以下地址下载: http://downloads.xiph.org/releases/speex/