C3031
2026-01-30 0ab0fde3216783ee2694d8d4bfbb94237e25a4bb
LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -3836,99 +3836,88 @@
        /// 图像增强算法-边缘增强
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="hv_ImageEnhancementType">滤波器类型(mean/gauss/median)</param>
        /// <param name="hv_Wid">掩膜宽</param>
        /// <param name="hv_High">掩膜高</param>
        /// <param name="hv_Fac">增强因子</param>
        /// <param name="hv_Row1">起始纵坐标</param>
        /// <param name="hv_Column1">起始横坐标</param>
        /// <param name="hv_Row2">结束纵坐标</param>
        /// <param name="hv_Column2">结束横坐标</param>
        public static void Emphsize(HObject ho_Image, out HObject ho_OutImage, HTuple hv_ImageEnhancementType, HTuple hv_Wid, HTuple hv_High, HTuple hv_Fac)
        public static void ImageEnhancement(HObject ho_Image, out HObject ho_OutImage, string hv_ImageEnhancementType, int hv_Wid, int hv_High, double hv_Fac)
        {
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                HTuple hv_ImageEnhancementTypeOut = new HTuple();
                hv_ImageEnhancementTypeOut.Dispose();
                hv_ImageEnhancementTypeOut = new HTuple(hv_ImageEnhancementType);
                hv_Wid.Dispose();
                hv_High.Dispose();
                ho_OutImage.Dispose();
                //设置图像增强算法
                if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("emphasize"))) != 0)
                // 根据滤波器类型执行相应操作
                switch (hv_ImageEnhancementType.ToLower())
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "emphasize";
                    HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac);
                    case "emphasize":
                        HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac);
                        break;
                    case "scaleimagemax":
                        HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
                        break;
                    case "equhisto":
                        HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                        break;
                    default:
                        throw new ArgumentException($"不支持的滤波器类型: {hv_ImageEnhancementType}");
                }
                else if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("equHisto"))) != 0)
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "equHisto";
                }
                else
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "scaleMax";
                }
                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                return;
            }
            catch (HalconException HDevExpDefaultException)
            catch (Exception ex)
            {
                hv_Wid.Dispose();
                hv_High.Dispose();
                throw HDevExpDefaultException;
                // 确保异常时释放资源
                ho_OutImage?.Dispose();
                throw new Exception($"图像滤波失败: {ex.Message}", ex);
            }
        }
        /// <summary>
        /// 图像增强算法-比例增强
        /// 图像滤波
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="ho_OutImage">输出图片</param>
        /// <param name="hv_FilterType">滤波器类型(mean/gauss/median)</param>
        /// <param name="hv_Wid">掩膜宽</param>
        public static void ScaleImageMax(HObject ho_Image, out HObject ho_OutImage)
        /// <param name="hv_High">掩膜高</param>
        /// <param name="hv_Size">高斯核尺寸</param>
        public static void Filter(HObject ho_Image, out HObject ho_OutImage, string hv_FilterType, int hv_Wid, int hv_High, int hv_Size)
        {
            // 初始化输出对象
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                ho_OutImage.Dispose();
                HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
                return;
                // 根据滤波器类型执行相应操作
                switch (hv_FilterType.ToLower())
                {
                    case "mean":
                        HOperatorSet.MeanImage(ho_Image, out ho_OutImage, hv_Wid, hv_High);
                        break;
                    case "gauss":
                    case "guass":  // 兼容拼写错误
                        HOperatorSet.GaussFilter(ho_Image, out ho_OutImage, hv_Size);
                        break;
                    case "median":
                        HOperatorSet.MedianRect(ho_Image, out ho_OutImage, hv_Wid, hv_High);
                        break;
                    default:
                        throw new ArgumentException($"不支持的滤波器类型: {hv_FilterType}");
                }
            }
            catch (HalconException HDevExpDefaultException)
            catch (Exception ex)
            {
                throw HDevExpDefaultException;
                // 确保异常时释放资源
                ho_OutImage?.Dispose();
                throw new Exception($"图像滤波失败: {ex.Message}", ex);
            }
        }
        /// <summary>
        /// 图像增强算法-直方图均衡化
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="hv_Wid">掩膜宽</param>
        public static void EquHistoImage(HObject ho_Image, out HObject ho_OutImage)
        {
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                ho_OutImage.Dispose();
                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                return;
            }
            catch (HalconException HDevExpDefaultException)
            {
                throw HDevExpDefaultException;
            }
        }
        /// <summary>
        /// 卡尺算法