PSNR&SSIM

全參考視頻質量評價方法

常用的方法有兩種
1.PSNR(Peak Signal to Noise Ratio)峰值信噪比:一種評價圖像的客觀標準膝迎。
2.SSIM(structural similarity index)霉晕,結構相似性驶拱,是一種衡量兩幅圖像相似度的指標梯皿。SSIM使用的兩張圖像中揣云,一張為未經壓縮的無失真圖像妆绞,另一張為失真后的圖像板惑。

PSNR_ C語言實現(xiàn):
void PSNR_compute()
{
 int width  = //寬;
  int height = //高;

  uint8_t* p = (uint8_t*)malloc(width*height*3/2);
  if (p == NULL) {
    return;
  }

  size_t toread = width*height*3/2;
  if (fread(p,1,toread,reference_file) != toread) {
    free(p);
    return;
  }

  const uint8_t* yptr  = //y分量;
  const uint8_t* cbptr = //cb分量;
  const uint8_t* crptr = //cr分量;

  int stride = Y的stride.
  int cstride = U或者V的Stride;

  double img_mse_y  = MSE( yptr,  stride, p, width,   width, height);
  double img_mse_cb = MSE(cbptr, cstride, p+width*height,      width/2, width/2,height/2);
  double img_mse_cr = MSE(crptr, cstride, p+width*height*5/4,  width/2, width/2,height/2);

  mse_frames++;

  mse_y  += img_mse_y;
  mse_cb += img_mse_cb;
  mse_cr += img_mse_cr;

  printf("%5d %6f %6f %6f %6f\n",
         framecnt,
         PSNR(img_mse_y), PSNR(img_mse_cb), PSNR(img_mse_cr),
         ssimSum);

  free(p);
}

double MSE(const uint8_t* img, int imgStride,
           const uint8_t* ref, int refStride,
           int width, int height)
{
  double sum=0.0;

  const uint8_t* iPtr = img;
  const uint8_t* rPtr = ref;

  for (int y=0;y<height;y++) {
    uint32_t lineSum=0;

    for (int x=0;x<width;x++) {
      int diff = iPtr[x] - rPtr[x];
      lineSum += diff*diff;
    }

    sum += ((double)lineSum)/width;

    iPtr += imgStride;
    rPtr += refStride;
  }

  return sum/height;
}
double PSNR(double mse)
{
  if (mse==0) { return 99.99999; }

  return 10*log10(255.0*255.0/mse);
}

void main () {

  while () {
     //計算所有裆熙。
     PSNR_compute()
  }
    //最終結果
    printf("#total  %6f %6f %6f %6f\n",
           PSNR(mse_y /mse_frames),
           PSNR(mse_cb/mse_frames),
           PSNR(mse_cr/mse_frames),
           ssim_y/ssim_frames);
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末端礼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子入录,更是在濱河造成了極大的恐慌蛤奥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僚稿,死亡現(xiàn)場離奇詭異凡桥,居然都是意外死亡,警方通過查閱死者的電腦和手機蚀同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門缅刽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蠢络,你說我怎么就攤上這事衰猛。” “怎么了刹孔?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵腕侄,是天一觀的道長。 經常有香客問我芦疏,道長冕杠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任酸茴,我火速辦了婚禮分预,結果婚禮上,老公的妹妹穿的比我還像新娘薪捍。我一直安慰自己笼痹,他們只是感情好配喳,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凳干,像睡著了一般晴裹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上救赐,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天涧团,我揣著相機與錄音,去河邊找鬼经磅。 笑死泌绣,一個胖子當著我的面吹牛,可吹牛的內容都是我干的预厌。 我是一名探鬼主播阿迈,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轧叽!你這毒婦竟也來了苗沧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤炭晒,失蹤者是張志新(化名)和其女友劉穎待逞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腰埂,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡飒焦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年蜈膨,在試婚紗的時候發(fā)現(xiàn)自己被綠了屿笼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡翁巍,死狀恐怖驴一,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情灶壶,我是刑警寧澤肝断,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站驰凛,受9級特大地震影響胸懈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜恰响,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一趣钱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胚宦,春花似錦首有、人聲如沸燕垃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卜壕。三九已至,卻和暖如春烙常,著一層夾襖步出監(jiān)牢的瞬間轴捎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工军掂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轮蜕,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓蝗锥,卻偏偏與公主長得像跃洛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子终议,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容