亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? select_gauss.cpp

?? Intel開發的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) 1999-2006 Intel Corporation. All Rights Reserved.
//
//     Intel(R) Integrated Performance Primitives Gaussian Mixture Sample for Windows*
//
//  By downloading and installing this sample, you hereby agree that the
//  accompanying Materials are being provided to you under the terms and
//  conditions of the End User License Agreement for the Intel(R) Integrated
//  Performance Primitives product previously accepted by you. Please refer
//  to the file ippEULA.rtf located in the root directory of your Intel(R) IPP
//  product installation for more information.
//
//
//     Gaussian Selection Class
//
*/


#include "select_gauss.h"
#include "prob_calc.h"

int CountArray[]={0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,
 4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,
 2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,
 4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,
 5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,
 5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8};

static int Own_Correct_Equ_E_32f(Ipp32f num1, Ipp32f num2)
{
    if(((num1-num2)<=0.000001*IPP_MAX(num1,num2))&&((num1-num2)>=-0.000001*IPP_MAX(num1,num2)))
        return 1;
    else
        return 0;
}

Select_Gauss::Select_Gauss (int cdbk_size, bool is_row, int n_vec, float val, int num_clust, int spc_dim) {
   cdbksize      = cdbk_size;
   num_clusters  = num_clust;
   treshold      = val;
   num_vec       = n_vec;
   this->is_row  = is_row;
   space_dim     = spc_dim;
   space_dim4    = 0;
   gauss_num     = 0;
   max_len       = 0;
   states_num    = 0;
   count_all     = 0;
   count_one     = 0;
   pCdbk         = NULL;
   pIndx         = NULL;
   MixTable      = NULL;
   local_weights = NULL;
   pShortlist    = NULL;
}

Select_Gauss::~Select_Gauss(void) {
//   int j;

   if (pCdbk)         ippsCdbkFree_32f(pCdbk);
   if (pIndx)         ippsFree(pIndx);
   if (MixTable)      ippsFree(MixTable);
   if (local_weights) ippsFree(local_weights);
   if (pShortlist)    ippsFree(pShortlist);
   pCdbk         = NULL;
   pIndx         = NULL;
   MixTable      = NULL;
   local_weights = NULL;
   pShortlist    = NULL;
   cdbksize      = 0;
   num_clusters  = 0;
   treshold      = 0;
   num_vec       = 0;
   is_row        = 0;
   space_dim     = 0;
   space_dim4    = 0;
   gauss_num     = 0;
   max_len       = 0;
   states_num    = 0;
   count_all     = 0;
   count_one     = 0;
}

int Select_Gauss::Init_SelectGauss_Simple(int m_len, int m_gauss, int gss_num, float *tmpcodebook,
                                          float *weights, float *meanSet, Mixture *st, int st_num) {
   int i;

   if (cdbksize<2)              return -1;
   if (space_dim<=0)            return -1;

   max_len=m_len,
   max_gauss=m_gauss,
   gauss_num=gss_num;
   states=st;
   states_num=st_num;
   space_dim4=(space_dim+3)&(~3);

   if (num_clusters<1)          num_clusters=1;
   if (num_clusters>cdbksize)   num_clusters=cdbksize;
   if (num_vec>max_gauss)       num_vec=max_gauss;
   if (num_vec<0)               num_vec=0;
   if (treshold<1.0f)           treshold=1.0f;

   if (!(local_weights=ippsMalloc_32f(space_dim4))) {
      return -2;
   }
   ippsCopy_32f(weights,local_weights,space_dim4);


   if (ippsCdbkInitAlloc_WgtL2_32f(&pCdbk,tmpcodebook,weights,space_dim4,space_dim4,cdbksize,cdbksize,
                                    IPP_CDBK_FULL)!=ippStsNoErr) {
      return -4;
   }

   i=CommonInit(meanSet);

   if (i!=0) return -4;

   return 0;
}

int Select_Gauss::Init_SelectGauss_Full(int m_len, int m_gauss, int gss_num, float *tmpcodebook,
                                        float *t_weights, float *meanSet, Mixture *st,int st_num) {
   int i,j;
   float *g_means,*g_vars;

   if (cdbksize<2)              return -1;
   if (space_dim<=0)            return -1;

   max_len=m_len,
   max_gauss=m_gauss,
   gauss_num=gss_num;
   states=st;
   states_num=st_num;
   space_dim4=(space_dim+3)&(~3);

   if (num_clusters<1)          num_clusters=1;
   if (num_clusters>cdbksize)   num_clusters=cdbksize;
   if (num_vec>max_gauss)       num_vec=max_gauss;
   if (num_vec<0)               num_vec=0;
   if (treshold<1.0f)           treshold=1.0f;

   if (!(local_weights=ippsMalloc_32f(space_dim4*3))) {
      return -2;
   }

   g_means=local_weights+space_dim4;
   g_vars=g_means+space_dim4;

   if (ippsMeanVarColumn_32f_D2(meanSet,gauss_num,space_dim4,g_means,g_vars,space_dim4)!=ippStsNoErr) {
      return -3;
   }
   ippsSet_32f(1.0f,g_vars+space_dim,space_dim4-space_dim);

   ippsSet_32f(1.0f,t_weights,space_dim4);
   i=ippsDiv_32f_I(g_vars,t_weights,space_dim4);

   if(i!=0){                           // It means problem occured in ippsDiv_32f_I function
       if(i==6){                       // Zero value(s) of the divisor in the function Div
           i=0;
           for(j=0;j<space_dim4;j++){  // Should manually divide vector
               if(Own_Correct_Equ_E_32f(g_vars[j],0.0f)){ // g_vars[j]==0.0f
                   t_weights[j]=0.0f;
                   i++;
               }else{
                   t_weights[j]=1.0f/g_vars[j];
               }
           }

           if(i==space_dim4){          // All g_vars is equal ZERO so creating of codebook is impossible
               return -5;              // Only one cluster can be created so this example will be senseless
           }
       }else{
           return -6;
       }
   }


   if (ippsCdbkInitAlloc_WgtL2_32f(&pCdbk,meanSet,t_weights,space_dim4,space_dim4,gauss_num,cdbksize,
      IPP_CDBK_KMEANS_NUM)!=ippStsNoErr) {
      return -4;
   }

   ippsCopy_32f(g_means,local_weights,space_dim4);
   if (ippsGetCodebook_32f(pCdbk,tmpcodebook,space_dim4)!=0) {
      return -3;
   }

   i=CommonInit(meanSet);

   if (i!=0) return -4;

   return 0;
}

int Select_Gauss::CreateShortList(float *meanSet) {
   Ipp32s* tmpIndx;
   int i,j,k,l;
   CdbkState_32f* tmpCdbk;
   Ipp32f* tmpVec;
   Ipp32s* pNums;

   Listlen=((gauss_num+7)&(~7))/8;
   if (!(pShortlist=(Ipp8u**)ippsMalloc_8u((sizeof(Ipp8u*)+sizeof(Ipp8u)*Listlen)*cdbksize))) {
       return -2;
   }

   for (i=0; i<cdbksize; i++)
       pShortlist[i]=((Ipp8u*)(pShortlist+cdbksize))+i*Listlen;
   ippsSet_8u(0,pShortlist[0],cdbksize*Listlen);

   if (is_row) { //******* Row fill *******

       if (!(tmpVec=ippsMalloc_32f((space_dim4+max_gauss+1)*cdbksize)))
            return -2;
       tmpIndx=(Ipp32s*)(tmpVec+space_dim4*cdbksize);
       pNums=tmpIndx+max_gauss*cdbksize;

       if (ippsGetCodebook_32f(pCdbk,tmpVec,space_dim4)!=ippStsNoErr)
            return -4;

       if (num_vec>0) {

          if(num_vec>max_gauss) num_vec=max_gauss;
          ippsSet_32s(0,tmpIndx,cdbksize*num_vec);

          for (j=0; j<states_num; j++) {

              if (ippsCdbkInitAlloc_WgtL2_32f(&tmpCdbk,meanSet+space_dim4*states[j].compInd,
                 local_weights,space_dim4,space_dim4,states[j].compNum,states[j].compNum,
                 IPP_CDBK_FULL)!=ippStsNoErr) {
                 return -4;
              }
              if (num_vec>states[j].compNum) l=states[j].compNum;
              else                           l=num_vec;

              for (i=0; i<cdbksize; i++) {
                  if (ippsVQSingle_Sort_32f(tmpVec+space_dim4*i,tmpIndx+l*i,tmpCdbk,l)!=ippStsNoErr) {
                     return -4;
                  }
              }
              if (ippsFillShortlist_Row_1u(tmpIndx,states[j].compNum,l,pShortlist,cdbksize,Listlen,
                 states[j].compInd)!=ippStsNoErr) {
                 return -4;
              }
              ippsCdbkFree_32f(tmpCdbk);
          }

       } else {
          ippsSet_32s(0,tmpIndx,cdbksize*max_gauss);

          for (j=0; j<states_num; j++) {
              if (ippsCdbkInitAlloc_WgtL2_32f(&tmpCdbk,meanSet+space_dim4*states[j].compInd,
                 local_weights,space_dim4,space_dim4,states[j].compNum,states[j].compNum,
                 IPP_CDBK_FULL)!=ippStsNoErr) {
                 return -4;
              }
              for (i=0,k=0; i<cdbksize; i++) {
                 ippsVQSingle_Thresh_32f(tmpVec+space_dim4*i,tmpIndx+k,tmpCdbk,treshold,&pNums[i]);
                 k+=pNums[i];
              }
              ippsFillShortlist_RowVar_1u(tmpIndx,pNums,states[j].compNum,pShortlist,cdbksize,Listlen,
                 states[j].compInd);
              ippsCdbkFree_32f(tmpCdbk);
            }
       }
       if (tmpVec) ippsFree(tmpVec);

   } else {  //******* Column fill *******

       if (!(tmpIndx=ippsMalloc_32s(cdbksize)))
            return -2;

       if(num_vec>cdbksize) num_vec=cdbksize;

       for (i=0; i<gauss_num; i++) {
           if (num_vec>0) {
               ippsVQSingle_Sort_32f(meanSet+space_dim4*i,tmpIndx,pCdbk,num_vec);
               j=num_vec;
           } else {
               ippsVQSingle_Thresh_32f(meanSet+space_dim4*i,tmpIndx,pCdbk,treshold,&j);
           }
           ippsFillShortlist_Column_1u(tmpIndx,j,pShortlist,cdbksize,Listlen,i,1);
       }
       if (tmpIndx) ippsFree(tmpIndx);
   }

   return 0;
}

int Select_Gauss::CommonInit(float *means) {

   if (!(pIndx=(int*)ippsMalloc_32s(max_len*num_clusters))) {
      return -2;
   }

   if (!(MixTable=(Ipp8u*)ippsMalloc_8u(max_len*max_gauss))) {
      return -2;
   }

   ippsSet_8u(0x00,MixTable,max_len*max_gauss);

    return CreateShortList(means);
}

int Select_Gauss::WriteVQ(float* feature, int shift, int len) {
   int i;

   for (i=0; i<len; i++) {
      if (ippsVQSingle_Sort_32f(feature+space_dim4*i, pIndx+(shift+i)*num_clusters, pCdbk, num_clusters)!=ippStsNoErr)
         return -1;
    }

    return 0;
}


int Select_Gauss::ShiftIndxBegin(int len) {
   int i,j;

   for (i=0; i<len; i++)
      for (j=0; j<num_clusters; j++)
         pIndx[i*num_clusters+j]=pIndx[max_len*num_clusters-len*num_clusters+i*num_clusters+j];
    return 0;
}

int Select_Gauss::FillSign(int esnmix, int shiftbits, int num,int shift) {
    int i,k;

    ippsBuildSignTable_8u1u(pIndx+shift*num_clusters, num_clusters, (const Ipp8u**)pShortlist, cdbksize,
      Listlen, shiftbits, MixTable, num, esnmix);

    k=(esnmix+7)/8;
    count_all+=num*esnmix;
    for(i=0;i<num*k;i++)
        count_one+=CountArray[MixTable[i]];
    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频黄久久| 不卡的av电影| 波多野结衣在线一区| 欧美久久婷婷综合色| 国产精品久线观看视频| 亚洲va天堂va国产va久| www.欧美日韩| 久久久影视传媒| 午夜激情一区二区| 色婷婷精品大视频在线蜜桃视频| 精品久久久网站| 人人狠狠综合久久亚洲| 欧美视频一区在线| 亚洲欧美在线aaa| 国产99精品视频| 国产亚洲成aⅴ人片在线观看| 午夜亚洲福利老司机| 在线看日本不卡| 亚洲黄色片在线观看| 成人涩涩免费视频| 久久久不卡网国产精品一区| 久久99精品久久久久| 91精品蜜臀在线一区尤物| 亚洲自拍偷拍av| 色婷婷综合中文久久一本| 国产精品女主播在线观看| 国产成人8x视频一区二区| 国产无遮挡一区二区三区毛片日本| 日韩精品三区四区| 欧美一区二区网站| 欧美aaaaaa午夜精品| 日韩一区二区麻豆国产| 国产精品一区专区| 久久综合九色综合欧美亚洲| 人人爽香蕉精品| 欧美日韩1234| 天天综合网天天综合色| 一本色道久久加勒比精品| 高清不卡在线观看| 欧美视频第二页| 午夜精品久久久久久久| 欧美日韩一区在线观看| 天天综合天天综合色| 欧美巨大另类极品videosbest| 日日夜夜免费精品视频| 欧美大片一区二区三区| 激情久久五月天| 国产女同性恋一区二区| 91麻豆精品在线观看| 天堂久久一区二区三区| 亚洲精品一区二区三区四区高清| 国产成人av一区二区三区在线观看| 中文字幕一区在线| 欧美日韩国产三级| 极品美女销魂一区二区三区| 国产精品情趣视频| 欧美视频在线观看一区二区| 六月丁香婷婷久久| 日韩码欧中文字| 在线观看91av| 成人做爰69片免费看网站| 一区二区三区久久| 日韩一区二区视频| 99久久久精品| 麻豆91精品视频| 亚洲精品免费播放| 欧美不卡一区二区三区| www.性欧美| 麻豆国产欧美日韩综合精品二区| 国产精品久久久久三级| 欧美一区二区三区在线电影| 国产电影精品久久禁18| 日日夜夜免费精品| 国产精品视频你懂的| 欧美一区二区三区视频免费| 暴力调教一区二区三区| 久久爱另类一区二区小说| 一区二区三区免费看视频| 久久久国产午夜精品| 欧美日韩一区二区在线观看视频 | 色呦呦国产精品| 蜜桃视频一区二区| 亚洲综合视频在线观看| 国产日韩欧美在线一区| 日韩免费视频一区二区| 在线欧美日韩精品| 国产91精品免费| 韩国av一区二区| 亚洲成a人v欧美综合天堂下载| 国产精品区一区二区三| 久久综合九色综合97婷婷| 欧美日韩高清一区二区三区| 国产成人亚洲综合a∨婷婷| 日韩成人免费看| 一区二区三区四区在线| 中文字幕日韩欧美一区二区三区| 精品国内二区三区| 日韩一级免费观看| 欧美人狂配大交3d怪物一区| 色婷婷综合久久久久中文一区二区| 成人深夜视频在线观看| 国产黄色精品视频| 国产一区二区三区在线观看免费 | 色综合久久综合网97色综合| 国产a视频精品免费观看| 国产精品亚洲第一区在线暖暖韩国| 日本欧美久久久久免费播放网| 亚洲一二三四区不卡| 亚洲男同1069视频| 亚洲欧美乱综合| 一区二区在线观看视频 | 久久精品国产精品亚洲综合| 日韩精品成人一区二区在线| 同产精品九九九| 五月婷婷久久综合| 三级精品在线观看| 美女国产一区二区三区| 麻豆精品国产91久久久久久| 国内精品免费**视频| 狠狠色丁香婷婷综合| 国产一区二区网址| 成人免费毛片aaaaa**| 99天天综合性| 91福利在线免费观看| 欧美精品黑人性xxxx| 欧美一激情一区二区三区| 日韩免费在线观看| 久久精品一区二区三区不卡| 国产女人水真多18毛片18精品视频| 中文子幕无线码一区tr| 亚洲欧洲日韩在线| 亚洲午夜精品在线| 久久国产精品色| 国产精品综合视频| 91在线视频播放地址| 欧美精品电影在线播放| 精品成人一区二区三区四区| 欧美激情一区二区三区在线| 亚洲精品免费看| 久久成人免费网站| 99精品1区2区| 日韩写真欧美这视频| 中文av一区二区| 视频一区在线播放| 高清beeg欧美| 91精品国产福利| 国产精品美女www爽爽爽| 午夜亚洲国产au精品一区二区| 极品少妇一区二区三区精品视频 | 日韩欧美精品在线视频| 国产精品伦一区| 肉肉av福利一精品导航| 国产成人8x视频一区二区| 欧美日韩一二三区| 国产欧美日韩激情| 日韩精品一级二级| 91丨porny丨中文| 亚洲精品在线三区| 亚洲夂夂婷婷色拍ww47| 国产在线播精品第三| 欧美综合色免费| 日本一区二区久久| 美女脱光内衣内裤视频久久网站 | 国产情人综合久久777777| 一区二区三区91| 成人中文字幕合集| 欧美一区二区三区啪啪| 18欧美亚洲精品| 国产成人自拍高清视频在线免费播放| 在线观看区一区二| 国产精品色婷婷久久58| 激情欧美一区二区| 91麻豆精品国产91久久久久| 一区在线中文字幕| 韩国在线一区二区| 欧美一卡二卡在线观看| 亚洲一区二区三区国产| 99精品热视频| 亚洲国产高清在线观看视频| 麻豆精品久久久| 欧美一级片免费看| 亚洲成人777| 欧美亚洲丝袜传媒另类| 亚洲欧美日韩一区二区| 成人在线视频一区二区| 久久精品在线免费观看| 狠狠色丁香婷婷综合久久片| 欧美一二三区精品| 麻豆精品一区二区| 日韩视频在线你懂得| 免费成人av在线播放| 欧美一区二区在线免费观看| 天堂精品中文字幕在线| 欧美精品777| 蜜臀av性久久久久蜜臀aⅴ流畅| 777xxx欧美| 偷拍亚洲欧洲综合| 欧美一级片在线看| 久久成人久久爱| 国产欧美中文在线|