我有两张图片:
原始图像
二值化图像
我通过将 256x256 图像划分为 8x8 块,对这两个图像应用了离散余弦变换。之后,我想比较他们的 DCT 系数分布。
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import matplotlib.pylab as pylab
import numpy as np
import os.path
import scipy
import statistics
from numpy import pi
from numpy import sin
from numpy import zeros
from numpy import r_
from PIL import Image
from scipy.fftpack import fft, dct
from scipy import signal
from scipy import misc
if __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 系数频带的径向分类的示例。
慕神8447489
相关分类