python - 如何在 Python 中将 DCT 应用于图像?

标签 python opencv image-processing scipy dct

我想用 Python 对图像应用离散余弦变换(以及反变换),我想知道什么是最好的方法以及如何做。我看过 PIL 和 OpenCV,但我仍然不明白如何使用它。

最佳答案

scipy.fftpack 示例:

from scipy.fftpack import dct, idct

# implement 2D DCT
def dct2(a):
    return dct(dct(a.T, norm='ortho').T, norm='ortho')

# implement 2D IDCT
def idct2(a):
    return idct(idct(a.T, norm='ortho').T, norm='ortho')    

from skimage.io import imread
from skimage.color import rgb2gray
import numpy as np
import matplotlib.pylab as plt

# read lena RGB image and convert to grayscale
im = rgb2gray(imread('images/lena.jpg')) 
imF = dct2(im)
im1 = idct2(imF)

# check if the reconstructed image is nearly equal to the original image
np.allclose(im, im1)
# True

# plot original and reconstructed images with matplotlib.pylab
plt.gray()
plt.subplot(121), plt.imshow(im), plt.axis('off'), plt.title('original image', size=20)
plt.subplot(122), plt.imshow(im1), plt.axis('off'), plt.title('reconstructed image (DCT+IDCT)', size=20)
plt.show()

此外,如果绘制一小部分 2D DCT 系数数组 imF(在 log 域中),您将得到如下图(带有棋盘格模式):

enter image description here

关于python - 如何在 Python 中将 DCT 应用于图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110899/

相关文章:

python - Tornado :如何为多个请求共享 pymongo 连接?

python - Mac 上 cx_Oracle 安装错误

ios - 确定 UIImage 的主要颜色和次要颜色

c# - 亚像素精度的图像处理

python - Django - 处理多个不同级别的嵌套模型

python - 如何在导入的 3D 波前 OBJ 文件上实现对象碰撞

linux - 如何在 Amazon Linux 上安装 OpenCV?

opencv - Scalar(0,255,0) 在 opencv 中不给出绿色线

c++ - 如何使用Opencv轮廓单向描述线点

c# - 在 C# 中找到一条路径来填充图像的所有阴影区域