// ============================================================================ // Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved. // 文件? GaussianBlurProcessor.cs // 描述: 高斯模糊算子,用于图像平滑和降噪 // 功能: // - 高斯核卷积平? // - 可调节核大小和标准差 // - 有效去除高斯噪声 // - 保持边缘相对清晰 // 算法: 高斯滤波器卷? // 作? 李伟 wei.lw.li@hexagon.com // ============================================================================ using Emgu.CV; using Emgu.CV.Structure; using Serilog; using XP.ImageProcessing.Core; namespace XP.ImageProcessing.Processors; /// /// 高斯模糊算子 /// public class GaussianBlurProcessor : ImageProcessorBase { private static readonly ILogger _logger = Log.ForContext(); public GaussianBlurProcessor() { Name = LocalizationHelper.GetString("GaussianBlurProcessor_Name"); Description = LocalizationHelper.GetString("GaussianBlurProcessor_Description"); } protected override void InitializeParameters() { Parameters.Add("KernelSize", new ProcessorParameter( "KernelSize", LocalizationHelper.GetString("GaussianBlurProcessor_KernelSize"), typeof(int), 5, 1, 31, LocalizationHelper.GetString("GaussianBlurProcessor_KernelSize_Desc"))); Parameters.Add("Sigma", new ProcessorParameter( "Sigma", LocalizationHelper.GetString("GaussianBlurProcessor_Sigma"), typeof(double), 1.5, 0.1, 10.0, LocalizationHelper.GetString("GaussianBlurProcessor_Sigma_Desc"))); _logger.Debug("InitializeParameters"); } public override Image Process(Image inputImage) { int kernelSize = GetParameter("KernelSize"); double sigma = GetParameter("Sigma"); if (kernelSize % 2 == 0) kernelSize++; var result = inputImage.Clone(); CvInvoke.GaussianBlur(inputImage, result, new System.Drawing.Size(kernelSize, kernelSize), sigma); _logger.Debug("Process: KernelSize = {KernelSize}, Sigma = {Sigma}", kernelSize, sigma); return result; } }