| | |
| | | } |
| | | |
| | | /// <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> |