亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

離散余弦變換 (DCT) 系數分布

離散余弦變換 (DCT) 系數分布

瀟瀟雨雨 2022-07-19 15:36:00
我有兩張圖片:原始圖像二值化圖像我通過將 256x256 圖像劃分為 8x8 塊,對這兩個圖像應用了離散余弦變換。之后,我想比較他們的 DCT 系數分布。import matplotlib.mlab as mlabimport matplotlib.pyplot as pltimport matplotlib.pylab as pylabimport numpy as npimport os.pathimport scipyimport statisticsfrom numpy import pifrom numpy import sinfrom numpy import zerosfrom numpy import r_from PIL import Imagefrom scipy.fftpack import fft, dctfrom scipy import signalfrom scipy import miscif __name__ == '__main__':    image_counter = 1    #Opens the noisy image.    noise_image_path = 'noise_images/' + str(image_counter) + '.png'    noise_image = Image.open(noise_image_path)    # Opens the binarize image    ground_truth_image_path = 'ground_truth_noise_patches/' + str(image_counter) + '.png'    ground_truth_image = Image.open( ground_truth_image_path)    #Converts the images into Ndarray    noise_image = np.array(noise_image)    ground_truth_image = np.array(ground_truth_image)    #Create variables `noise_dct_data` and `ground_truth_dct_data` where the DCT coefficients of the two images will be stored.    noise_image_size = noise_image.shape    noise_dct_data = np.zeros(noise_image_size)          ground_truth_image_size = ground_truth_image.shape    ground_truth_dct_data = np.zeros(ground_truth_image_size)    for i in r_[:noise_image_size[0]:8]:        for j in r_[:noise_image_size[1]:8]:               # Apply DCT to the two images every 8x8 block of it.                         noise_dct_data[i:(i+8),j:(j+8)] = dct(noise_image[i:(i+8),j:(j+8)])            # Apply DCT to the binarize image every 8x8 block of it.               ground_truth_dct_data[i:(i+8),j:(j+8)] = dct(ground_truth_image[i:(i+8),j:(j+8)])上面的代碼得到了兩個圖像的 DCT。我想創建他們的 DCT 系數分布,如下圖所示:我的問題是:圖中的X和Y-axis代表什么?值是否存儲在noise_dct_data和ground_truth_dct_data中,DCT 系數?是否Y-axis表示其對應的 DCT 系數的頻率?直方圖是否適合表示 DCT 系數分布。DCT系數通常根據它們的頻率分為三個子帶,即低、中和高頻帶。我們可以用來在低、中或高頻段對 DCT 系數進行分類的閾值是多少?換句話說,我們如何對DCT系數頻帶進行徑向分類?以下是 DCT 系數頻帶的徑向分類的示例。
查看完整描述

1 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

在我看來,您分享的繪圖示例就像核密度圖。密度圖“直方圖的一種變體,它使用核平滑來繪制值,通過平滑噪聲來實現更平滑的分布?!?(見https://datavizcatalogue.com/methods/density_plot.html)


建立在matplotlib之上的seaborn庫有一個kdeplot函數,它可以處理兩組數據。這是一個玩具示例:


import numpy as np 

from scipy.fftpack import dct

import seaborn 


sample1 = dct(np.random.rand(100))

sample2 = dct(np.random.rand(30))

seaborn.kdeplot(sample1, color="r")

seaborn.kdeplot(sample2, color="b")

請注意,重新運行此代碼會產生稍微不同的圖像,因為我使用的是隨機生成的數據。

要直接回答您編號的問題:

1. 圖中的 X 軸和 Y 軸分別代表什么?

在 kdeplot 中,X 軸表示密度,y 軸表示具有這些值的觀察數。與直方圖不同,它應用了一種平滑方法來嘗試估計噪聲觀測數據背后的數據“真實”分布。

2.noise_dct_data和ground_truth_dct_data中存儲的值是DCT系數嗎?

根據您設置代碼的方式,是的,這些變量存儲了您所做的 DCT 轉換的結果。

3. Y軸是否代表其對應DCT系數的頻率?

是的,但要平滑。類似于直方圖,但不完全相同。

4.直方圖是否適合表示DCT系數分布?

這取決于觀察的數量,但如果你有足夠的數據,直方圖應該會給你非常相似的結果。

5. DCT系數通常根據其頻率分為三個子帶,即低、中、高頻段。我們可以用來在低、中或高頻段對 DCT 系數進行分類的閾值是多少?換句話說,我們如何對DCT系數頻帶進行徑向分類?

我認為這個問題可能太復雜而無法在堆棧上令人滿意地回答,但我在這里的建議是嘗試弄清楚文章的作者是如何完成這項任務的。引用的文章“Blind Image Quality Assessment: A Natural Scene Statistics Approach in the DCT Domain”似乎在談論徑向基函數 (RBF),但這看起來像是一種在頻率數據上訓練監督模型以進行預測的方法掃描的整體質量。

關于數據分區,他們指出,“為了從局部圖像塊中捕獲方向信息,DCT 塊被定向分區。......上、中和下分區對應于低頻、中頻和高頻 DCT 子帶。"

我認為,至少在他們的一種情況下,分區是由子帶 DCT 確定的。(參見https://ieeexplore.ieee.org/document/499836)似乎有大量關于這些類型方法的文獻。

查看完整回答
反對 回復 2022-07-19
  • 1 回答
  • 0 關注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號