|
@@ -8,13 +8,14 @@ using Vinno.DataManager.Infrastructure;
|
|
|
using Vinno.DataManager.Utilities;
|
|
|
using Vinno.DataTypes;
|
|
|
using WingServerCommon.Log;
|
|
|
-using static WingAIDiagnosisService.URMManage.UrmProcessRequest;
|
|
|
|
|
|
namespace WingAIDiagnosisService.URMManage
|
|
|
{
|
|
|
public partial class URMAnalysisManager
|
|
|
{
|
|
|
+ public static List<URMProcessorClass> UrmProcessorList = new List<URMProcessorClass>();
|
|
|
public static List<URMProcessorClass> VideoProcessorList = new List<URMProcessorClass>();
|
|
|
+ public static List<URMProcessorClass> MeasureProcessorList = new List<URMProcessorClass>();
|
|
|
|
|
|
private void WatchingVideoProcessor()
|
|
|
{
|
|
@@ -27,15 +28,33 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
{
|
|
|
await Task.Delay(TimeSpan.FromSeconds(60));
|
|
|
|
|
|
+ for (int i = UrmProcessorList.Count - 1; i >= 0; i--)
|
|
|
+ {
|
|
|
+ var item = UrmProcessorList[i];
|
|
|
+ if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-5))
|
|
|
+ {
|
|
|
+ item.Processor.Dispose();
|
|
|
+ UrmProcessorList.Remove(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
for (int i = VideoProcessorList.Count - 1; i >= 0; i--)
|
|
|
{
|
|
|
var item = VideoProcessorList[i];
|
|
|
if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-5))
|
|
|
{
|
|
|
- item.VideoProcessor.Dispose();
|
|
|
+ item.Processor.Dispose();
|
|
|
VideoProcessorList.Remove(item);
|
|
|
}
|
|
|
}
|
|
|
+ for (int i = MeasureProcessorList.Count - 1; i >= 0; i--)
|
|
|
+ {
|
|
|
+ var item = MeasureProcessorList[i];
|
|
|
+ if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-5))
|
|
|
+ {
|
|
|
+ item.Processor.Dispose();
|
|
|
+ MeasureProcessorList.Remove(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
@@ -49,20 +68,16 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
/// URM后处理 Draw Image
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
- public string DoUrmProcess(UrmProcessRequest request)
|
|
|
+ public string DoUrmProcess(UrmProcessRequest request, ref double urmMinVal, ref double urmMaxVal)
|
|
|
{
|
|
|
var imgBase64 = "";
|
|
|
+ InitURMProcessor(request);
|
|
|
try
|
|
|
{
|
|
|
- var initResult = InitURMProcess(request);
|
|
|
- var UrmProcessor = initResult.Item1;
|
|
|
- var URMProcessInitSuccess = initResult.Item2;
|
|
|
- if (URMProcessInitSuccess)
|
|
|
- {
|
|
|
- UrmProcessor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
- imgBase64 = UrmProcessor.getURMImageBase64();
|
|
|
- }
|
|
|
- UrmProcessor.Dispose();
|
|
|
+ var processor = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ processor.LastActiveTime = DateTime.UtcNow;
|
|
|
+ processor.Processor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
+ imgBase64 = processor.Processor.getURMImageBase64(ref urmMinVal, ref urmMaxVal);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -76,25 +91,23 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
- public URMMeasureDataOutput MeasureProcess(string remedicalCode, UrmMeasureProcessRequest request, out string perfusionImgBase64)
|
|
|
+ public URMMeasureDataOutput MeasureProcess(string remedicalCode, UrmMeasureProcessRequest request, out string perfusionImgBase64, ref double urmMinVal, ref double urmMaxVal)
|
|
|
{
|
|
|
+ InitURMMeasureProcessor(request);
|
|
|
try
|
|
|
{
|
|
|
- var initResult = InitURMMeasureProcess(request);
|
|
|
- var UrmProcessor = initResult.Item1;
|
|
|
- var URMProcessInitSuccess = initResult.Item2;
|
|
|
- double urmMaxVal = 0;
|
|
|
- double urmMinVal = 0;
|
|
|
- if (URMProcessInitSuccess)
|
|
|
- {
|
|
|
- UrmProcessor.getUrmVal(ref urmMaxVal, ref urmMinVal);
|
|
|
- }
|
|
|
+ var processor = MeasureProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ processor.LastActiveTime = DateTime.UtcNow;
|
|
|
+
|
|
|
+ urmMinVal = 0;
|
|
|
+ urmMaxVal = 0;
|
|
|
+ processor.Processor.getUrmVal(ref urmMinVal, ref urmMaxVal);
|
|
|
int samplingPoints = 256; // 采样点数量 (cmlength 不传的话,默认是 256)
|
|
|
if (request.CMlength != null)
|
|
|
{
|
|
|
samplingPoints = (int)(request.CMlength * 1000);
|
|
|
}
|
|
|
- URMMeasure urmMeasure = new URMMeasure(UrmProcessor);
|
|
|
+ URMMeasure urmMeasure = new URMMeasure(processor.Processor);
|
|
|
var param = new URMMeasureDataInput();
|
|
|
param.SrcDPoints = request.SrcDPoints;
|
|
|
param.phywidth = request.Phywidth;
|
|
@@ -109,7 +122,6 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
// 获取灌注图 example
|
|
|
IntPtr imgPtr = outresult.PerfusionImgData.Start;
|
|
|
perfusionImgBase64 = ConvertImageToBase64(remedicalCode, imgPtr, outresult.PerfusionPiexlRect.Width, outresult.PerfusionPiexlRect.Height);
|
|
|
- UrmProcessor.Dispose();
|
|
|
return outresult;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -164,7 +176,7 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
{
|
|
|
var videoProcessor = VideoProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
videoProcessor.LastActiveTime = DateTime.UtcNow;
|
|
|
- imgBase64 = videoProcessor.VideoProcessor.getURMVideoImg(request.VideoFrame);
|
|
|
+ imgBase64 = videoProcessor.Processor.getURMVideoImg(request.VideoFrame);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -174,13 +186,16 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void InitVideoProcessor(DoUrmVideoProcessRequest request)
|
|
|
+ public URMProcessorClass InitVideoProcessor(DoUrmVideoProcessRequest request)
|
|
|
{
|
|
|
-
|
|
|
+ URMProcessorClass processorClass = null;
|
|
|
try
|
|
|
{
|
|
|
- if (!VideoProcessorList.Select(x => x.GUID).Contains(request.GUID))
|
|
|
+ processorClass = VideoProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ if (processorClass == null)
|
|
|
{
|
|
|
+ double urmMaxVal = 0;
|
|
|
+ double urmMinVal = 0;
|
|
|
NativeArray DenArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DenDataPath, request.Urmsrcwidth * request.Urmsrcheight); //Den的分析后数据
|
|
|
NativeArray DirArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DirDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Dir的分析后数据
|
|
|
NativeArray VelArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.VelDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Vel的分析后数据
|
|
@@ -210,67 +225,100 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
);
|
|
|
videoProcessor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight
|
|
|
);
|
|
|
- videoProcessor.PreURMVideo(URMPoints, URMPointNums);
|
|
|
+ videoProcessor.PreURMVideo(URMPoints, URMPointNums, ref urmMaxVal, ref urmMinVal);
|
|
|
videoProcessor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
- VideoProcessorList.Add(new URMProcessorClass { GUID = request.GUID, VideoProcessor = videoProcessor, LastActiveTime = DateTime.UtcNow });
|
|
|
+
|
|
|
+ processorClass = new URMProcessorClass { GUID = request.GUID, Processor = videoProcessor, LastActiveTime = DateTime.UtcNow, UrmMinVal = urmMinVal, UrmMaxVal = urmMaxVal };
|
|
|
+ VideoProcessorList.Add(processorClass);
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
Logger.WriteLineWarn($"AIService URMAnalysisManager InitVideoProcessor error, ex:{ex}");
|
|
|
}
|
|
|
+ return processorClass;
|
|
|
}
|
|
|
|
|
|
- private Tuple<URMProcess, bool> InitURMProcess(UrmProcessRequest request)
|
|
|
+ public URMProcessorClass InitURMProcessor(UrmProcessRequest request)
|
|
|
{
|
|
|
- NativeArray DenArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DenDataPath, request.Urmsrcwidth * request.Urmsrcheight); //Den的分析后数据
|
|
|
- NativeArray DirArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DirDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Dir的分析后数据
|
|
|
- NativeArray VelArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.VelDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Vel的分析后数据
|
|
|
- NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
|
|
|
- NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
|
|
|
- // 参数设置
|
|
|
- var UrmProcessor = new URMProcess();
|
|
|
- var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
- UrmProcessor.setUrmBaseParam(request.Res, DenArray, DirArray, VelArray, AngleArray, MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer, request.Isliner);
|
|
|
- UrmProcessor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
- return new Tuple<URMProcess, bool>(UrmProcessor, URMProcessInitSuccess);
|
|
|
+ URMProcessorClass processorClass = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ if (processorClass == null)
|
|
|
+ {
|
|
|
+ NativeArray DenArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DenDataPath, request.Urmsrcwidth * request.Urmsrcheight); //Den的分析后数据
|
|
|
+ NativeArray DirArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DirDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Dir的分析后数据
|
|
|
+ NativeArray VelArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.VelDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Vel的分析后数据
|
|
|
+ NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
|
|
|
+ NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
|
|
|
+ // 参数设置
|
|
|
+ var UrmProcessor = new URMProcess();
|
|
|
+ var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ UrmProcessor.setUrmBaseParam(request.Res, DenArray, DirArray, VelArray, AngleArray, MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer, request.Isliner);
|
|
|
+ UrmProcessor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
+
|
|
|
+ processorClass = new URMProcessorClass { GUID = request.GUID, Processor = UrmProcessor, LastActiveTime = DateTime.UtcNow };
|
|
|
+ UrmProcessorList.Add(processorClass);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineWarn($"AIService URMAnalysisManager InitURMProcessor error, ex:{ex}");
|
|
|
+ }
|
|
|
+ return processorClass;
|
|
|
}
|
|
|
|
|
|
- private Tuple<URMProcess, bool> InitURMMeasureProcess(UrmMeasureProcessRequest request)
|
|
|
+ public URMProcessorClass InitURMMeasureProcessor(UrmMeasureProcessRequest request)
|
|
|
{
|
|
|
- NativeArray DenArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DenDataPath, request.Urmsrcwidth * request.Urmsrcheight); //Den的分析后数据
|
|
|
- NativeArray DirArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DirDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Dir的分析后数据
|
|
|
- NativeArray VelArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.VelDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Vel的分析后数据
|
|
|
- NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
|
|
|
- NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
|
|
|
- // 参数设置
|
|
|
- var UrmProcessor = new URMProcess();
|
|
|
- var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
- UrmProcessor.setUrmBaseParam(request.Res, DenArray, DirArray, VelArray, AngleArray, MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer, request.Isliner);
|
|
|
- UrmProcessor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
- UrmProcessor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
- UrmProcessor.GetURMImage();
|
|
|
- return new Tuple<URMProcess, bool>(UrmProcessor, URMProcessInitSuccess);
|
|
|
+ URMProcessorClass processorClass = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ processorClass = MeasureProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ if (processorClass == null)
|
|
|
+ {
|
|
|
+ NativeArray DenArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DenDataPath, request.Urmsrcwidth * request.Urmsrcheight); //Den的分析后数据
|
|
|
+ NativeArray DirArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.DirDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Dir的分析后数据
|
|
|
+ NativeArray VelArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.VelDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Vel的分析后数据
|
|
|
+ NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
|
|
|
+ NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
|
|
|
+ // 参数设置
|
|
|
+ var UrmProcessor = new URMProcess();
|
|
|
+ var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ UrmProcessor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ UrmProcessor.setUrmBaseParam(request.Res, DenArray, DirArray, VelArray, AngleArray, MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer, request.Isliner);
|
|
|
+ UrmProcessor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
|
|
|
+ UrmProcessor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
+ UrmProcessor.GetURMImage();
|
|
|
+
|
|
|
+ processorClass = new URMProcessorClass { GUID = request.GUID, Processor = UrmProcessor, LastActiveTime = DateTime.UtcNow };
|
|
|
+ MeasureProcessorList.Add(processorClass);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Logger.WriteLineWarn($"AIService URMAnalysisManager InitURMMeasureProcessor error, ex:{ex}");
|
|
|
+ }
|
|
|
+ return processorClass;
|
|
|
}
|
|
|
|
|
|
|