WEB开发网
开发学院软件开发VC DCT快速变换 阅读

DCT快速变换

 2010-07-25 20:45:40 来源:WEB开发网   
核心提示:多线程的考量由于DCT变换要花费一定的时间,特别是在数据矩阵尺寸比较大的时候,DCT快速变换(6),此时,如果没有增加一个线程来执行DCT变换,增加一个用来进行DCT变换的线程是十分必要的,首先定义一个结构typedef struct{int row;int col;double *data;//double *dat

多线程的考量由于DCT变换要花费一定的时间,特别是在数据矩阵尺寸比较大的时候。此时,如果没有增加一个线程来执行DCT变换,操作界面可能因程序忙于DCT变换的计算而失去响应,所以,增加一个用来进行DCT变换的线程是十分必要的。

首先定义一个结构

typedef struct
{
   int row;
   int col;
   double *data;
   //double *data2;
   //double *data3; // 在计算彩色图象的数据矩阵时,彩色图象用RGB三个分量
   bool m_bfinished;
   DWORD m_start,m_end; //以毫秒计,用来计算DCT变换所用的时间;
}RUNINFO;

DCT变换进程函数:

UINT ThreadProcfastDct(LPVOID pParam)
{
   RUNINFO *pinfo = (RUNINFO*)pParam;
   pinfo->m_start = ::GetTickCount();
   fdct_2D((double *)pinfo->data, GetTwoIndex(pinfo->row), GetTwoIndex(pinfo->col));
   pinfo->m_end = ::GetTickCount();
   pinfo->m_bfinished = true;
   return 1;
}

IDCT变换进程函数:

UINT ThreadProcfastIDct(LPVOID pParam)
{
   RUNINFO *pinfo = (RUNINFO*)pParam;
   pinfo->m_start = ::GetTickCount();
   fidct_2D((double *)pinfo->data, GetTwoIndex(pinfo->row), GetTwoIndex(pinfo->col));
   pinfo->m_end = ::GetTickCount();
   pinfo->m_bfinished = true;
   return 1;
}

上一页  1 2 3 4 5 6 7  下一页

Tags:DCT 快速 变换

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接