1.二维离散正弦变换(DST)的矩阵形式可以表示为:

其中T为DST变换后的矩阵,I为输入矩阵,C为变换基,C的表示为:

2.二维离散正弦反变换(IDST)可以表示为:

DST和DCT一样,能够把数据能量集中在矩阵的左上角,可以用于图像压缩存储。

Python程序:

#二维图像的离散正弦变换(DST)
#Python3.5
#库:cv2+numpy+matplotlib
#作者:James_Ray_Murphyimport cv2
import numpy as np
import matplotlib.pyplot as pltimg = 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()

效果图如下:

基于Pyhton的二维离散正弦变换(DST)及其反变换(IDST)相关推荐

  1. python 实现maltab中离散正弦变换dst及其反变换idst

    DFT.DCT.DST数学公式及原理部分可参考该博客. 笔者在将某matlab程序代码重新用python实现过程中,发现scipy.fft.dst的运行结果和matlab中的dst函数运行结果不一致( ...

  2. 对图像进行二维离散Fourier变换

    用函数fft2对图像进行二维离散Fourier变换.用图像的形式分别显示清晰的频谱幅度和相位.对图像用窗函数加权,观察其Fourier变换,解释加窗前后的变化.对图像作Fourier变换和反变换.将图 ...

  3. 压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST)

    题目:压缩感知稀疏基之离散余弦变换(DCT)和离散正弦变换(DST) 在前面一篇<压缩感知的常见稀疏基名称及离散傅里叶变换基>中集结了九篇压缩感知文献中有关稀疏基名称,并且直白地告诉大家稀 ...

  4. 离散傅里叶变换DFT、离散余弦变换DCT、离散正弦变换DST,原理与公式推导

    更新:本网页为纯图片版,是由 Word 文档转图片后直接上传的.目前我已更新一个 Markdown 文字版的,网页浏览体验会好一些.因为一篇博客的字符数量有限制,所以分开了三篇. DFT:https: ...

  5. 离散正弦变换(DST)实现(cpu和cuda)

    Matlab中有dst函数用来计算离散正弦变换,但是类似于DFT,它的变换矩阵并不是一个完全的正交矩阵,需要外加一个定标因子才能变换正交矩阵,有关Matlab中的dst正变换和dst逆变换函数对应的公 ...

  6. C++实现二维离散傅里叶变换

    在上一篇文章<C++实现一维离散傅里叶变换>中,我们介绍了一维信号傅立叶变换的公式和C++实现,并阐述了频域幅值的意义. 一维傅立叶变换只适用于一维信号,例如音频数据.心脑电图等. 在图像 ...

  7. 理解DCT与DST【三】:离散正弦变换

    本文主要是将先前的博客 离散傅里叶变换DFT.离散余弦变换DCT.离散正弦变换DST,原理与公式推导 从图片修改为 Markdown 脚本,方便读者浏览,同时增加了部分内容.但由于文章字符过多,无法全 ...

  8. 二维离散变换由c语言编写,离散余弦变换(DCT)的DSP程序设计与实现

    <离散余弦变换(DCT)的DSP程序设计与实现>由会员分享,可在线阅读,更多相关<离散余弦变换(DCT)的DSP程序设计与实现(15页珍藏版)>请在人人文库网上搜索. 1.DS ...

  9. 计算机图形学 | 基于MFC和二维变换的画图软件

    文章目录 基于MFC和二维变换的画图软件 摘 要 设 计 1 程序总体结构 1.1 总体结构设计 1.1.1 绘图设计 1.1.2 变换设计 2 程序实现 2.1 鼠标绘图的消息映射 2.2 图形绘制 ...

最新文章

  1. Google Mock(Gmock)简单使用和源码分析——简单使用
  2. 软件测试实验——安装并使用junit、hamcrest和eclemma进行简单测试
  3. 【Python】青少年蓝桥杯_每日一题_5.09_画三角形和六边形
  4. microsoftonenote_Microsoft
  5. 前端自动化之nvm安装
  6. 岭回归预测PM2.5
  7. 为长篇文档快速创建目录
  8. 人人都可以写的可视化Python小程序第二篇:旋转的烟花
  9. 「镁客·请讲」南京布塔:用动作捕捉世界的精彩
  10. linux面试题:删除一个目录下的所有文件,但保留一个指定文件
  11. 解决Mac自动切换输入法
  12. python风变编程是骗局吗-黑猫投诉:风变编程诱导消费涉及退款无人答复霸王条款...
  13. 手把手教你架构3D引擎高级篇系列一
  14. [白话解析] 通俗解析集成学习之GBDT
  15. Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker
  16. linux中一个用户可以同时属于多个组吗,为什么linux用户可以属于多个用户组,文件只能属于一个用户组?...
  17. 2017 码云最火开源项目 TOP 50
  18. 视频原声能去掉吗?怎么批量处理
  19. php ecb加密,PHP使用TripleDes,PKCS7和ECB加密/解密
  20. Corsiniの时光漏

热门文章

  1. 解决 npm install 时出现的.git can‘t be found (see https://git.io/Jc3F9)的问题 run `npm fund` for details问题解决
  2. java中输出日历_Java打印日历表
  3. ROS 2行动-actions-
  4. 《计算机科学与探索》期刊 从投稿到以为录用,再到拒稿过程
  5. 淘宝4位数七段显示器模块 (74HC595)
  6. 充电:28G各类资料送给您!PPT模板、商业计划书等
  7. 【AI好书】不想被AI降维打击?美国“四院院士”写的这本深度学习科普书了解一下...
  8. WIN7下开机欢迎界面去掉画面下方windows 7 旗舰版
  9. maven快速入门第十七讲——从私服下载jar包到本地仓库
  10. 常见信道通频带、带宽及信息传输速率