轮胎外观检测添加思谋语义分割模型检测工具
LB_SmartVisionCameraDevice/PHM6000/PHM6000SensorConfig.cs
@@ -16,477 +16,86 @@
    /// PHM6000Sensor配置参数类
    /// </summary>
    [JsonObject(MemberSerialization.OptOut)]
    [TypeConverter(typeof(PropertySorter))]
    public class PHM6000SensorConfig
    {
        [Category("点云设置"), PropertyOrder(39)]
        [DisplayName("ZROI")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public EnumZDirectionRoi ZDirectionRoi { get; set; }            //ZROI
        [Category("点云设置"), PropertyOrder(40)]
        [DisplayName("Filter")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        public EnumFilter Filter { get; set; }            //Filter
        [Category("点云设置"), PropertyOrder(41)]
        [DisplayName("MeanFilterWindowSize")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public EnumMeanFilterWindowSize MeanFilterWindowSize { get; set; }            //MeanFilterWindowSize
        [Category("点云设置"), PropertyOrder(42)]
        [DisplayName("MedianFilterWindowSize")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public EnumMedianFilterWindowSize MedianFilterWindowSize { get; set; }            //MedianFilterWindowSize
        [Category("点云设置"), PropertyOrder(43)]
        [DisplayName("GapFilling")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        public int GapFilling { get; set; }            //GapFilling
        [Category("点云设置"), PropertyOrder(44)]
        [DisplayName("GapFillingEdgePreservation")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        public int GapFillingEdgePreservation { get; set; }            //GapFilling
        [Category("点云设置"), PropertyOrder(45)]
        [DisplayName("降采样")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public EnumDownsampling Downsampling { get; set; } = EnumDownsampling.X1;
        [Category("点云设置"), PropertyOrder(46)]
        [DisplayName("重采样")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        public EnumResampling Resampling { get; set; } = EnumResampling.Nearest;
        [Category("点云设置"), PropertyOrder(47)]
        [DisplayName("重采样边缘保持")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Range(0, 1)]
        [Browsable(false)]
        public int ResamplingEdgePreservation { get; set; }
        [Category("点云设置"), PropertyOrder(48)]
        [DisplayName("启用 Z 轴对齐")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public bool EnableZAxisAlignment { get; set; }
        [Category("点云设置"), PropertyOrder(49)]
        [DisplayName("启用 X 轴对齐")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public bool EnableXAxisAlignment { get; set; }
        [Category("点云设置"), PropertyOrder(50)]
        [DisplayName("启用盲点过滤")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public bool EnableBlindSpotFiltering { get; set; }
        [Category("点云设置"), PropertyOrder(51)]
        [DisplayName("启用噪声消除")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public bool EnableNoiseRemoval { get; set; }
        [Category("点云设置"), PropertyOrder(52)]
        [DisplayName("噪声去除强度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public EnumNoiseRemovalIntensity NoiseRemovalIntensity { get; set; }
        [Category("轮廓线兴趣区型"), PropertyOrder(53)]
        [DisplayName("XOZ-ROI")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public LBProfileROI ROI { get; set; }            //ROI
        [Category("相机属性"), PropertyOrder(54)]
        [DisplayName("NameIdMax")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public int NameIdMax { get; set; }            //NameIdMax
        [Category("触发设置"), PropertyOrder(0)]
        [DisplayName("数据采集触发源")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public EnumDataAcquisitionTriggerSource DataAcquisitionTriggerSource { get; set; } = EnumDataAcquisitionTriggerSource.软触发;            //数据采集触发源:0=Software,1=External
        [Category("触发设置"), PropertyOrder(1)]
        [DisplayName("行扫描触发源")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public EnumLineScanTriggerSource LineScanTriggerSource { get; set; } = EnumLineScanTriggerSource.固定频率;            //如果选择固定频率下面只有一个频率值 ,否则显示触发方向、触发信号计数模式、触发间隔
        [Category("触发设置"), PropertyOrder(2)]
        [DisplayName("触发频率")]
        public float SoftwareTriggerRate { get; set; } = 1000;            //触发频率
        [Category("触发设置"), PropertyOrder(3)]
        [DisplayName("最大扫描速率")]
        [Browsable(false)]
        [IsCustom]
        public float MaxScanRate { get; set; }            //最大扫描速率
        [Category("触发设置"), PropertyOrder(4)]
        [DisplayName("触发延迟")]
        public int TriggerDelay { get; set; }            //触发延迟
        [Category("触发设置"), PropertyOrder(5)]
        [DisplayName("触发方向")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public EnumEncoderTriggerDirection EncoderTriggerDirection { get; set; } = EnumEncoderTriggerDirection.双向;            //触发方向
        [Category("触发设置"), PropertyOrder(6)]
        [Category("触发设置"), PropertyOrder(4)]
        [DisplayName("触发信号计数模式")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public EnumEncoderTriggerSignalCountingMode EncoderTriggerSignalCountingMode { get; set; } = EnumEncoderTriggerSignalCountingMode.X4;           //触发信号计数模式
        [Category("触发设置"), PropertyOrder(7)]
        [Category("触发设置"), PropertyOrder(5)]
        [DisplayName("触发间隔")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public int EncoderTriggerInterval { get; set; } = 100;            //触发间隔
        [Category("行扫描设置"), PropertyOrder(8)]
        [Category("行扫描设置"), PropertyOrder(6)]
        [DisplayName("扫描行数")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public int ScanLineCount { get; set; } = 5000;            //扫描行数
        [Category("行扫描设置"), PropertyOrder(9)]
        [DisplayName("每个配置文件的数据点数")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        [Browsable(false)]
        [IsCustom]
        public int DataPointsPerProfile { get; set; } = 50000 * 4096;            //每个配置文件的数据点数
        [Category("行扫描设置"), PropertyOrder(10)]
        [DisplayName("曝光延迟")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        [IsCustom]
        public int ExposureDelay { get; set; } = 0;            //曝光延迟
        [Category("行扫描设置"), PropertyOrder(11)]
        [DisplayName("批量检索超时")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        [Browsable(false)]
        public int BatchRetrievalTimeout { get; set; } = 4000;
        [Category("行扫描设置"), PropertyOrder(12)]
        [Category("行扫描设置"), PropertyOrder(7)]
        [DisplayName("超时时间")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Primary)]
        public int CallbackRetrievalTimeout { get; set; } = 4000;
        [Category("点云设置"), PropertyOrder(13)]
        [Category("点云设置"), PropertyOrder(8)]
        [DisplayName("X轴分辨率")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public float XAxisResolution { get; set; } = 105f;
        [Category("点云设置"), PropertyOrder(14)]
        [Category("点云设置"), PropertyOrder(9)]
        [DisplayName("Y轴分辨率")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public float YResolution { get; set; } = 105f;            //YAxisResolution
        [Category("点云设置"), PropertyOrder(15)]
        [DisplayName("倾斜校正角度")]
        [Browsable(false)]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public float TiltCorrectionAngle { get; set; }          //TiltCorrectionAngle
        [Category("点云设置"), PropertyOrder(16)]
        [DisplayName("高度校正比")]
        [Browsable(false)]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public float HeightCorrectionRatio { get; set; }          //HeightCorrectionRatio
        [Category("点云设置"), PropertyOrder(17)]
        [DisplayName("坐标变换")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        [IsCustom]
        public float[] CoordinateTransformation { get; set; }          //CoordinateTransformation
        [Category("轮廓线提取"), PropertyOrder(18)]
        [Category("轮廓线提取"), PropertyOrder(10)]
        [DisplayName("最小灰度")]
        [Description("最小灰度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int MinGrayscaleValue { get; set; }            //最小灰度
        [Category("轮廓线提取"), PropertyOrder(19)]
        [DisplayName("提取点最小强度")]
        [Description("提取点最小强度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int MinSpotIntensity { get; set; }            //
        //public int MinSpotIntensity { get; set; }            //提取点最小强度
        [Category("轮廓线提取"), PropertyOrder(20)]
        [DisplayName("提取点最大强度")]
        [Description("提取点最大强度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int MaxSpotIntensity { get; set; }            //
        [Category("轮廓线提取"), PropertyOrder(21)]
        [DisplayName("阈值")]
        [Description("阈值")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [IsCustom]
        public int ProductThresholdValues { get; set; } //
        [Category("轮廓线提取"), PropertyOrder(22)]
        //public int MaxSpotIntensity { get; set; }            //提取点最大强度
        [Category("轮廓线提取"), PropertyOrder(11)]
        [DisplayName("激光线最小宽度")]
        [Description("激光线最小宽度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int MinLaserLineWidth { get; set; }            //激光线最小宽度
        [Category("轮廓线提取"), PropertyOrder(23)]
        [Category("轮廓线提取"), PropertyOrder(12)]
        [DisplayName("激光线最大宽度")]
        [Description("激光线最大宽度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int MaxLaserLineWidth { get; set; }            //激光线最大宽度
        [Category("轮廓线提取"), PropertyOrder(24)]
        [Category("轮廓线提取"), PropertyOrder(13)]
        [DisplayName("提取点选择")]
        [Description("提取点选择")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public EnumSpotSelection SpotSelection { get; set; }            //提取点选择
        [Category("轮廓线提取"), PropertyOrder(25)]
        [DisplayName("边缘选择")]
        [Description("边缘选择")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public EnumEdgeSelection EdgeSelection { get; set; }
        [Category("轮廓线提取"), PropertyOrder(26)]
        [DisplayName("最小锐度")]
        [Description("最小锐度")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public int MinSharpness { get; set; }
        [Category("轮廓线提取"), PropertyOrder(27)]
        [DisplayName("亮度调节")]
        [Description("亮度调节")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public EnumBrightnessAdjustment BrightnessAdjustment { get; set; }
        [Category("传感器参数"), PropertyOrder(28)]
        [Category("传感器参数"), PropertyOrder(14)]
        [DisplayName("曝光模式")]
        [Description("曝光模式")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        //曝光模式 HDR=ProductExpTime,HdrExposureTimeProportion1,HdrExposureTimeProportion2
        //固定频率TIMED=ProductexposureTime
        //直接定死成固定频率
        public EnumExposureMode ExposureMode { get; set; } = EnumExposureMode.Timed;
        [Category("传感器参数"), PropertyOrder(29)]
        [Category("传感器参数"), PropertyOrder(15)]
        [DisplayName("曝光时间")]
        [Description("曝光时间")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int ExposureTime { get; set; }//曝光时间
        [Category("传感器参数"), PropertyOrder(30)]
        [DisplayName("产品曝光时间")]
        [Description("曝光时间")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Master)]
        [Browsable(false)]
        [IsCustom]
        public int ProductExpTime { get; set; }            //曝光时间
        [Category("传感器参数"), PropertyOrder(31)]
        [DisplayName("hdr调节1")]
        [Description("hdr调节1")]
        [Range(0, 100)]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        [IsCustom]
        public int HdrExposureTimeProportion1 { get; set; }            //hdr调节1
        [Category("传感器参数"), PropertyOrder(32)]
        [DisplayName("hdr调节2")]
        [Description("hdr调节2")]
        [Range(0, 100)]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        [IsCustom]
        public int HdrExposureTimeProportion2 { get; set; }            //hdr调节2
        [Category("传感器参数"), PropertyOrder(33)]
        [DisplayName("hdr阈值1")]
        [Description("hdr阈值")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        [IsCustom]
        public int HdrFirstThreshold { get; set; }            //hdr阈值
        [Category("传感器参数"), PropertyOrder(34)]
        [DisplayName("hdr阈值2")]
        [Description("hdr阈值")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        [IsCustom]
        public int HdrSecondThreshold { get; set; }            //hdr阈值2
        [Category("传感器参数"), PropertyOrder(35)]
        [Category("传感器参数"), PropertyOrder(16)]
        [DisplayName("模拟增益")]
        [Description("模拟增益")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public EnumAnalogGain AnalogGain { get; set; }            //模拟增益
        [Category("传感器参数"), PropertyOrder(36)]
        [Category("传感器参数"), PropertyOrder(17)]
        [DisplayName("模拟增益6030")]
        [Description("模拟增益6030")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public EnumAnalogGainFor6030 AnalogGainFor6030 { get; set; }            //模拟增益for6030
        [Category("传感器参数"), PropertyOrder(37)]
        [Category("传感器参数"), PropertyOrder(18)]
        [DisplayName("数字增益")]
        [Description("数字增益")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        [Browsable(false)]
        public int DigitalGain { get; set; }            //数字增益
        [Category("传感器参数"), PropertyOrder(38)]
        [Category("传感器参数"), PropertyOrder(19)]
        [DisplayName("激光功率")]
        [Description("激光功率")]
        [Permission(typeof(CameraUserRole), CameraUserRole.Expert)]
        public int LaserPower { get; set; }            //激光功率
        #region 轮廓线标定
        [Category("PARAM_BAR"), PropertyOrder(60)]
        [DisplayName("Height")]
        [Browsable(false)]
        [IsCustom]
        public float BarHeight { get; set; } = 2;
        [Category("PARAM_BAR"), PropertyOrder(61)]
        [DisplayName("Width")]
        [Browsable(false)]
        [IsCustom]
        public float BarWidth { get; set; } = 35;
        [Category("PARAM_BAR"), PropertyOrder(62)]
        [DisplayName("HoleCount")]
        [Browsable(false)]
        [IsCustom]
        public int BarHoleCount { get; set; }
        [Category("PARAM_BAR"), PropertyOrder(63)]
        [DisplayName("HoleDiameter")]
        [Browsable(false)]
        [IsCustom]
        public float BarHoleDiameter { get; set; }
        [Category("PARAM_BAR"), PropertyOrder(64)]
        [DisplayName("HoleDistance")]
        [Browsable(false)]
        [IsCustom]
        public float BarHoleDistance { get; set; }
        [Category("PARAM_BAR"), PropertyOrder(65)]
        [DisplayName("DOF")]
        [Browsable(false)]
        [IsCustom]
        public int BarDOF { get; set; }
        [Category("测量目标物参数设置"), PropertyOrder(66)]
        [DisplayName("M")]
        [Browsable(false)]
        [IsCustom]
        public int nPartitionX { get; set; }//M
        [Category("测量目标物参数设置"), PropertyOrder(67)]
        [DisplayName("N")]
        [Browsable(false)]
        [IsCustom]
        public int nPartitionY { get; set; }//N
        #endregion
        #region  平面标定
        protected const string ROIInfo = "标定ROI数据";
        protected const string CameraInfo = "相机安装参数";
        [Category(ROIInfo), PropertyOrder(80)]
        [DisplayName("平面区")]
        [Browsable(false)]
        [IsCustom]
        public string Plane { get; set; } = "0,0,0,0";
        [Category(ROIInfo), PropertyOrder(81)]
        [DisplayName("孔区1")]
        [Browsable(false)]
        [IsCustom]
        public string Hole1 { get; set; } = "0,0,0,0";
        [Category(ROIInfo), PropertyOrder(82)]
        [DisplayName("孔区2")]
        [Browsable(false)]
        [IsCustom]
        public string Hole2 { get; set; } = "0,0,0,0";
        [Category(ROIInfo), PropertyOrder(83)]
        [DisplayName("孔区3")]
        [Browsable(false)]
        [IsCustom]
        public string Hole3 { get; set; } = "0,0,0,0";
        [Category(CameraInfo), PropertyOrder(84)]
        [DisplayName("x倒序")]
        [Browsable(false)]
        [IsCustom]
        public int IsReverse { get; set; } = 0;        //x倒序
        [Category(CameraInfo), PropertyOrder(85)]
        [DisplayName("z相对")]
        [Browsable(false)]
        [IsCustom]
        public int IsOpposite { get; set; } = 0;       //z相对
        [Category(CameraInfo), PropertyOrder(86)]
        [DisplayName("标准距离")]
        [Browsable(false)]
        [IsCustom]
        public float fStdDistance { get; set; } = 325;
        [Category(CameraInfo), PropertyOrder(87)]
        [DisplayName("X轴中心")]
        [Browsable(false)]
        [IsCustom]
        public float fXCenter { get; set; } = 215.04f;
        [Category(CameraInfo), PropertyOrder(88)]
        [DisplayName("X轴")]
        [Browsable(false)]
        [IsCustom]
        public float x { get; set; } = 0;
        [Category(CameraInfo), PropertyOrder(89)]
        [DisplayName("Y轴")]
        [Browsable(false)]
        [IsCustom]
        public float y { get; set; } = 0;
        [Category(CameraInfo), PropertyOrder(90)]
        [DisplayName("Z轴")]
        [Browsable(false)]
        [IsCustom]
        public float z { get; set; } = 417.75f;
        [Category(CameraInfo), PropertyOrder(91)]
        [DisplayName("X轴角度")]
        [Browsable(false)]
        [IsCustom]
        public float xAngle { get; set; } = 0;
        [Category(CameraInfo), PropertyOrder(92)]
        [DisplayName("Y轴角度")]
        [Browsable(false)]
        [IsCustom]
        public float yAngle { get; set; } = 0;
        [Category(CameraInfo), PropertyOrder(93)]
        [DisplayName("Z轴角度")]
        [Browsable(false)]
        [IsCustom]
        public float zAngle { get; set; } = 0;
        #endregion
    }
    /// <summary>
    /// IsCustomAttribute