// 对亮度信号进行FDCT变换
// @param   data    亮度信号的存储数组

void CompressEncode::standardFDCT(BYTE data[MATRIXSIZE][MATRIXSIZE])
{
    BYTE output[MATRIXSIZE][MATRIXSIZE];
    double alpha, beta;
    short u = 0, v = 0;
    short x = 0, y = 0;
    for (v = 0; v < MATRIXSIZE; ++v) {  // 垂直
        for (u = 0; u < MATRIXSIZE; ++u) { // 水平
            // 设定C(u),C(v)系数
            alpha = 1;
            if (u == 0) alpha = sqrt(1.0 / 2.0);

            beta = 1;
            if (v == 0) beta = sqrt(1.0 / 2.0);

            double tmp = 0.0;
            for (x = 0; x < MATRIXSIZE; ++x) {
                for (y = 0; y < MATRIXSIZE; ++y) {
                    // DCT接收的自变量值域为[-128,127], 所以各变量要减128
                    tmp += (data[x][y] - 128)
                        *cos((2 * x + 1)*u*M_PI / (2.0*MATRIXSIZE))
                        *cos((2 * y + 1)*v*M_PI / (2.0*MATRIXSIZE));
                }
            }

            output[u][v] = round_double((alpha*beta / 4) *tmp);
        }

        // 把变换结果写回到原缓冲区
        memset(data, 0, MATRIXSIZE*MATRIXSIZE * sizeof(BYTE));
        memcpy(data, output, MATRIXSIZE*MATRIXSIZE * sizeof(BYTE));
    }
}

FDCT变换 公式法的更多相关文章

  1. [问题2014A02] 解答三(降阶公式法)

    [问题2014A02] 解答三(降阶公式法) 将矩阵 \(A\) 写成如下形式: \[A=\begin{pmatrix} -2a_1 & 0 & \cdots & 0 & ...

  2. C语言复习---获取最小公倍数(公式法:两个数相乘等于最小公倍数乘以最大公约数)

    公式法:两个数相乘等于最小公倍数乘以最大公约数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib ...

  3. Maths | 离散K-L变换/ 主成分分析法

    目录 1. 概述 2. K-L变换方法和原理推导 2.1. 向量分解 2.2. 向量估计及其误差 2.3. 寻找最小误差对应的正交向量系 3. K-L变换高效率的本质 4. PCA在编.解码应用上的进 ...

  4. - > 最大公约数(辗转相除法)和最小公倍数(公式法)

    最大公约数 #include<iostream> using namespace std; int a,b; int gcd(int x,int y){ return x==0?y:gcd ...

  5. 51nod 1073约瑟夫环 递归公式法

    约瑟夫环问题的原来描述为,设有编号为1,2,--,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,- ...

  6. 【Unity3d游戏开发】Unity3D中常用的物理学公式

    马三最近在一直负责Unity中的物理引擎这一块,众所周知,Unity内置了NVIDIA公司PhysX物理引擎.然而,马三一直觉得只会使用引擎而不去了解原理的程序猿不是一位老司机.所以对一些常用的物理学 ...

  7. OpenGL变换

    概述 OpenGL变换矩阵 实例:GL_MODELVIEW矩阵 实例:GL_PROJECTION矩阵 概述 OpenGL管线中,在光栅化操作之前,包括顶点位置与法线向量的几何数据经顶点操作与图元装配操 ...

  8. opengl视图变换 投影变换推导

    视图变换在opengl中,视图变换的输入是:(1)眼睛位置(或者说相机位置)eys:(2)眼睛朝向的中心center,(就是眼睛朝哪里看);(3)头的方向up.任何一点经过视图变换后都会转化到眼睛坐标 ...

  9. H.264编码之DCT变换原理

    DCT变换是一种与FFT变换紧密相连的数学运算,当函数为偶函数是,其傅立叶展开式只有余弦项,因些称为余弦变换,其离散化的过程称为DCT(离散余弦)变换.下面我们就推导下H.264的4x4整数DCT公式 ...

随机推荐

  1. libcpmt.lib 与 msvcprt.lib

    https://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

  2. Forward-backward梯度求导(tensorflow word2vec实例)

    考虑不可分的例子         通过使用basis functions 使得不可分的线性模型变成可分的非线性模型 最常用的就是写出一个目标函数 并且使用梯度下降法 来计算     梯度的下降法的梯度 ...

  3. LeetCode——Single Number II(找出数组中只出现一次的数2)

    问题: Given an array of integers, every element appears three times except for one. Find that single o ...

  4. 数据库错误:check the manual that corresponds to your MySQL server version for the right sy

    检查对应到您的MySQL服务器版本附近使用正确的语法手册 数据库插入的时候出现上述问题,总结了两方面原因: 1.语法错误,这是百度之得到的大部分结果,但是没有解决我的问题 2.仔细观察我的sql语句, ...

  5. QA is more than Testing

    前话:在测试这个行业做了挺多年了,都快忘记自己大学的专业是国际经济与贸易,一个选择可能就决定了一生的方向. 但既然做了选择,就走下去. ----------------- 在这么多年的工作中,测试始终 ...

  6. apache配置多个版本php

    参看链接:http://my.oschina.net/u/2366984/blog/543148?p={{page}} 主要虚拟主机配置信息 FcgidInitialEnv PHPRC "D ...

  7. Bestcoder Round #84

    A题 Aaronson http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=718&pid=1001 感觉一 ...

  8. R实现灰色预测

    1.简介 预测就是借助于对过去的探讨去推测.了解未来.灰色预测通过原始数据的处理和灰色模型的建立,发现.掌握系统发展规律,对系统的未来状态做出科学的定量预测.对于一个具体的问题,究竟选择什么样的预测模 ...

  9. H5移动前端开发常用高能css3汇总

    1.禁止a标签点击高亮,这些都是非官方属性,但实用性超强 html,body{ -webkit-touch-callout: none; //禁止或显示系统默认菜单 -webkit-user-sele ...

  10. ZeroMQ接口函数之 :zmq_ctx_shutdown - 停止一个ZMQ context

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_shutdown zmq_ctx_shutdown(3) ØMQ Manual - ØMQ/4.1.0 N ...