public String Statistic(String cmdType, String arg1, String arg2) { ICommand cmd; if (cmdType == "Sum") { ISum sum = SumFactory.GetCommand(arg1, arg2); cmd = new SumCommand(sum); } else if (cmdType == "Average") { IAverage average = AverageFactory.GetCommand(arg1, arg2); cmd = new AverageCommand(average); } else if (cmdType == "Max") { IMax max = MaxFactory.GetCommand(arg1, arg2); cmd = new MaxCommand(max); } else { IMin min = MinFactory.GetCommand(arg1, arg2); cmd = new MinCommand(min); } String res = CommandInvoker.DoCommand(cmd); return(res); }
private void ApplyFilter() { try { RasterImage runImage = _originalBitmap.Clone(); if (_cbInvert.Checked) { runImage.UseLookupTable = false; InvertCommand invComd = new InvertCommand(); invComd.Run(runImage); } BackGroundRemovalCommand backgroundRemovalCommand = new BackGroundRemovalCommand(Convert.ToInt32(_numRemovalFactor.Value)); backgroundRemovalCommand.Run(runImage); MinMaxValuesCommand minMaxCmd = new MinMaxValuesCommand(); minMaxCmd.Run(runImage); int min = minMaxCmd.MinimumValue; int max = minMaxCmd.MaximumValue; if (_cbEnableEnhancements.Checked) { AverageCommand avrcmd = new AverageCommand(); avrcmd.Dimension = 5; avrcmd.Run(runImage); MultiscaleEnhancementCommand MSECommand = new MultiscaleEnhancementCommand(); MSECommand.Contrast = Convert.ToInt32(_numContrast.Value * 100); MSECommand.EdgeCoefficient = Convert.ToInt32(_numEdgeCoef.Value * 100); MSECommand.EdgeLevels = Convert.ToInt32(_numEdgeLevel.Value); MSECommand.LatitudeCoefficient = 140; MSECommand.LatitudeLevels = 5; MSECommand.Flags = MultiscaleEnhancementCommandFlags.EdgeEnhancement | MultiscaleEnhancementCommandFlags.LatitudeReduction; MSECommand.Type = MultiscaleEnhancementCommandType.Gaussian; MSECommand.Run(runImage); } else { AverageCommand avrcmd = new AverageCommand(); avrcmd.Dimension = 3; avrcmd.Run(runImage); } ApplyLinearVoiLookupTableCommand voiCmd = new ApplyLinearVoiLookupTableCommand(); voiCmd.Center = (min + max) / 2; voiCmd.Width = max - min; voiCmd.Flags = VoiLookupTableCommandFlags.UpdateMinMax; voiCmd.Run(runImage); GetLinearVoiLookupTableCommand voiLutCommand = new GetLinearVoiLookupTableCommand(GetLinearVoiLookupTableCommandFlags.None); voiLutCommand.Run(runImage); _form.WindowLevelWidth = (int)voiLutCommand.Width; _form.WindowLevelCenter = (int)voiLutCommand.Center; _viewer.Image = runImage; } catch (System.Exception /*ex*/) { } }