博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
离散余弦变换(含源码)
阅读量:6257 次
发布时间:2019-06-22

本文共 1369 字,大约阅读时间需要 4 分钟。

hot3.png

图像处理中常用的正交变换除了傅里叶变换外,还有其他一些有用的正交变换,其中离散余弦就是一种。离散余弦变换表示为DCT( Discrete Cosine Transformation),常用于图像处理和图像识别等。

一维离散余弦变换

正变换

                                   (1)

                            (2)

式中F(u)是第u个余弦变换系数,u是广义频率变量,u=1,2,3......N-1; f(x)是时域N点序列, x=0,1,2......N-1

反变换

  (3)

显然,式(1)式(2)和式(3)构成了一维离散余弦变换对。

二维离散余弦变换

正变换

  (4)

式(4)是正变换公式。其中f(x,y)是空间域二维向量之元素, x,y=0,1,2,......N-1;F(u,v)是变换系数阵列之元素。式中表示的阵列为N×N

反变换

 (5)

式中的符号意义同正变换式一样。式(4)和式(5)是离散余弦变换的解析式定义。

矩阵表示法

更为简洁的定义方法是采用矩阵式定义。根据以上公式定义可知,离散余弦变换的系数矩阵可以写成如下:

如果令N=4,那么由一维解析式定义可得如下展开式。

写成矩阵式

若定义F(u)为变换矩阵,A为变换系数矩阵,f(x)为时域数据矩阵,则一维离散余弦变换的矩阵定义式可写成如下形式

[F(u)]=[A][f(x)]                       6

同理,可得到反变换展开式

写成矩阵式

[f(x)]=[A]T[F(u)]                      (7

二维离散余弦变换也可以写成矩阵式:

[F(u,v)]=[A][f(x,y)][A]T            (8

[f(x,y)]=[A]T[F(u,v)][A]                     

式中[f(x,y)]是空间数据阵列,A是变换系数阵列,[F(u,v)]是变换矩阵,[A]T是[A]的转置。

对二维图像进行离散余弦变换

由以上对二维离散余弦变换的定义及公式(7)可知,求二维图像的离散余弦变换要进行以下步骤:

1.获得图像的二维数据矩阵f(x,y)

2.求离散余弦变换的系数矩阵[A];

3.求系数矩阵对应的转置矩阵[A]T;

4.根据公式(7[F(u,v)]=[A][f(x,y)][A]T 计算离散余弦变换;

源代码:

package cn.edu.jxau.image;import java.awt.image.BufferedImage;/** * 图像的变换 * @author luoweifu * */public class Transformation {	/**	 * 要进行DCT变换的图片的宽或高	 */	public static final int N = 256;		/**	 * 傅里叶变换	 * @return	 */	public int[] FFT() {				return null;	}		/**	 * 离散余弦变换	 * @param pix 原图像的数据矩阵	 * @param n 原图像(n*n)的高或宽	 * @return 变换后的矩阵数组	 */	public int[] DCT(int[] pix, int n) {				double[][] iMatrix = new double[n][n]; 		for(int i=0; i

转载于:https://my.oschina.net/verynix/blog/365785

你可能感兴趣的文章
自己定义View学习之12/7(进度条之混合模式)
查看>>
Android零基础入门第5节:善用ADT Bundle,轻松邂逅女神
查看>>
momentum公式
查看>>
Git合并最近的commit
查看>>
面向对象高级——Object类、包装类以及匿名内部类
查看>>
(转)Mybatis insert后返回主键给实体对象(Mysql数据库)
查看>>
SFTP环境搭建及客户代码调用公共方法封装
查看>>
功能的权衡——推荐功能做不做?
查看>>
用oradebug short_stack及strace -p分析oracle进程是否dead或出现故障
查看>>
Tensorflow 之 TensorBoard可视化Graph和Embeddings
查看>>
jquery easyui里datagrid用法记录
查看>>
【转】C++标准转换运算符const_cast
查看>>
ssh密码
查看>>
常用的HTML富文本编译器UEditor、CKEditor、TinyMCE、HTMLArea、eWebEditor、KindEditor简介...
查看>>
【Saltstack】Saltstack简单说明
查看>>
[转]香农信息论与毒药称球问题
查看>>
HTTP Error 500.19
查看>>
我在博客园的这一年
查看>>
红黑树
查看>>
Jackson使用ObjectManage#readValue传入泛型T的问题
查看>>