using System; using System.IO; using Newtonsoft.Json; using Vinno.DataManager.Process; using Vinno.Infrastructure; using WingServerCommon.Log; using Logger = WingServerCommon.Log.Logger; namespace WingAIDiagnosisService.URMManage { public class URMAnalysisParam { public string UrmDatapath { get; set; } public string VecLens { get; set; } public string Mlas { get; set; } public string FramesGot { get; set; } public string CenterFrequencyMHz { get; set; } public string SupersonicSpeed { get; set; } public string FrequencyMin { get; set; } public string FrameRateDisplay { get; set; } public string ScaleOfPixel_x { get; set; } public string ScaleOfPixel_y { get; set; } public string ULMCount { get; set; } public string PacketsNum { get; set; } public string Res { get; set; } public string MaxLinkingDistance { get; set; } public string MinLength { get; set; } public string MaxGapClosing { get; set; } public string LocMethod { get; set; } public string NLocalMax { get; set; } public string Fwhm { get; set; } public string MOCOYN { get; set; } public string MOCOLevel { get; set; } public string MOCOThresh1 { get; set; } public string MOCOThresh2 { get; set; } public string MOCOThresh3 { get; set; } public string LocaFixmethod { get; set; } public string LocFixThresh { get; set; } public string MotionCorrThresh { get; set; } public string Pos { get; set; } public string FilterDeci { get; set; } public string PSFNum { get; set; } public string PSFCorr { get; set; } public string Depth { get; set; } public string X0 { get; set; } public string Z0 { get; set; } public string ProbeType { get; set; } public string SizeScan { get; set; } public string MotionAngleThresh { get; set; } public string TrackInterpFactor { get; set; } public string FrameStart { get; set; } public string FrameEnd { get; set; } } //负责URM的参数文件读写 public class URMFileIO { protected ImagePP ImagePPRes; public URMFileIO(string familyName, string typeInfo, string nativeId) { // ResourceManagerImpl resourceManager = new ResourceManagerImpl(Path.Combine(ServiceManager.RootPath, "URM", "dev")); // ResourceManager.Initialize(resourceManager); var dir = new VinnoDirectoryInfo(Path.Combine(ServiceManager.RootPath, "URM")); NativeProxy.UpdateSection("Path", "ShippedRoot", dir.FullName); NativeProxy.UpdateSection("Product-GeneralSpecification", "ImagePPFileName", "ImagePP_Tulip"); if (ServiceManager.Os.IsWin()) { WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPNative_Win"); ImagePPRes = new ImagePPNative_Win(); } else { WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPNative"); ImagePPRes = new ImagePPNative(); } ImagePPRes.Initial(); WingServerCommon.Log.Logger.WriteLineInfo($"ImagePPRes Initial familyName:{familyName},typeInfo:{typeInfo},nativeId:{nativeId}"); ImagePPRes.Initial(familyName, typeInfo, nativeId); WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO end"); } public void UpdateParamJson(String UrmDatapath, int VecLens, int Mlas, int FramesGot, double CenterFrequencyMhz, int SupersonicSpeed, double FrequencyMin, double FrameRateDisplay, double Depth, double X0, double Z0, string ProbeType, double ScaleOfPixel_x, double ScaleOfPixel_y, string section, string MOCOYN, int MidProc_DeciFactor, int VectorStartForMid, int startX, int startY, int width, int height, int? CustomizedStartFrame, int? CustomizedEndFrame, out string parms, out double URMRes) { Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateParamJson start"); var urmnalysisparams = new URMAnalysisParam(); urmnalysisparams.UrmDatapath = UrmDatapath; urmnalysisparams.VecLens = VecLens.ToString(); urmnalysisparams.Mlas = Mlas.ToString(); urmnalysisparams.FramesGot = FramesGot.ToString(); urmnalysisparams.CenterFrequencyMHz = CenterFrequencyMhz.ToString(); urmnalysisparams.SupersonicSpeed = SupersonicSpeed.ToString(); urmnalysisparams.FrequencyMin = FrequencyMin.ToString(); urmnalysisparams.FrameRateDisplay = FrameRateDisplay.ToString(); urmnalysisparams.Depth = Depth.ToString(); urmnalysisparams.X0 = X0.ToString(); urmnalysisparams.Z0 = Z0.ToString(); urmnalysisparams.ProbeType = ProbeType; // 线阵 1 弧阵 2 urmnalysisparams.ScaleOfPixel_x = ScaleOfPixel_x.ToString(); urmnalysisparams.ScaleOfPixel_y = ScaleOfPixel_y.ToString(); urmnalysisparams.ULMCount = ImagePPRes.GetValue(section, "ULMCount", 400).ToString(); urmnalysisparams.PacketsNum = ImagePPRes.GetValue(section, "PacketsNum", 200).ToString(); URMRes = ImagePPRes.GetValue(section, "Res", 10.0d); urmnalysisparams.Res = URMRes.ToString(); urmnalysisparams.MaxLinkingDistance = ImagePPRes.GetValue(section, "MaxLinkingDistance", 2.0).ToString(); urmnalysisparams.MinLength = ImagePPRes.GetValue(section, "MinLength", 5.0).ToString(); urmnalysisparams.MaxGapClosing = ImagePPRes.GetValue(section, "MaxGapClosing", 0).ToString(); urmnalysisparams.LocMethod = ImagePPRes.GetValue(section, "LocMethod", "radial"); urmnalysisparams.NLocalMax = ImagePPRes.GetValue(section, "NLocalMax", 3).ToString(); urmnalysisparams.Fwhm = ImagePPRes.GetValue(section, "Fwhm", 3).ToString(); urmnalysisparams.MOCOYN = MOCOYN.ToString(); urmnalysisparams.MOCOLevel = ImagePPRes.GetValue(section, "MOCOLevel", 0.05).ToString(); urmnalysisparams.MOCOThresh1 = ImagePPRes.GetValue(section, "MOCOThresh1", 0.05).ToString(); urmnalysisparams.MOCOThresh2 = ImagePPRes.GetValue(section, "MOCOThresh2", 0.05).ToString(); urmnalysisparams.MOCOThresh3 = ImagePPRes.GetValue(section, "MOCOThresh3", 5).ToString(); urmnalysisparams.LocaFixmethod = ImagePPRes.GetValue(section, "LocaFixmethod", "fixgray"); urmnalysisparams.LocFixThresh = ImagePPRes.GetValue(section, "LocFixThresh", 15).ToString(); urmnalysisparams.MotionCorrThresh = ImagePPRes.GetValue(section, "MotionCorrThresh", 0.5).ToString(); var roiInfo = $" {startX},{startY * MidProc_DeciFactor + VectorStartForMid},{width},{height * MidProc_DeciFactor} "; urmnalysisparams.Pos = roiInfo; urmnalysisparams.FilterDeci = ImagePPRes.GetValue(section, "FilterDeci", 1).ToString(); urmnalysisparams.PSFNum = ImagePPRes.GetValue(section, "PSFNum", 10).ToString(); urmnalysisparams.PSFCorr = ImagePPRes.GetValue(section, "PSFCorr", 0.5).ToString(); urmnalysisparams.SizeScan = Math.Min(VecLens, 1024).ToString(); urmnalysisparams.MotionAngleThresh = ImagePPRes.GetValue(section, "MotionAngleThresh", 2).ToString(); urmnalysisparams.TrackInterpFactor = ImagePPRes.GetValue(section, "TrackInterpFactor", 0.8).ToString(); int starttime; int endtime; starttime = CustomizedStartFrame ?? 1; endtime = CustomizedEndFrame ?? FramesGot; starttime = Math.Min(starttime, FramesGot - 199); endtime = Math.Min(endtime, FramesGot); urmnalysisparams.FrameStart = starttime.ToString(); urmnalysisparams.FrameEnd = endtime.ToString(); parms = JsonConvert.SerializeObject(urmnalysisparams); WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateParamJson end"); } } }