基于Pyhton的二维离散正弦变换(DST)及其反变换(IDST)
2018-01-26 15:21
519 查看
1.二维离散正弦变换(DST)的矩阵形式可以表示为:
其中T为DST变换后的矩阵,I为输入矩阵,C为变换基,C的表示为:
2.二维离散正弦反变换(IDST)可以表示为:
DST和DCT一样,能够把数据能量集中在矩阵的左上角,可以用于图像压缩存储。
Python程序:
#二维图像的离散正弦变换(DST)
#Python3.5
#库:cv2+numpy+matplotlib
#作者:James_Ray_Murphy
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('baoguo1.jpg', 0)
img1 = img.astype('float')
C_temp = np.zeros(img.shape)
dst = np.zeros(img.shape)
m, n = img.shape
N = n
for i in range(m):
for j in range(n):
C_temp[i, j] = np.sin(np.pi * (i+1) * (j+1) / (N + 1)
) * np.sqrt(2 / (N + 1))
dst = np.dot(C_temp , img1)
dst = np.dot(dst, np.transpose(C_temp))
dst1= np.log(abs(dst)) #进行log处理
img_recor = np.dot(np.transpose(C_temp) , dst)
img_recor = np.dot(img_recor, C_temp)
plt.subplot(131)
plt.imshow(img1, 'gray')
plt.title('original image')
plt.xticks([]), plt.yticks([])
plt.subplot(132)
plt.imshow(dst1)
plt.title('DST')
plt.xticks([]), plt.yticks([])
plt.subplot(133)
plt.imshow(img_recor, 'gray')
plt.title('IDST')
plt.xticks([]), plt.yticks([])
plt.show()
效果图如下:
其中T为DST变换后的矩阵,I为输入矩阵,C为变换基,C的表示为:
2.二维离散正弦反变换(IDST)可以表示为:
DST和DCT一样,能够把数据能量集中在矩阵的左上角,可以用于图像压缩存储。
Python程序:
#二维图像的离散正弦变换(DST)
#Python3.5
#库:cv2+numpy+matplotlib
#作者:James_Ray_Murphy
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('baoguo1.jpg', 0)
img1 = img.astype('float')
C_temp = np.zeros(img.shape)
dst = np.zeros(img.shape)
m, n = img.shape
N = n
for i in range(m):
for j in range(n):
C_temp[i, j] = np.sin(np.pi * (i+1) * (j+1) / (N + 1)
) * np.sqrt(2 / (N + 1))
dst = np.dot(C_temp , img1)
dst = np.dot(dst, np.transpose(C_temp))
dst1= np.log(abs(dst)) #进行log处理
img_recor = np.dot(np.transpose(C_temp) , dst)
img_recor = np.dot(img_recor, C_temp)
plt.subplot(131)
plt.imshow(img1, 'gray')
plt.title('original image')
plt.xticks([]), plt.yticks([])
plt.subplot(132)
plt.imshow(dst1)
plt.title('DST')
plt.xticks([]), plt.yticks([])
plt.subplot(133)
plt.imshow(img_recor, 'gray')
plt.title('IDST')
plt.xticks([]), plt.yticks([])
plt.show()
效果图如下:
相关文章推荐
- 基于Python二维离散余弦变换(DCT)及其反变换(IDCT)---程序对比
- 二维离散付立叶变换及其性质
- 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)
- 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)
- 图像的二维DFT及其反变换 .
- 图像的二维DFT及其反变换
- 二维几何图形变换及其GDI+实现
- 离散FFT和图像二维FFT变换的java实现
- 图像的二维DFT及其反变换
- 离散希尔伯特变换
- C++实现基于离散Hopfield神经网络噪声数字的识别_智能计算作业三
- 01变换 二维树状数组+区间更新,单点查询 poj 2155 Matrix
- 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换
- 基于B/S+C/S模式的期刊网络采编系统研究及其应用
- 想做一些基于面片模型的二维纹理
- 正弦函数及其FFT变换(二)
- OpenCV实现基于傅里叶变换的旋转文本校正
- 基于递归思想的组合、H变换等几个算法实现
- 基于视频处理的DSP系统通用设计模式及其实现
- 基于Hive 的文件格式:RCFile 简介及其应用