信号対雑音比(S/N比)は、いろいろな式がありますが、一例として画像の最大値を基準としてdBで表す場合は以下の式で表されます。
:雑音の濃淡レベルの分散
たとえば、フィルタなどで修復画像を作成したときに、元の画像とのS/N比を計算しようとした場合は、計算が適用されていない4隅の辺付近の画像は、S/N比の計算対象から除外しなければなりません。
/* S/N比を計算する。この例では、btRefineの画像はノイズがないものとして扱っている。 したがって、雑音成分はbtOrigとbtRefineの差として計算している。 4隅の辺を対象外としている。 */ double sn_ratio( BYTE *btOrig, BYTE *btRefine, int nRow, int nCol ) { int i, j; double dDif, dSNR, dMean, dSum, dDifSum; dSum = 0; dDifSum = 0; //雑音成分の平均値を求める for ( i = 1; i < nRow-1; i++ ) { for ( j = 1; j < nCol-1; j++ ) { dDifSum += btOrig[i*nCol+j] - btRefine[i*nCol+j]; } } dMean = dDifSum/((nRow-2)*(nCol-2)); //雑音成分の分散を求める。 for ( i = 1; i < nRow-1; i++ ) { for ( j = 1; j < nCol-1; j++ ) { dDif = btOrig[i*nCol+j] - btRefine[i*nCol+j]; dSum += ( dDif - dMean ) * ( dDif - dMean ); } } dSum = dSum / ((nRow-2)*(nCol-2)); dSNR = 10.0 * log10( (255.0*255.0) / dSum ) return dSNR; }