/// <summary>
 /// Get the center part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 public static Matrix <T> SubCenter <T>(this Matrix <T> m, Border2l b)
 {
     return(m.SubMatrixWindow(m.FX + b.Min.X, m.FY + b.Min.Y,
                              m.SX - b.Max.X - b.Min.X, m.SY - b.Max.Y - b.Min.Y));
 }
 /// <summary>
 /// Get the maximal y edge part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 public static Matrix <Td, Tv> SubMaxY <Td, Tv>(this Matrix <Td, Tv> m, long b)
 {
     return(m.SubMatrixWindow(m.FX, m.EY - b, m.SX, b));
 }
 /// <summary>
 /// Get the maximal x edge part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 public static Matrix <Td, Tv> SubMaxX <Td, Tv>(this Matrix <Td, Tv> m, long b)
 {
     return(m.SubMatrixWindow(m.EX - b, m.FY, b, m.SY));
 }
 /// <summary>
 /// Get the minimal y edge part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 /// <summary>
 /// Get the minimal y edge part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 public static Matrix <T> SubMinY <T>(this Matrix <T> m, long b)
 {
     return(m.SubMatrixWindow(m.FX, m.FY, m.SX, b));
 }
 /// <summary>
 /// Get the minimal x edge part of a matrix with the specified border.
 /// Note that the part retains the pixel coordinates of the original matrix.
 /// </summary>
 public static Matrix <T> SubMinX <T>(this Matrix <T> m, long b)
 {
     return(m.SubMatrixWindow(m.FX, m.FY, b, m.SY));
 }