|
@@ -15,7 +15,6 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
{
|
|
|
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()
|
|
|
{
|
|
@@ -49,17 +48,6 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
}
|
|
|
}
|
|
|
Logger.WriteLineInfo($"VideoProcessorList count2:{VideoProcessorList.Count}");
|
|
|
- Logger.WriteLineInfo($"MeasureProcessorList count1:{MeasureProcessorList.Count}");
|
|
|
- for (int i = MeasureProcessorList.Count - 1; i >= 0; i--)
|
|
|
- {
|
|
|
- var item = MeasureProcessorList[i];
|
|
|
- if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-1))
|
|
|
- {
|
|
|
- item.Processor.Dispose();
|
|
|
- MeasureProcessorList.Remove(item);
|
|
|
- }
|
|
|
- }
|
|
|
- Logger.WriteLineInfo($"MeasureProcessorList count2:{MeasureProcessorList.Count}");
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
@@ -83,15 +71,19 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
processorClass.LastActiveTime = DateTime.UtcNow;
|
|
|
var processor = processorClass.Processor;
|
|
|
-
|
|
|
- // var drawUniqueCode = request.GetDrawUniqueCode();
|
|
|
- // var drawParamChanged = processorClass.DrawUniqueCode != drawUniqueCode;
|
|
|
- // if (drawParamChanged)
|
|
|
- // {
|
|
|
- // processor.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, false);
|
|
|
- // processorClass.Processor = processor;
|
|
|
- // processorClass.DrawUniqueCode = drawUniqueCode;
|
|
|
- // }
|
|
|
+ //赋值
|
|
|
+ processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
+ processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
|
|
|
+ processor.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);
|
|
|
processor.CalTracePointMask(request.UrmTraceDPoints);
|
|
|
imgBase64 = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
|
|
|
processorClass.UrmMinVal = urmMinVal;
|
|
@@ -121,15 +113,20 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
processorClass.LastActiveTime = DateTime.UtcNow;
|
|
|
var processor = processorClass.Processor;
|
|
|
-
|
|
|
- // var drawUniqueCode = request.GetDrawUniqueCode();
|
|
|
- // var drawParamChanged = processorClass.DrawUniqueCode != drawUniqueCode;
|
|
|
- // if (drawParamChanged)
|
|
|
- // {
|
|
|
- // processor.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, false);
|
|
|
- // processorClass.Processor = processor;
|
|
|
- // processorClass.DrawUniqueCode = drawUniqueCode;
|
|
|
- // }
|
|
|
+ //赋值
|
|
|
+ processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
+ processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
|
|
|
+ processor.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);
|
|
|
+ //colorbar
|
|
|
imgBase64 = processor.CreateUrmColorbarImage();
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -147,12 +144,24 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
/// <returns></returns>
|
|
|
public URMMeasureDataOutput MeasureProcess(string remedicalCode, UrmMeasureProcessRequest request, out string perfusionImgBase64, ref double urmMinVal, ref double urmMaxVal)
|
|
|
{
|
|
|
- InitURMMeasureProcessor(request);
|
|
|
+ InitURMProcessor(request);
|
|
|
try
|
|
|
{
|
|
|
- var processor = MeasureProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
+ var processor = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
|
|
|
processor.LastActiveTime = DateTime.UtcNow;
|
|
|
-
|
|
|
+ //赋值
|
|
|
+ processor.Processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
|
|
|
+ processor.Processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
|
|
|
+ processor.Processor.setUrmBaseParam(request.Res, processor.DenArray, processor.DirArray, processor.VelArray, processor.AngleArray, processor.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
|
|
|
+ processor.Processor.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);
|
|
|
urmMinVal = 0;
|
|
|
urmMaxVal = 0;
|
|
|
// processor.Processor.getUrmVal(ref urmMinVal, ref urmMaxVal);
|
|
@@ -313,23 +322,11 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
|
|
|
NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
|
|
|
|
|
|
- Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor init"); // 参数设置
|
|
|
+ Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor init"); // 参数设置
|
|
|
var UrmProcessor = new URMProcess();
|
|
|
var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
|
|
|
Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor setUrmParams");
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
|
|
|
- UrmProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
|
|
|
- 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);
|
|
|
- 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,
|
|
@@ -339,8 +336,7 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
DirArray = DirArray,
|
|
|
VelArray = VelArray,
|
|
|
AngleArray = AngleArray,
|
|
|
- MaskArray = MaskArray,
|
|
|
- DrawUniqueCode = request.GetDrawUniqueCode(),
|
|
|
+ MaskArray = MaskArray
|
|
|
};
|
|
|
UrmProcessorList.Add(processorClass);
|
|
|
Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor end");
|
|
@@ -373,47 +369,7 @@ namespace WingAIDiagnosisService.URMManage
|
|
|
return UrmProcessor;
|
|
|
}
|
|
|
|
|
|
- public URMProcessorClass InitURMMeasureProcessor(UrmMeasureProcessRequest request)
|
|
|
- {
|
|
|
- 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 ? 2 : 0);
|
|
|
- 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);
|
|
|
- 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;
|
|
|
- }
|
|
|
|
|
|
|
|
|
}
|