Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mlib_imagenormcrosscorrel(3mlib) [sunos man page]

mlib_ImageNormCrossCorrel(3MLIB)										  mlib_ImageNormCrossCorrel(3MLIB)

NAME
mlib_ImageNormCrossCorrel - normalized cross correlation SYNOPSIS
cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_ImageNormCrossCorrel(mlib_d64 *correl, const mlib_image *img1, const mlib_image *img2, const mlib_d64 *mean2, const mlib_d64 *sdev2); The mlib_ImageNormCrossCorrel() function computes the normalized cross-correlation coefficients between a pair of 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, respec- tively; s1 and s2 are the un-normalized standard deviation arrays of the first and second images, 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 MLIB_BYTE, MLIB_SHORT, MLIB_USHORT or MLIB_INT. If (mean2 == NULL) or (sdev2 == NULL), 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 mlib_ImageMean() and mlib_ImageStdDev(), respectively. The function takes the following arguments: correl Pointer to normalized cross correlation array on a channel basis. The array must be the size of channels in the images. correl[i] contains the cross-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. The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE. See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ mlib_ImageAutoCorrel(3MLIB), mlib_ImageAutoCorrel_Fp(3MLIB), mlib_ImageCrossCorrel(3MLIB), mlib_ImageCrossCorrel_Fp(3MLIB), mlib_ImageNorm- CrossCorrel_Fp(3MLIB), attributes(5) 23 May 2005 mlib_ImageNormCrossCorrel(3MLIB)

Check Out this Related Man Page

mlib_SignalCrossCorrel_S16(3MLIB)			    mediaLib Library Functions				 mlib_SignalCrossCorrel_S16(3MLIB)

NAME
mlib_SignalCrossCorrel_S16, mlib_SignalCrossCorrel_S16S, mlib_SignalCrossCorrel_F32, mlib_SignalCrossCorrel_F32S - signal cross correlation SYNOPSIS
cc [ flag... ] file... -lmlib [ library... ] #include <mlib.h> mlib_status mlib_SignalCrossCorrel_S16(mlib_d64 *correl, const mlib_s16 *src1, const mlib_s16 *src2, mlib_s32 n); mlib_status mlib_SignalCrossCorrel_S16S(mlib_d64 *correl, const mlib_s16 *src1, const mlib_s16 *src2, mlib_s32 n); mlib_status mlib_SignalCrossCorrel_F32(mlib_d64 *correl, const mlib_f32 *src1, const mlib_f32 *src2, mlib_s32 n); mlib_status mlib_SignalCrossCorrel_F32S(mlib_d64 *correl, const mlib_f32 *src1, const mlib_f32 *src2, mlib_s32 n); DESCRIPTION
Each of these functions performs cross correlation. For monaural signals, the following equation is used: 1 n-1 correl[0] = --- * SUM (src1[i] * src2[i]) n i=0 For stereo signals, the following equation is used: 1 n-1 correl[0] = --- * SUM (src1[2*i] * src2[2*i]) n i=0 1 n-1 correl[1] = --- * SUM (src1[2*i + 1] * src2[2*i + 1]) n i=0 PARAMETERS
Each of the functions takes the following arguments: correl Pointer to the cross correlation array. In the stereo version, correl[0] contains the cross correlation of channel 0, and correl[1] contains the cross correlation of channel 1. src1 First source signal array. src2 Second source signal array. n Number of samples in the source signal arrays. RETURN VALUES
Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Evolving | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
mlib_SignalAutoCorrel_S16(3MLIB), attributes(5) SunOS 5.10 10 Nov 2004 mlib_SignalCrossCorrel_S16(3MLIB)
Man Page