123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Threading;
- using System.Threading.Tasks;
- using Newtonsoft.Json;
- using SkiaSharp;
- using Vinno.DataManager.Infrastructure;
- using Vinno.DataManager.Utilities;
- using Vinno.DataTypes;
- using WingServerCommon.Log;
- namespace WingAIDiagnosisService.URMManage
- {
- public partial class URMAnalysisManager
- {
- public static List<URMProcessorClass> UrmProcessorList = new List<URMProcessorClass>();
- public static List<URMProcessorClass> VideoProcessorList = new List<URMProcessorClass>();
- private void WatchingVideoProcessor()
- {
- Task.Run(async () =>
- {
- Logger.WriteLineInfo($"URMAnalysisManager WatchingVideoProcessor start");
- try
- {
- while (true)
- {
- await Task.Delay(TimeSpan.FromSeconds(60));
- Logger.WriteLineInfo($"UrmProcessorList count1:{UrmProcessorList.Count}");
- for (int i = UrmProcessorList.Count - 1; i >= 0; i--)
- {
- try
- {
- var item = UrmProcessorList[i];
- if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-1))
- {
- item.Processor.Dispose();
- DisposeArraySafely(() =>
- {
- item.DenArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.DirArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.VelArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.MaskArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.AngleArray.Dispose();
- });
- UrmProcessorList.Remove(item);
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"URMAnalysisManager WatchingVideoProcessor UrmProcessorList error:{ex}");
- }
- }
- Logger.WriteLineInfo($"UrmProcessorList count2:{UrmProcessorList.Count}");
- Logger.WriteLineInfo($"VideoProcessorList count1:{VideoProcessorList.Count}");
- for (int i = VideoProcessorList.Count - 1; i >= 0; i--)
- {
- try
- {
- var item = VideoProcessorList[i];
- if (item.LastActiveTime <= DateTime.UtcNow.AddMinutes(-1))
- {
- item.Processor.Dispose();
- DisposeArraySafely(() =>
- {
- item.DenArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.DirArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.VelArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.MaskArray.Dispose();
- });
- DisposeArraySafely(() =>
- {
- item.AngleArray.Dispose();
- });
- VideoProcessorList.Remove(item);
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"URMAnalysisManager WatchingVideoProcessor VideoProcessorList error:{ex}");
- }
- }
- Logger.WriteLineInfo($"VideoProcessorList count2:{VideoProcessorList.Count}");
- }
- }
- catch (Exception e)
- {
- Logger.WriteLineError($"URMAnalysisManager WatchingVideoProcessor error:{e}");
- }
- });
- }
- /// <summary>
- /// URM后处理 Draw Image
- /// </summary>
- /// <param name="request"></param>
- public async Task<WingInterfaceLibrary.Request.RemedicalAISelected.URMProcessResult> DoUrmProcess(UrmProcessRequest request)
- {
- var result = new WingInterfaceLibrary.Request.RemedicalAISelected.URMProcessResult();
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- await InitURMProcessor(request);
- try
- {
- var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
- processorClass.LastActiveTime = DateTime.UtcNow;
- var processor = processorClass.Processor;
- using (await _lockManager.Acquire(request.GUID))
- {
- await Task.Run(() =>
- {
- double urmMinVal = 0;
- double urmMaxVal = 0;
- //赋值
- processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
- processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
- 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);
- WingServerCommon.Log.Logger.WriteLineInfo($"getURMImageBase64,GUID:{request.GUID},token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- result.Base64String = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
- result.UrmMaxVal = urmMaxVal;
- result.UrmMinVal = urmMinVal;
- processorClass.UrmMinVal = urmMinVal;
- processorClass.UrmMaxVal = urmMaxVal;
- processorClass.HasDrawed = true;
- Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
- });
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIService URMAnalysisManager DoUrmProcess error, ex:{ex}");
- }
- return result;
- }
- /// <summary>
- /// URM获取colorbar
- /// </summary>
- /// <param name="request"></param>
- public async Task<string> CreateUrmColorbarImage(UrmProcessRequest request)
- {
- var imgBase64 = "";
- await InitURMProcessor(request);
- try
- {
- var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
- processorClass.LastActiveTime = DateTime.UtcNow;
- var processor = processorClass.Processor;
- try
- {
- using (await _lockManager.Acquire(request.GUID))
- {
- await Task.Run(() =>
- {
- //赋值
- processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
- processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
- 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
- WingServerCommon.Log.Logger.WriteLineInfo($"CreateUrmColorbarImage,GUID:{request.GUID},token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- imgBase64 = processor.CreateUrmColorbarImage();
- });
- }
- }
- catch (Exception ex)
- {
- WingServerCommon.Log.Logger.WriteLineError($"_urmProcessAlg.CreateUrmColorbarImage error :{ex}");
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIService URMAnalysisManager DoUrmProcess error, ex:{ex}");
- }
- return imgBase64;
- }
- /// <summary>
- /// URM后处理 Measure Test
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<WingInterfaceLibrary.Request.RemedicalAISelected.URMMeasureProcessResult> MeasureProcess(string remedicalCode, UrmMeasureProcessRequest request)
- {
- WingInterfaceLibrary.Request.RemedicalAISelected.URMMeasureProcessResult outResult = new WingInterfaceLibrary.Request.RemedicalAISelected.URMMeasureProcessResult();
- Logger.WriteLineInfo($"AIDiagnosis MeasureProcess,UrmMeasureType:{request.UrmMeasureType},GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- await InitURMProcessor(request);
- try
- {
- var processor = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
- processor.LastActiveTime = DateTime.UtcNow;
- using (await _lockManager.Acquire(request.GUID))
- {
- var urmMinVal = 0;
- var urmMaxVal = 0;
- await Task.Run(() =>
- {
- // 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(processor.Processor);
- var param = new URMMeasureDataInput();
- param.SrcDPoints = request.SrcDPoints;
- param.phywidth = request.Phywidth;
- if (request.ROIType != 0)
- {
- param.RoiType = request.ROIType;
- }
- param.SamplingPoints = samplingPoints;
- param.urmMeasureType = request.UrmMeasureType;
- param.ShellWidth = request.ShellWidth;
- WingServerCommon.Log.Logger.WriteLineInfo($"CalURMData,GUID:{request.GUID},token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- var result = urmMeasure.CalURMData(param, request.ScreenWidth, request.ScreenHeight, urmMaxVal, urmMinVal);
- // 获取灌注图 example
- IntPtr imgPtr = result.PerfusionImgData.Start;
- var perfusionImgBase64 = ConvertImageToBase64(remedicalCode, imgPtr, result.PerfusionPiexlRect.Width, result.PerfusionPiexlRect.Height);
- outResult = JsonConvert.DeserializeObject<WingInterfaceLibrary.Request.RemedicalAISelected.URMMeasureProcessResult>(JsonConvert.SerializeObject(result));
- outResult.PerfusionImgBase64 = perfusionImgBase64;
- outResult.UrmMaxVal = urmMaxVal;
- outResult.UrmMinVal = urmMinVal;
- });
- }
- return outResult;
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIDiagnosisService URMAnalysisManager MeasureProcess error, ex:{ex}");
- outResult.PerfusionImgBase64 = string.Empty;
- return null;
- }
- }
- public string ConvertImageToBase64(string remedicalCode, IntPtr imgPtr, int W, int H)
- {
- try
- {
- // 创建SKImageInfo以描述图像信息
- SKImageInfo imageInfo = new SKImageInfo(W, H, SKColorType.Bgra8888, SKAlphaType.Premul);
- // 创建SKBitmap并复制图像数据
- using (SKBitmap bitmap = new SKBitmap())
- {
- bitmap.InstallPixels(imageInfo, imgPtr, W * 4, (addr, ctx) => { }, IntPtr.Zero);
- // 将SKBitmap编码为PNG格式的数据
- using (MemoryStream memoryStream = new MemoryStream())
- {
- using (SKImage skImage = SKImage.FromBitmap(bitmap))
- {
- skImage.Encode(SKEncodedImageFormat.Png, 100).SaveTo(memoryStream);
- byte[] imageBytes = memoryStream.ToArray();
- return Convert.ToBase64String(imageBytes);
- }
- }
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIDiagnosis URMAnalysisManager ConvertImageToBase64 failed, remedicalCode:{remedicalCode}, W:{W}, H:{H}. ex:{ex}");
- return string.Empty;
- }
- }
- /// <summary>
- /// URM后处理 Draw One frame
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public string DoUrmVideoProcess(DoUrmVideoProcessRequest request, ref double urmMinVal, ref double urmMaxVal)
- {
- var imgBase64 = "";
- urmMinVal = 0;
- urmMaxVal = 0;
- InitVideoProcessor(request);
- try
- {
- var videoProcessor = VideoProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
- videoProcessor.LastActiveTime = DateTime.UtcNow;
- urmMinVal = videoProcessor.UrmMinVal;
- urmMaxVal = videoProcessor.UrmMaxVal;
- imgBase64 = videoProcessor.Processor.getURMVideoImg(request.VideoFrame);
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIService URMAnalysisManager DoUrmVideoProcess error, ex:{ex}");
- }
- return imgBase64;
- }
- public URMProcessorClass InitVideoProcessor(DoUrmVideoProcessRequest request)
- {
- URMProcessorClass processorClass = null;
- try
- {
- 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的分析后数据
- NativeArray AngleArray = ResultDataIOHelper.ReadDoubleArrayFromFile(request.AngleDataPath, request.Urmsrcwidth * request.Urmsrcheight); // 360图的数据
- NativeArray MaskArray = ResultDataIOHelper.ReadByteArrayFromFile(request.MaskDataPath, request.Urmsrcwidth * request.Urmsrcheight); // Mask
- URMPoint[] URMPoints = ResultDataIOHelper.ReadURMPointsFromFile(request.PointsDataPath);
- int[] URMPointNums = ResultDataIOHelper.ReadURMPointNumsFromFile(request.PointNumsDataPath);
- // 参数设置
- var videoProcessor = new URMProcess();
- bool initSuccess = videoProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
- // 设置视频配置
- videoProcessor.setUrmParams(RecordParams.URMVideoScaler, request.URMVideoScaler);
- videoProcessor.setUrmParams(RecordParams.URMVideoParameter, request.URMVideoParameter);
- videoProcessor.setUrmParams(RecordParams.URMVideoType, request.URMVideoType);
- // 设置图像配置
- videoProcessor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
- videoProcessor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
- videoProcessor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
- videoProcessor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
- videoProcessor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
- videoProcessor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
- videoProcessor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
- videoProcessor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
- videoProcessor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
- videoProcessor.setUrmParams(RecordParams.URMIterations, request.Iterations);
- videoProcessor.setUrmBaseParam(request.Res, DenArray, DirArray, VelArray, AngleArray, MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
- 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, ref urmMaxVal, ref urmMinVal);
- videoProcessor.CalTracePointMask(request.UrmTraceDPoints);
- 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;
- }
- public async Task<URMProcessorClass> InitURMProcessor(UrmProcessRequest request)
- {
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor start,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- URMProcessorClass processorClass = null;
- try
- {
- using (await _lockManager.Acquire(request.GUID))
- {
- processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
- if (processorClass == null)
- {
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor ReadFile,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- 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
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor init,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}"); // 参数设置
- var urmProcessor = new URMProcess();
- urmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
- //测量
- if (request.ProcessType == 3)
- {
- //赋值
- 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);
- 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();
- }
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor setUrmParams,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- processorClass = new URMProcessorClass
- {
- GUID = request.GUID,
- Processor = urmProcessor,
- LastActiveTime = DateTime.UtcNow,
- DenArray = DenArray,
- DirArray = DirArray,
- VelArray = VelArray,
- AngleArray = AngleArray,
- MaskArray = MaskArray
- };
- UrmProcessorList.Add(processorClass);
- Logger.WriteLineInfo($"AIDiagnosis DoUrmProcess InitURMProcessor end,GUID:{request.GUID},Token:{request.Token},RemedicalCode:{request.RemedicalCode}");
- }
- }
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn($"AIService URMAnalysisManager InitURMProcessor error, ex:{ex}");
- }
- return processorClass;
- }
- private URMProcess SetUrmProcessorByParams(URMProcessorClass processorClass, UrmProcessRequest request)
- {
- processorClass.LastActiveTime = DateTime.UtcNow;
- var UrmProcessor = processorClass.Processor;
- 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, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.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);
- return UrmProcessor;
- }
- public static void DisposeArraySafely(Action disposeAction)
- {
- try
- {
- disposeAction.Invoke();
- }
- catch (Exception ex)
- {
- Logger.WriteLineWarn("An error occurred during array disposal: " + ex.Message);
- }
- }
- }
- }
|