/// <summary> /// Modification of fastNlMeansDenoisingMulti function for colored images sequences /// </summary> /// <param name="srcImgs">Input 8-bit 3-channel images sequence. All images should have the same type and size.</param> /// <param name="dst">Output image with the same size and type as srcImgs images.</param> /// <param name="imgToDenoiseIndex">Target image to denoise index in srcImgs sequence</param> /// <param name="temporalWindowSize">Number of surrounding images to use for target image denoising. Should be odd. /// Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs /// will be used to denoise srcImgs[imgToDenoiseIndex] image.</param> /// <param name="h">Parameter regulating filter strength for luminance component. Bigger h value perfectly removes noise /// but also removes image details, smaller h value preserves details but also preserves some noise.</param> /// <param name="hColor"> The same as h but for color components.</param> /// <param name="templateWindowSize">Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels</param> /// <param name="searchWindowSize">Size in pixels of the window that is used to compute weighted average for given pixel. /// Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels</param> public static void FastNlMeansDenoisingColoredMulti(IEnumerable <Mat> srcImgs, OutputArray dst, int imgToDenoiseIndex, int temporalWindowSize, float h = 3, float hColor = 3, int templateWindowSize = 7, int searchWindowSize = 21) { IEnumerable <InputArray> srcImgsAsArrays = EnumerableEx.Select(srcImgs, m => new InputArray(m)); FastNlMeansDenoisingColoredMulti(srcImgsAsArrays, dst, imgToDenoiseIndex, templateWindowSize, h, hColor, templateWindowSize, searchWindowSize); }