mediaLib Library Functions mlibImageNormCrossCorrelFp(3MLIB)
NAME
mlibImageNormCrossCorrelFp - normalized cross correlation
SYNOPSIS
cc [ flag... ] file... -lmlib [ library... ]
#include
mlibstatus mlibImageNormCrossCorrelFp(mlibd64 *correl,
const mlibimage *img1, const mlibimage *img2, const mlibd64 *mean2,
const mlibd64 *sdev2);
DESCRIPTION
The mlibImageNormCrossCorrelFp() function computes the
normalized cross-correlation coefficients between a pair of
floating-point images, on a per-channel basis.
It uses the following equations:
w-1 h-1
SUM SUM (d1[x][y][i] * d2[x][y][i])
x=0 y=0
correl[i] = -------------------------------------
s1[i] * s2[i]
d1[x][y][i] = img1[x][y][i] - m1[i]
d2[x][y][i] = img2[x][y][i] - m2[i]
1 w-1 h-1
m1[i] = ----- * SUM SUM img1[x][y][i]
w*h x=0 y=0
1 w-1 h-1
m2[i] = ----- * SUM SUM img2[x][y][i]
w*h x=0 y=0
w-1 h-1
s1[i] = sqrt{ SUM SUM (img1[x][y][i] - m1[i])**2 }
x=0 y=0
w-1 h-1
s2[i] = sqrt{ SUM SUM (img2[x][y][i] - m2[i])**2 }
x=0 y=0
where w and h are the width and height of the images,
respectively; m1 and m2 are the mean arrays of the first and
second images, respectively; s1 and s2 are the un-normalized
standard deviation arrays of the first and second images,
SunOS 5.11 Last change: 2 Mar 2007 1
mediaLib Library Functions mlibImageNormCrossCorrelFp(3MLIB)
respectively.
In usual cases, the normalized cross-correlation coefficient
is in the range of [-1.0, 1.0]. In the case of (s1[i] == 0)
or (s2[i] == 0), where a constant image channel is involved,
the normalized cross-correlation coefficient is defined as
follows:
#define signof(x) ((x > 0) ? 1 : ((x < 0) ? -1 : 0))
if ((s1[i] == 0.) (s2[i] == 0.)) {
if ((s1[i] == 0.) && (s2[i] == 0.)) {
if (signof(m1[i]) == signof(m2[i]) {
correl[i] = 1.0;
} else {
correl[i] = -1.0;
}
} else {
correl[i] = -1.0;
}
}
The two images must have the same type, the same size, and
the same number of channels. They can have 1, 2, 3 or 4
channels. They can be of type MLIBFLOAT or MLIBDOUBLE.
If (mean2 == NUL) or (sdev2 == NUL), then m2 and s2 are
calculated in this function according to the formulas shown
above. Otherwise, they are calculated as follows:
m2[i] = mean2[i];
s2[i] = sdev2[i] * sqrt(w*h);
where mean2 and sdev2 can be the output of mlibImageMean()
and mlibImageStdDev(), respectively.
In some cases, the resulting coefficients of this function
could be NaN, Inf, or -Inf.
PARAMETERS
The function takes the following arguments:
correl Pointer to normalized cross correlation array on a
channel basis. The array must be the size of chan-
nels in the images. correl[i] contains the cross-
SunOS 5.11 Last change: 2 Mar 2007 2
mediaLib Library Functions mlibImageNormCrossCorrelFp(3MLIB)
correlation of channel i.
img1 Pointer to first image.
img2 Pointer to second image.
mean2 Pointer to the mean array of the second image.
sdev2 Pointer to the standard deviation array of the
second image.
RETURN VALUES
The function returns MLIBSUCES if successful. Otherwise
it returns MLIBFAILURE.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Committed
MT-Level MT-Safe
SEE ALSO
mlibImageAutoCorrel(3MLIB), mlibImageAutoCorrelFp(3MLIB),
mlibImageCrossCorrel(3MLIB),
mlibImageCrossCorrelFp(3MLIB),
mlibImageNormCrossCorrel(3MLIB), attributes(5)
SunOS 5.11 Last change: 2 Mar 2007 3
|