⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eprecinct.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
字号:
/* ////////////////////////////////////////////////////////////////////////////                  INTEL CORPORATION PROPRIETARY INFORMATION//     This software is supplied under the terms of a license agreement or//     nondisclosure agreement with Intel Corporation and may not be copied//     or disclosed except in accordance with the terms of that agreement.//          Copyright(c) 2002-2005 Intel Corporation. All Rights Reserved.//////*/#include <cfloat>#include "eprecinct.h"void EPrecinct::Init(const Rect &rect, int cbXStepOrder, int cbYStepOrder){    m_cbGrid.Init(rect, RectSize(cbXStepOrder, cbYStepOrder));    m_cbs.ReAlloc(m_cbGrid.NOfCells());    m_inclTagTree.Init(m_cbGrid.SizeRowCol());    m_zbplTagTree.Init(m_cbGrid.SizeRowCol());}void EPrecinct::ScaleDist(double factor){    for(int i = 0; i < NOfCBs(); i++)        m_cbs[i].ScaleDist(factor);}void EPrecinct::CalcRDSlopes(){    for(int i = 0; i < NOfCBs(); i++)        m_cbs[i].CalcRDSlopes();}void EPrecinct::RDSlopesMinMax(double &min, double &max) const{    min = DBL_MAX;    max = 0;    for(int i = 0; i < NOfCBs(); i++)    {        double cbMin;        double cbMax;        m_cbs[i].RDSlopesMinMax(cbMin, cbMax);        if(cbMax > max) max = cbMax;        if(cbMin < min) min = cbMin;    }}void EPrecinct::AssignLayerTillCurPass(int layer, double threshold){    for(int i = 0; i < NOfCBs(); i++)        m_cbs[i].AssignLayerTillCurPass(layer, threshold);}void EPrecinct::AssignLayerTillCurPass(int layer){    for(int i = 0; i < NOfCBs(); i++)        m_cbs[i].AssignLayerTillCurPass(layer);}void EPrecinct::StoreEncodingState(){    m_inclTagTreeStore = m_inclTagTree;    m_zbplTagTreeStore = m_zbplTagTree;    for(int cbIndx = 0; cbIndx < NOfCBs(); cbIndx++)        m_cbs[cbIndx].StoreEncodingState();}void EPrecinct::RestoreEncodingState(){    for(int cbIndx = 0; cbIndx < NOfCBs(); cbIndx++)        m_cbs[cbIndx].RestoreEncodingState();    m_inclTagTree = m_inclTagTreeStore;    m_zbplTagTree = m_zbplTagTreeStore;}void EPrecinct::SetTagTrees(int layer){    for(int cbIndx = 0; cbIndx < NOfCBs(); cbIndx++)    {        ECodeBlock &cb = m_cbs[cbIndx];        if (layer==0)            m_zbplTagTree.SetValue(cbIndx, cb.NOfZeroBits());        if (cb.IsIncluded(layer) && cb.IsFirstInclusion())            m_inclTagTree.SetValue(cbIndx, layer);    }}void EPrecinct::SetCurPassToFirst(){    for(int cbIndx = 0; cbIndx < NOfCBs(); cbIndx++)    {        m_cbs[cbIndx].SetCurPassToFirst();    }}void EPrecinct::Encode(          CBEncoder      &cbEncoder,    const ImageCore32sC1 &precinct,          IppiWTSubband   subband,          int             sbDynRange,          int             sbLowestBitOffset){    GridPow2RelativeIterator ii(m_cbGrid);    for(int i = 0; i < NOfCBs(); i++)    {        cbEncoder.Encode(precinct, ii, subband, sbDynRange, sbLowestBitOffset, m_cbs[i]);        ++ii;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -