| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using PropertyGridLib.Attributes;
- using PropertyGridLib.Controls;
- using System;
- using System.ComponentModel;
- using TeamAAS.FlowEditor.Plugins;
- using TeamAAS.FlowEngine.FormulaData;
- namespace Plugins.Halcon.Models
- {
- // ─────────────────────────────────────────────────────────────────────
- // HALCON 图像处理分类算子模型(从主程序集迁入分类 DLL)。
- // 类型全名保持不变(Plugins.Halcon.Models.*),旧流程经 FlowSerializationBinder 兜底解析。
- // ─────────────────────────────────────────────────────────────────────
- /// <summary>阈值分割:灰度落在 [最小,最大] 区间的像素提取为区域。</summary>
- [Serializable]
- public class HalconThresholdModel : HalconOperatorModelBase
- {
- [Category("I.输入")]
- [DisplayName("1.输入图像")]
- [Description("上游图像(HObject/GenImage)。通常绑定容器输入 &{输入.图像}")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<object> ImageSource { get; set; } = new FormulaBound<object>();
- [Category("II.参数")]
- [DisplayName("1.最小灰度")]
- [Description("灰度下限(含)")]
- public double MinGray { get; set; } = 128;
- [Category("II.参数")]
- [DisplayName("2.最大灰度")]
- [Description("灰度上限(含)")]
- public double MaxGray { get; set; } = 255;
- }
- /// <summary>连通域:把一个区域拆成互不相连的多个独立区域,并给出数量。</summary>
- [Serializable]
- public class HalconConnectionModel : HalconOperatorModelBase
- {
- [Category("I.输入")]
- [DisplayName("1.输入区域")]
- [Description("上游区域(一般来自阈值分割的输出「区域」)")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<object> RegionSource { get; set; } = new FormulaBound<object>();
- }
- /// <summary>图像预处理:滤波 / 灰度线性变换 / 转灰度。</summary>
- [Serializable]
- public class HalconPreprocessModel : HalconOperatorModelBase
- {
- [Category("I.输入")]
- [DisplayName("1.输入图像")]
- [Description("上游图像")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<object> ImageSource { get; set; } = new FormulaBound<object>();
- [Category("II.参数")]
- [DisplayName("1.处理方式")]
- [Description("选择预处理算子")]
- public HalconPreprocessType ProcessType { get; set; } = HalconPreprocessType.均值滤波;
- [Category("II.参数")]
- [DisplayName("2.参数1")]
- [Description("均值/中值/高斯:掩膜尺寸(奇数);线性变换:倍率 mult;转灰度:忽略")]
- public double Param1 { get; set; } = 3;
- [Category("II.参数")]
- [DisplayName("3.参数2")]
- [Description("均值:掩膜高(0=与参数1相同);线性变换:偏置 add;其它忽略")]
- public double Param2 { get; set; } = 0;
- }
- [Serializable]
- public enum HalconPreprocessType
- {
- 均值滤波 = 0,
- 中值滤波 = 1,
- 高斯滤波 = 2,
- 灰度线性变换 = 3,
- 转灰度 = 4,
- }
- /// <summary>形态学:对区域做膨胀/腐蚀/开/闭运算。</summary>
- [Serializable]
- public class HalconMorphologyModel : HalconOperatorModelBase
- {
- [Category("I.输入")]
- [DisplayName("1.输入区域")]
- [Description("上游区域")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<object> RegionSource { get; set; } = new FormulaBound<object>();
- [Category("II.参数")]
- [DisplayName("1.操作")]
- [Description("膨胀/腐蚀/开运算/闭运算(圆形结构元)")]
- public HalconMorphOperation Operation { get; set; } = HalconMorphOperation.膨胀;
- [Category("II.参数")]
- [DisplayName("2.半径")]
- [Description("圆形结构元半径(像素)")]
- public double Radius { get; set; } = 3.0;
- }
- [Serializable]
- public enum HalconMorphOperation
- {
- 膨胀 = 0,
- 腐蚀 = 1,
- 开运算 = 2,
- 闭运算 = 3,
- }
- }
|