国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【youcans 的 OpenCV 學習課】21. Haar 小波變換

這篇具有很好參考價值的文章主要介紹了【youcans 的 OpenCV 學習課】21. Haar 小波變換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

專欄地址:『youcans 的圖像處理學習課』
文章目錄:『youcans 的圖像處理學習課 - 總目錄』



1. 小波變換

1.1 小波變換基本概念

信號變換是為了分析時間和頻率之間的相互關系。

傅里葉變換(FFT)將信號表示為無限三角函數(shù)的疊加,從而將信號從時域轉換到頻域,可以分析信號的頻譜,但不能反映信號的時頻特征,丟失了局部信息。

短時傅里葉變換(STFT)通過引入時間窗獲得信號的時頻譜圖,但窗口尺寸是固定的,不能兼顧頻域信息與時域信息,即不能同時對高頻和低頻進行精確分析。

小波變換以尺度函數(shù)(scaling)和小波函數(shù)(wavelet function)作為基函數(shù)進行信號分解??s放母小波的寬度獲得信號的頻域特征,通過平移母小波獲得信號的時間信息。

小波函數(shù)是定義在有限間隔且均值為0的一種函數(shù)。使用有限長的衰減的小波基, 既包含了頻率的信息,也包含了時間的信息 。小波函數(shù)的尺度對應于頻率,控制小波函數(shù)的伸縮,平移量對應于時間,控制小波函數(shù)的平移。

小波族類的產(chǎn)生只需要滿足兩個條件:歸一化約束和正交化約束。因此小波有很多族類, 每個小波族在小波的緊湊性和平滑性做出了不同的權衡,對應著不同的形狀、光滑度和緊密型,應用于不同的場景和狀況。


例程 17_1:常用小波族的圖像
import pywt
print(pywt.families(short=False))

# 顯示的結果
['Haar', 'Daubechies', 'Symlets', 'Coiflets', 'Biorthogonal', 'Reverse biorthogonal', 
'Discrete Meyer (FIR Approximation)', 'Gaussian', 'Mexican hat wavelet', 'Morlet wavelet', 
'Complex Gaussian wavelets', 'Shannon wavelets', 'Frequency B-Spline wavelets', 'Complex Morlet wavelets']

運行結果:

[‘Haar’, ‘Daubechies’, ‘Symlets’, ‘Coiflets’, ‘Biorthogonal’, ‘Reverse biorthogonal’, ‘Discrete Meyer (FIR Approximation)’, ‘Gaussian’, ‘Mexican hat wavelet’, ‘Morlet wavelet’, ‘Complex Gaussian wavelets’, ‘Shannon wavelets’, ‘Frequency B-Spline wavelets’, ‘Complex Morlet wavelets’]

【youcans 的 OpenCV 學習課】21. Haar 小波變換


1.2 連續(xù)小波變換

傅里葉變換將信號 f ( t ) f(t) f(t)分解為一系列不同頻率的正弦信號的疊加,傅里葉系數(shù)對應于不同正弦信號的幅值。小波變換將信號 f ( t ) f(t) f(t)分解為一系列小波信號的疊加,產(chǎn)生一系列小波信號的基本小波可以根據(jù)需要來選擇或設計。

連續(xù)小波變換為:
γ ( s , τ ) = ∫ f ( t ) Ψ s , τ ? ( t ) d t \gamma (s,\tau) = \int f(t) \Psi ^* _{s,\tau} (t) dt γ(s,τ)=f(t)Ψs,τ??(t)dt
連續(xù)小波變換的逆變換為:
f ( t ) = ∫ ∫ γ ( s , τ ) Ψ s , τ ( t ) d s d t f(t) = \int \int \gamma (s,\tau) \Psi _{s,\tau} (t) dsdt f(t)=∫∫γ(s,τ)Ψs,τ?(t)dsdt
其中,* 表示復共軛, Ψ s , τ ( t ) \Psi _{s,\tau} (t) Ψs,τ?(t)為小波基函數(shù)(basic wavelet)。

不同小波基函數(shù),都是由同一個基本小波(母小波) Ψ ( t ) \Psi (t) Ψ(t) 經(jīng)過縮放和平移產(chǎn)生。
Ψ s , τ ( t ) = 1 s Ψ ( t ? τ s ) \Psi _{s,\tau} (t) = \frac{1}{\sqrt {s}} \Psi (\frac {t-\tau}{s}) Ψs,τ?(t)=s ?1?Ψ(st?τ?)
離散小波變換,通過二進小波變換(縮放因子取為2)把由基本小波生成小波基函數(shù)的方法表示為:
Ψ j , k ( x ) = 2 j / 2 ? Ψ ( 2 j x ? k ) , k = 0 , . . . 2 j ? 1 \Psi_{j,k}(x) = 2^{j/2} * \Psi(2^j x-k) , \quad k=0,...2^j-1 Ψj,k?(x)=2j/2?Ψ(2jx?k),k=0,...2j?1
其中j決定縮放系數(shù),k決定平移幅度。

在圖像處理中,離散小波變換將圖像分解為大小、位置和方向都不同的分量。對圖像進行小波分解后,可以得到一系列不同分辨率的子圖像,構造出圖像金字塔。

小波變換中,縮放因子scale越小,表示小波越窄,對應的信號頻率越高,反映的是信號的細節(jié)變化;縮放因子越大,表示小波越寬,對應的信號頻率越低,反映的是信號的輪廓變化。


1.3 離散小波變換(Discrete wavelet transform, DWT)

雙通道子帶編碼通過兩個互補的濾波器組:

  • 低通濾波器,得到信號的近似值A,相當于小波伸展,獲得當前信號的低頻特征,反映輪廓特征;
  • 高通濾波器,得到信號的細節(jié)值D,相當于小波伸縮,獲得當前信號的高頻特征,反映細節(jié)特征。

實際應用中,信號的低頻特征最重要,高頻分量只起細化修飾的作用。

小波變換可以表示為由低通濾波器和高通濾波器組成的一棵樹。原始信號經(jīng)過一對互補的濾波器組進行的分解稱為一級分解,繼續(xù)下去可以進行多級分解。

如果對信號的高頻分量不再分解,而對低頻分量進行連續(xù)分解,可以得到信號在不同分辨率下的低頻分量。

【youcans 的 OpenCV 學習課】21. Haar 小波變換


1.4 二維離散小波變換

圖像是典型的二維離散信號。將一維離散小波變換開展到二維函數(shù),就能實現(xiàn)圖像的二維離散小波變換。

在二維情況下,每個二維小波都是兩個一維小波的積,產(chǎn)生 4 個可分離的尺度函數(shù):
φ ( x , y ) = φ ( x ) φ ( y ) Ψ H ( x , y ) = Ψ ( x ) φ ( y ) Ψ V ( x , y ) = φ ( x ) Ψ ( y ) Ψ D ( x , y ) = Ψ ( x ) Ψ ( y ) \varphi (x,y) = \varphi (x) \varphi (y)\\ \varPsi ^H(x,y) = \varPsi (x) \varphi (y)\\ \varPsi ^V(x,y) = \varphi (x) \varPsi (y) \\ \varPsi ^D(x,y) = \varPsi (x) \varPsi (y) φ(x,y)=φ(x)φ(y)ΨH(x,y)=Ψ(x)φ(y)ΨV(x,y)=φ(x)Ψ(y)ΨD(x,y)=Ψ(x)Ψ(y)
這些小波度量圖像中灰度沿不同方向的變化:

  • Ψ H ( x , y ) \varPsi ^H(x,y) ΨH(x,y) 響應列的變化(水平邊緣)。
  • Ψ V ( x , y ) \varPsi ^V(x,y) ΨV(x,y) 響應行的變化(垂直邊緣)。
  • Ψ D ( x , y ) \varPsi ^D(x,y) ΨD(x,y) 響應對角線的變化。

【youcans 的 OpenCV 學習課】21. Haar 小波變換


例程 17_3:圖像的小波變換
import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt

if __name__ == '__main__':
    # (3) 圖像的二維小波變換
    img = cv.imread("../images/Fig0515a.tif", flags=0)
    img = cv.resize(img, (512, 512)).astype(np.float32)

    coeffs = pywt.dwt2(img, 'haar')
    cA, (cH, cV, cD) = coeffs  # 低頻分量,(水平高頻,垂直高頻,對角線高頻)

    # 拼接子圖
    AH = np.concatenate([cA, cH], axis=1)
    VD = np.concatenate([cV, cD], axis=1)
    dwt1 = np.concatenate([AH, VD], axis=0)
    print(img.shape, dwt1.shape)

    # 顯示為灰度圖
    plt.imshow(dwt1, 'gray')
    plt.title('DWT'), plt.xticks([]), plt.yticks([])
    plt.show()

【youcans 的 OpenCV 學習課】21. Haar 小波變換


2. Haar 小波變換

2.1 Haar 小波變換的基本概念

Haar 變換又稱 Haar 小波變換,由 Alfred Haar于1910年提出,是最早提出的正交小波,也是唯一既具有對稱性又是有限支撐的正交小波。

Haar 小波函數(shù)是最簡單的基函數(shù),是一組分段的常值函數(shù)組成的函數(shù)集合。這個函數(shù)集定義在半開區(qū)間[0,1)上,每個分段常值函數(shù)的數(shù)值在一個小范圍為 1 而在其它區(qū)域為 0。

Haar小波的母小波(mother wavelet)表示為:

Ψ ( x ) = { 1 , 0 ≤ x < 1 / 2 ? 1 , 1 / 2 ≤ x < 1 0 , o t h e r w i s e \Psi(x) = \begin{cases} \begin{aligned} 1 , \quad &0 \le x \lt 1/2\\ -1 , \quad &1/2 \le x \lt 1\\ 0 , \quad & otherwise \end{aligned} \end{cases} Ψ(x)=? ? ??1,?1,0,?0x<1/21/2x<1otherwise??

對應的尺度函數(shù)(scaling function)表示為:

? ( x ) = { 1 , 0 ≤ t < 1 0 , o t h e r w i s e \phi(x) = \begin{cases} \begin{aligned} 1 , \quad &0 \le t \lt 1\\ 0 , \quad & otherwise \end{aligned} \end{cases} ?(x)={1,0,?0t<1otherwise??

其濾波器 h[n]定義為:

h [ n ] = { 1 / 2 , n = 0 , 1 0 , o t h e r w i s e h[n] = \begin{cases} \begin{aligned} 1 / \sqrt{2} , \quad & n=0,1\\ 0 , \quad & otherwise \end{aligned} \end{cases} h[n]={1/2 ?,0,?n=0,1otherwise??

因此,

Ψ ( t / 2 ) = 2 ∑ n = ? ∞ ∞ ( ? 1 ) 1 ? n ? h [ 1 ? n ] ? ? ( t ? n ) = ? ( t ? 1 ) ? ? ( t ) \begin{aligned} \Psi (t/2) &= \sqrt{2} \sum _{n=-\infty} ^{\infty} (-1)^{1-n}*h[1-n]*\phi (t-n)\\ &= \phi (t-1) - \phi (t) \end{aligned} Ψ(t/2)?=2 ?n=??(?1)1?n?h[1?n]??(t?n)=?(t?1)??(t)?

即:

Ψ i j ( x ) = Ψ ( 2 j ? x ? i ) , i = 0 , . . . ( 2 j ? 1 ) \Psi_i^j(x) = \Psi(2^j*x-i) , i=0,...(2^j-1)\\ Ψij?(x)=Ψ(2j?x?i),i=0,...(2j?1)

Ψ ( x ) = ? ( 2 x ) ? ? ( 2 x ? 1 ) \Psi(x) = \phi(2x) - \phi(2x-1) Ψ(x)=?(2x)??(2x?1)

Haar 基函數(shù)可以獲取信號的尺度信息,而 Haar 小波函數(shù)可以表示信號的細節(jié)信息。
Haar 小波具有如下特點:
(1)Haar 小波在時域是緊支撐的,即其非零區(qū)間為 [0,1)
(2)Haar 小波屬于正交小波。
(3)Haar 小波是對稱的。
(4)Haar 小波僅取 +1 和 -1,計算簡單。
(5)Haar 小波是不連續(xù)小波,在實際的信號分析與處理中受到了限制。


例程 17_4:一維信號的 Haar 小波分解

對一維 Chirp 信號進行 Haar 小波變換的例程和結果如下。

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt

if __name__ == '__main__':
   # (4) Chirp 信號的 Haar 小波分解
    x = np.linspace(0, 1, num=2048)
    chirp_signal = np.sin(250 * np.pi * x ** 2)

    fig, ax = plt.subplots(figsize=(8, 2))
    ax.set_title("Original Chirp Signal")
    ax.plot(chirp_signal)
    plt.show()

    data = chirp_signal
    waveletname = 'haar'

    fig, axarr = plt.subplots(nrows=5, ncols=2, figsize=(8, 6))
    for ii in range(5):
        (data, coeff_d) = pywt.dwt(data, waveletname)
        axarr[ii, 0].plot(data, 'r')
        axarr[ii, 1].plot(coeff_d, 'g')
        axarr[ii, 0].set_ylabel("Level {}".format(ii + 1), fontsize=14, rotation=90)
        axarr[ii, 0].set_yticklabels([])
        if ii == 0:
            axarr[ii, 0].set_title("Approximation coefficients", fontsize=14)
            axarr[ii, 1].set_title("Detail coefficients", fontsize=14)
        axarr[ii, 1].set_yticklabels([])
    plt.tight_layout()
    plt.show()

【youcans 的 OpenCV 學習課】21. Haar 小波變換


例程 17_5:圖像的 Haar 小波分解

對二維圖像進行 Haar 小波變換的例程和結果如下。

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt
from pywt._doc_utils import wavedec2_keys, draw_2d_wp_basis

if __name__ == '__main__':
# (5) 圖像的 Haar 小波分解
    x = pywt.data.camera().astype(np.float32)
    shape = x.shape
    max_lev = 3  # 要繪制多少級分解
    label_levels = 3  # 圖上要顯式標注多少層

    fig, axes = plt.subplots(2, 4, figsize=[14, 8])
    for level in range(0, max_lev + 1):
        if level == 0:
            # 顯示原始圖像
            axes[0, 0].set_axis_off()
            axes[1, 0].imshow(x, cmap=plt.cm.gray)
            axes[1, 0].set_title('Image')
            axes[1, 0].set_axis_off()
            continue

        # 繪制標準DWT基的子帶邊界
        draw_2d_wp_basis(shape, wavedec2_keys(level), ax=axes[0, level], label_levels=label_levels)
        axes[0, level].set_title('{} level\ndecomposition'.format(level))

        # 計算二維 DWT
        c = pywt.wavedec2(x, 'haar', mode='periodization', level=level)

        # 獨立規(guī)范化每個系數(shù)數(shù)組以獲得更好的可見性
        c[0] /= np.abs(c[0]).max()
        for detail_level in range(level):
            c[detail_level + 1] = [d / np.abs(d).max() for d in c[detail_level + 1]]

        # 顯示歸一化系數(shù) (normalized coefficients)
        arr, slices = pywt.coeffs_to_array(c)
        axes[1, level].imshow(arr, cmap=plt.cm.gray)
        axes[1, level].set_title('Coefficients\n({} level)'.format(level))
        axes[1, level].set_axis_off()
    plt.tight_layout()
    plt.show()

【youcans 的 OpenCV 學習課】21. Haar 小波變換


2.2 小波變換在圖像處理中的應用

小波變換在圖像處理中的應用與傅里葉變換類似,基本方法是:
(1)計算一幅圖像的二維小波變換,并得到小波系數(shù)
(2)對小波系數(shù)進行修改,保留有效成分,過濾不必要成分
(3)使用修改后的小波系數(shù)進行圖像重建

基于小波變換的圖像去噪步驟:
(1)圖像小波變換。選擇一個小波,計算噪聲圖像的小波系數(shù)。
(2)對細節(jié)系數(shù)通過閾值進行過濾。選擇一個細節(jié)系數(shù)閾值,并對所有細節(jié)系數(shù)進行閾值化操作。
(3)基于閾值化過濾后的細節(jié)系數(shù)及原始近似系數(shù),使用小波變換對圖像進行重建。


版權聲明:

youcans@xupt 原創(chuàng)作品,轉載必須標注原文鏈接:(https://blog.csdn.net/youcans/article/details/130320033)
Copyright 2022 youcans, XUPT
歡迎關注 『youcans 的 OpenCV 學習課』 系列,持續(xù)更新文章來源地址http://www.zghlxwxcb.cn/news/detail-444015.html

到了這里,關于【youcans 的 OpenCV 學習課】21. Haar 小波變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • OpenCV-Python學習(21)—— OpenCV 圖像幾何變換之圖像翻轉(cv.flip、np.flip)

    OpenCV-Python學習(21)—— OpenCV 圖像幾何變換之圖像翻轉(cv.flip、np.flip)

    1. 學習目標 學習 OpenCV 圖像的翻轉函數(shù) cv.flip; 學習 NumPy 矩陣的反轉函數(shù) np.flip; 自己實現(xiàn)矩陣反轉的函數(shù)。 2. OpenCV 翻轉 翻轉也稱鏡像,是指將圖像沿軸線進行軸對稱變換。水平鏡像是將圖像沿垂直中軸線進行左右翻轉,垂直鏡像是將圖像沿水平中軸線進行上下翻轉,水平

    2024年02月06日
    瀏覽(84)
  • Haar小波提升算法

    Haar小波提升算法

    傳統(tǒng)的小波變換是在傅里葉變換的基礎上演變而來,計算過程中存在著大量的卷積運算或是乘累加的計算,如若在硬件上實現(xiàn),勢必會消耗大量的寄存器資源,而且速度也上不去。提升小波又稱為第二代小波,最早是由 Sweldens W.博士于 1995 年在貝爾實驗室提出,相對于 Malla

    2023年04月09日
    瀏覽(20)
  • Haar小波下采樣模塊

    Haar小波下采樣模塊

    論文原址:Haar wavelet downsampling: A simple but effective downsampling module for semantic segmentation - ScienceDirect 原文代碼:HWD/HWD.py at main · apple1986/HWD (github.com) 深度卷積神經(jīng)網(wǎng)絡 (DCNN) 通常采用標準的下采樣操作,例如最大池化、平均池化和跨步卷積,這可能會導致信息丟失。丟失的信

    2024年01月23日
    瀏覽(16)
  • 【機器學習-17】數(shù)據(jù)變換---小波變換特征提取及應用案列介紹

    【機器學習-17】數(shù)據(jù)變換---小波變換特征提取及應用案列介紹

    引言 ??在機器學習領域,數(shù)據(jù)變換是一種常見且重要的預處理步驟。通過對原始數(shù)據(jù)進行變換,我們可以提取出更有意義的特征,提高模型的性能。在眾多數(shù)據(jù)變換方法中,小波變換是一種非常有效的方法,尤其適用于處理非平穩(wěn)信號和時頻分析。本文將詳細介紹小波變換

    2024年04月28日
    瀏覽(36)
  • 【機器學習】小波變換在特征提取中的實踐與應用

    【機器學習】小波變換在特征提取中的實踐與應用

    在信號處理與數(shù)據(jù)分析領域,小波變換作為一種強大的數(shù)學工具,其多尺度分析特性使得它在特征提取中扮演著至關重要的角色。本文將從小波變換的基本原理出發(fā),結合實例和代碼,深入探討小波變換在特征提取中的應用,并著重分析幾種常見的基于小波變換的特征提取方

    2024年04月22日
    瀏覽(29)
  • 醫(yī)學影像圖像去噪:濾波器方法、頻域方法、小波變換、非局部均值去噪、深度學習與稀疏表示和字典學習

    醫(yī)學影像圖像去噪:濾波器方法、頻域方法、小波變換、非局部均值去噪、深度學習與稀疏表示和字典學習

    ????????醫(yī)學影像圖像去噪是指使用各種算法從醫(yī)學成像數(shù)據(jù)中去除噪聲,以提高圖像質量和對疾病的診斷準確性。MRI(磁共振成像)和CT(計算機斷層掃描)是兩種常見的醫(yī)學成像技術,它們都會受到不同類型噪聲的影響。 ????????在醫(yī)學影像中,噪聲可能來源于多

    2024年04月26日
    瀏覽(36)
  • matlab小波變換、離散小波變換函數(shù)使用

    matlab小波變換、離散小波變換函數(shù)使用

    matlab中,連續(xù)小波變換、離散小波變換函數(shù)使用比較復雜,最近做了個總結。 參考1:https://www.jianshu.com/p/56733f6c0a10 參考2:小波變換工具箱(7頁)-原創(chuàng)力文檔 參考3:《Matlab信號處理》 沈再陽,清華大學出版社,第8章 注意:以下所有函數(shù)均為matlab 2020a環(huán)境中測試,更早的版

    2024年02月02日
    瀏覽(27)
  • 【OpenCV-Python】——Haar人臉檢測&深度學習人臉檢測&EigenFaces/FisherFaces/LBPH人臉識別

    目錄 前言: 1、人臉檢測 1.1?基于Haar的人臉檢測 1.2 基于深度學習的人臉檢測

    2024年02月05日
    瀏覽(27)
  • YOLOv9改進策略 | Conv篇 | 利用 Haar 小波的下采樣HWD替換傳統(tǒng)下采樣(改變YOLO傳統(tǒng)的Conv下采樣)

    YOLOv9改進策略 | Conv篇 | 利用 Haar 小波的下采樣HWD替換傳統(tǒng)下采樣(改變YOLO傳統(tǒng)的Conv下采樣)

    本文給大家?guī)淼母倪M機制是 Haar 小波的下采樣HWD替換傳統(tǒng)下采樣 (改變YOLO傳統(tǒng)的Conv下采樣)在小波變換中,Haar小波作為一種基本的小波函數(shù),用于將圖像數(shù)據(jù)分解為多個層次的近似和細節(jié)信息,這是一種多分辨率的分析方法。我將其用在YOLOv9上其明顯降低參數(shù)和GFLOPs在

    2024年04月22日
    瀏覽(31)
  • 小波變換中的多貝西小波(DB小波函數(shù))概述

    小波變換中的多貝西小波(DB小波函數(shù))概述

    內(nèi)容均來源于維基百科對db小波函數(shù)的介紹 多貝西小波 (英語:Daubechies Wavelet),是以比利時女性物理暨數(shù)學家英格麗·多貝西(Ingrid Daubechies)的名字命名之一種小波函數(shù),當初英格麗·多貝西發(fā)現(xiàn)了一種具有階層(hierarchy)性質的小波,便將此小波以她的名字命名。多貝西

    2023年04月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包