From 0ab0fde3216783ee2694d8d4bfbb94237e25a4bb Mon Sep 17 00:00:00 2001
From: C3031 <shitiangui@lanpucloud.cn>
Date: 星期五, 06 三月 2026 16:52:56 +0800
Subject: [PATCH] 新增了图像增强算法及图像滤波算法

---
 LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs |   98 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 97 insertions(+), 1 deletions(-)

diff --git a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
index 8e76cd9..dd8e2e6 100644
--- a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
+++ b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -304,7 +304,16 @@
             Result = true;
             bCompleted = false;
             Msg = "";
-            OutputImage = null;
+            if (OutputImage != null)
+            {
+                if (OutputImage is HObject)
+                    ((HObject)OutputImage).Dispose();
+                else if (OutputImage is Mat)
+                    ((Mat)OutputImage).Dispose();
+                else if (OutputImage is Bitmap)
+                    ((Bitmap)OutputImage).Dispose();
+                OutputImage = null;
+            }
 
             if (Record != null)
                 Record.Dispose();
@@ -3824,6 +3833,93 @@
         }
 
         /// <summary>
+        /// 鍥惧儚澧炲己绠楁硶-杈圭紭澧炲己
+        /// </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>
+
+        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
+            {
+                // 鏍规嵁婊ゆ尝鍣ㄧ被鍨嬫墽琛岀浉搴旀搷浣�
+                switch (hv_ImageEnhancementType.ToLower())
+                {
+                    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}");
+                }
+            }
+            catch (Exception ex)
+            {
+                // 纭繚寮傚父鏃堕噴鏀捐祫婧�
+                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>
+        /// <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
+            {
+                // 鏍规嵁婊ゆ尝鍣ㄧ被鍨嬫墽琛岀浉搴旀搷浣�
+                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 (Exception ex)
+            {
+                // 纭繚寮傚父鏃堕噴鏀捐祫婧�
+                ho_OutImage?.Dispose();
+                throw new Exception($"鍥惧儚婊ゆ尝澶辫触: {ex.Message}", ex);
+            }
+        }
+
+
+        /// <summary>
         /// 鍗″昂绠楁硶
         /// </summary>
         /// <param name="ho_Image">寰呮祴鍥剧墖</param>

--
Gitblit v1.9.3