S/N比

信号対雑音比(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;
}

参考文献

アーカイブ