コード例 #1
0
 public override IMatrixImage Invoke(IMatrixImage input)
 {
     if (UseOpenCV)
     {
         OpenCvSharp.Mat mat = input.GetCVMat();
         input.SetCVMat(mat.MedianBlur(Width));
         mat.Dispose();
         return(input);
     }
     else
     {
         input.SlidingWindow(new MedianeOperation(Width, Height));
         //int offset = (Width * Height) / 2;
         //if (image is MatrixImage<byte> imgByte)
         //{
         //    foreach (var layer in imgByte.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else if (image is MatrixImage<short> imgInt16)
         //{
         //    foreach (var layer in imgInt16.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else if (image is MatrixImage<int> imgInt32)
         //{
         //    foreach (var layer in imgInt32.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else if (image is MatrixImage<long> imgInt64)
         //{
         //    foreach (var layer in imgInt64.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else if (image is MatrixImage<float> imgSingle)
         //{
         //    foreach (var layer in imgSingle.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else if (image is MatrixImage<double> imgDouble)
         //{
         //    foreach (var layer in imgDouble.SplitWithoutAlpha())
         //        layer.SlidingWindow(Width, Height, a => a.OrderBy(a => a).ElementAt(offset));
         //}
         //else throw new NotSupportedException();
         return(input);
     }
 }