[C#]OpenCVで相違度[SAD(Sum of Absolute Difference)]を計算する


相違度[SAD(Sum of Absolute Difference)]は画像をラスタスキャンし、同じ位置の画素の輝度値の差の絶対値の合計が用いられます。
SADの値が小さいほど、似ている位置となります。
OpenCVSharpを使用したコードは以下となります。

static int Get_Sad(IplImage imgA,IplImage imgB)
{
IplImage tmpA = Cv.CreateImage(Cv.GetSize(imgA), BitDepth.F64, imgA.NChannels);
Cv.Scale(imgA, tmpA);
IplImage tmpB;
if (imgA.Width != imgB.Width || imgA.Height != imgB.Height)
{
IplImage _tmpB = new IplImage(Cv.GetSize(imgA), imgA.Depth, imgA.NChannels);
Cv.Resize(imgB, _tmpB, Interpolation.NearestNeighbor);
tmpB = Cv.CreateImage(Cv.GetSize(_tmpB), BitDepth.F64, imgB.NChannels);
Cv.Scale(_tmpB, tmpB);
Cv.ReleaseImage(_tmpB);
}
else
{
tmpB = Cv.CreateImage(Cv.GetSize(imgA), BitDepth.F64, imgB.NChannels);
Cv.Scale(imgB, tmpB);
}
int all = Cv.Round(Cv.Norm(tmpA, tmpB, NormType.L1));
Cv.ReleaseImage(tmpA);
Cv.ReleaseImage(tmpB);
return all;
}



0 件のコメント :

コメントを投稿