[cpp] ippiFilterSobelVert_8u16s_C1R(pData, iDataStep, dx, dxStep, size, ippMskSize3x3); ippiFilterSobelHoriz_8u16s_C1R(pData, iDatatep, dy, dyStep, size, ippMskSize3x3); ippiAbs_16s_C1IR(dx, dxStep, size); ippiAbs_16s_C1IR(dy, dyStep, size); ippiAdd_16s_C1IRSfs(dx, dxStep, dy, dyStep, size, 0); ippiConvert_16s8u_C1R(dy, dyStep, pEdgeData, iEdgeDataStep, size); ippiFilterDenoiseCAST_8u_C1R(pData, NULL, iDataStep, pEdgeData, iEdgeDataStep, size, pDataOut, iDataOutStep, NULL, ¶m);[/cpp]
TemporalDifferenceThreshold, NumberOfMotionPixelsThresholdare used to determine whether the block is a static or a motion one: the block is considered a motion one if the number of pixels with values differing from the value of the co-located pixel in the previous frame by more than TemporalDifferenceThreshold exceeds NumberOfMotionPixelsThreshold.
GaussianThreshold: used to select the spatially adjacent pixels to be involved in the smoothing of the current pixel: only the pixels spatially adjacent to the current pixel, with values differing from that of the current pixel by less than GaussianThreshold, participate in the smoothing of the current pixel.
In ippiFilterDenoiseCAST_8u_C1R(), solely GaussianThresholdY is employed, while in ippiFilterDenoiseCASTYUV422_8u_C2R(), GaussianThresholdY is used for luma and GaussianThresholdUV for chroma.
HistoryWeight is the weight of the previous frame in the temporal denoising applied to the pixels of static blocks. If the function is called with pSrcPrev == NULL and pHistoryWeight != NULL, the per-block weights pointed to by pHistoryWeight are initializied to HistoryWeight (and further updated at calls with pSrcPrev != NULL).
As for the publications, the algorithm was developed at Intel, andI don't think that the detailed descriptionis publicly available.