The median filter can be applied on many pixel-set shapes, and indeed this was used to emulate of fasten full 2D median filters by a combination of leaner medians.
In Matlab, your request just amounts to gather diagonal elements in a vector. The simplest could be:
- extract each sliding square patch of the image
- extract the diagonal as a matrix with
diag.m
- compute the median
If you want the antidiagonal, flip the square patch with flipud
, fliprl
.
If you want other diagonals than the $\pm 45°$, you have to use discrete lines, for instance with the Bresenham algorithm.