URMFileIO.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using System;
  2. using System.IO;
  3. using Newtonsoft.Json;
  4. using Vinno.DataManager.Process;
  5. using Vinno.Infrastructure;
  6. using Vinno.Services.ServiceManagerImpl;
  7. namespace WingAIDiagnosisService.URMManage
  8. {
  9. public class URMAnalysisParam
  10. {
  11. public string UrmDatapath { get; set; }
  12. public string VecLens { get; set; }
  13. public string Mlas { get; set; }
  14. public string FramesGot { get; set; }
  15. public string CenterFrequencyMHz { get; set; }
  16. public string SupersonicSpeed { get; set; }
  17. public string FrequencyMin { get; set; }
  18. public string FrameRateDisplay { get; set; }
  19. public string ScaleOfPixel_x { get; set; }
  20. public string ScaleOfPixel_y { get; set; }
  21. public string ULMCount { get; set; }
  22. public string PacketsNum { get; set; }
  23. public string Res { get; set; }
  24. public string MaxLinkingDistance { get; set; }
  25. public string MinLength { get; set; }
  26. public string MaxGapClosing { get; set; }
  27. public string LocMethod { get; set; }
  28. public string NLocalMax { get; set; }
  29. public string Fwhm { get; set; }
  30. public string MOCOYN { get; set; }
  31. public string MOCOLevel { get; set; }
  32. public string MOCOThresh1 { get; set; }
  33. public string MOCOThresh2 { get; set; }
  34. public string MOCOThresh3 { get; set; }
  35. public string LocaFixmethod { get; set; }
  36. public string LocFixThresh { get; set; }
  37. public string MotionCorrThresh { get; set; }
  38. public string Pos { get; set; }
  39. public string FilterDeci { get; set; }
  40. public string PSFNum { get; set; }
  41. public string PSFCorr { get; set; }
  42. public string Depth { get; set; }
  43. public string X0 { get; set; }
  44. public string Z0 { get; set; }
  45. public string ProbeType { get; set; }
  46. public string SizeScan { get; set; }
  47. public string MotionAngleThresh { get; set; }
  48. public string TrackInterpFactor { get; set; }
  49. public string FrameStart { get; set; }
  50. public string FrameEnd { get; set; }
  51. }
  52. //负责URM的参数文件读写
  53. public class URMFileIO
  54. {
  55. protected ImagePP ImagePPRes;
  56. public URMFileIO(string familyName, string typeInfo, string nativeId)
  57. {
  58. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO start");
  59. ResourceManagerImpl resourceManager = new ResourceManagerImpl(Path.Combine(ServiceManager.RootPath, "URM", "dev"));
  60. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO Initialize");
  61. ResourceManager.Initialize(resourceManager);
  62. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO VinnoDirectoryInfo");
  63. var dir = new VinnoDirectoryInfo(Path.Combine(ServiceManager.RootPath, "URM"));
  64. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateSection ShippedRoot");
  65. NativeProxy.UpdateSection("Path", "ShippedRoot", dir.FullName);
  66. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateSection ImagePP_Tulip");
  67. NativeProxy.UpdateSection("Product-GeneralSpecification", "ImagePPFileName", "ImagePP_Tulip");
  68. if (ServiceManager.Os.IsWin())
  69. {
  70. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPNative_Win");
  71. ImagePPRes = new ImagePPNative_Win();
  72. }
  73. else
  74. {
  75. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPNative");
  76. ImagePPRes = new ImagePPNative();
  77. }
  78. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPRes.Initial");
  79. ImagePPRes.Initial();
  80. Logger.WriteLineInfo("ImagePPRes Initial", familyName, typeInfo, nativeId);
  81. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO ImagePPRes.Initial, familyName:{familyName}");
  82. ImagePPRes.Initial(familyName, typeInfo, nativeId);
  83. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO end");
  84. }
  85. 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)
  86. {
  87. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateParamJson start");
  88. var urmnalysisparams = new URMAnalysisParam();
  89. urmnalysisparams.UrmDatapath = UrmDatapath;
  90. urmnalysisparams.VecLens = VecLens.ToString();
  91. urmnalysisparams.Mlas = Mlas.ToString();
  92. urmnalysisparams.FramesGot = FramesGot.ToString();
  93. urmnalysisparams.CenterFrequencyMHz = CenterFrequencyMhz.ToString();
  94. urmnalysisparams.SupersonicSpeed = SupersonicSpeed.ToString();
  95. urmnalysisparams.FrequencyMin = FrequencyMin.ToString();
  96. urmnalysisparams.FrameRateDisplay = FrameRateDisplay.ToString();
  97. urmnalysisparams.Depth = Depth.ToString();
  98. urmnalysisparams.X0 = X0.ToString();
  99. urmnalysisparams.Z0 = Z0.ToString();
  100. urmnalysisparams.ProbeType = ProbeType; // 线阵 1 弧阵 2
  101. urmnalysisparams.ScaleOfPixel_x = ScaleOfPixel_x.ToString();
  102. urmnalysisparams.ScaleOfPixel_y = ScaleOfPixel_y.ToString();
  103. urmnalysisparams.ULMCount = ImagePPRes.GetValue(section, "ULMCount", 400).ToString();
  104. urmnalysisparams.PacketsNum = ImagePPRes.GetValue(section, "PacketsNum", 200).ToString();
  105. URMRes = ImagePPRes.GetValue(section, "Res", 10.0d);
  106. urmnalysisparams.Res = URMRes.ToString();
  107. urmnalysisparams.MaxLinkingDistance = ImagePPRes.GetValue(section, "MaxLinkingDistance", 2.0).ToString();
  108. urmnalysisparams.MinLength = ImagePPRes.GetValue(section, "MinLength", 5.0).ToString();
  109. urmnalysisparams.MaxGapClosing = ImagePPRes.GetValue(section, "MaxGapClosing", 0).ToString();
  110. urmnalysisparams.LocMethod = ImagePPRes.GetValue(section, "LocMethod", "radial");
  111. urmnalysisparams.NLocalMax = ImagePPRes.GetValue(section, "NLocalMax", 3).ToString();
  112. urmnalysisparams.Fwhm = ImagePPRes.GetValue(section, "Fwhm", 3).ToString();
  113. urmnalysisparams.MOCOYN = MOCOYN.ToString();
  114. urmnalysisparams.MOCOLevel = ImagePPRes.GetValue(section, "MOCOLevel", 0.05).ToString();
  115. urmnalysisparams.MOCOThresh1 = ImagePPRes.GetValue(section, "MOCOThresh1", 0.05).ToString();
  116. urmnalysisparams.MOCOThresh2 = ImagePPRes.GetValue(section, "MOCOThresh2", 0.05).ToString();
  117. urmnalysisparams.MOCOThresh3 = ImagePPRes.GetValue(section, "MOCOThresh3", 5).ToString();
  118. urmnalysisparams.LocaFixmethod = ImagePPRes.GetValue(section, "LocaFixmethod", "fixgray");
  119. urmnalysisparams.LocFixThresh = ImagePPRes.GetValue(section, "LocFixThresh", 15).ToString();
  120. urmnalysisparams.MotionCorrThresh = ImagePPRes.GetValue(section, "MotionCorrThresh", 0.5).ToString();
  121. var roiInfo = $" {startX},{startY * MidProc_DeciFactor + VectorStartForMid},{width},{height * MidProc_DeciFactor} ";
  122. urmnalysisparams.Pos = roiInfo;
  123. urmnalysisparams.FilterDeci = ImagePPRes.GetValue(section, "FilterDeci", 1).ToString();
  124. urmnalysisparams.PSFNum = ImagePPRes.GetValue(section, "PSFNum", 10).ToString();
  125. urmnalysisparams.PSFCorr = ImagePPRes.GetValue(section, "PSFCorr", 0.5).ToString();
  126. urmnalysisparams.SizeScan = Math.Min(VecLens, 1024).ToString();
  127. urmnalysisparams.MotionAngleThresh = ImagePPRes.GetValue(section, "MotionAngleThresh", 2).ToString();
  128. urmnalysisparams.TrackInterpFactor = ImagePPRes.GetValue(section, "TrackInterpFactor", 0.8).ToString();
  129. int starttime;
  130. int endtime;
  131. starttime = CustomizedStartFrame ?? 1;
  132. endtime = CustomizedEndFrame ?? FramesGot;
  133. starttime = Math.Min(starttime, FramesGot - 199);
  134. endtime = Math.Min(endtime, FramesGot);
  135. urmnalysisparams.FrameStart = starttime.ToString();
  136. urmnalysisparams.FrameEnd = endtime.ToString();
  137. parms = JsonConvert.SerializeObject(urmnalysisparams);
  138. WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMFileIO UpdateParamJson end");
  139. }
  140. }
  141. }