For example, some studies show how to smooth a spectrogram with a 2D median filter vertically and horizontally (along time or frequency). My question is how would I apply 2D median filter along the diagonals of the spectrogram instead? This would be useful for a certain study I am doing, so I need to understand how that would be coded in MATLAB.
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
- compute the median
If you want the antidiagonal, flip the square patch with
If you want other diagonals than the $\pm 45°$, you have to use discrete lines, for instance with the Bresenham algorithm.