0
$\begingroup$

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.

$\endgroup$
1
  • $\begingroup$ I have provided with gblk, a Matlab toolbox you ought to invest in if you want to parse blocks in images $\endgroup$ Commented Mar 16, 2018 at 6:57

1 Answer 1

1
$\begingroup$

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.

median filter shapes

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.

If you want to remain high level, I'd suggest you to use gblk: a pedestrian data block extractor at MatlabCentral to parse an image with overlapping blocks.

$\endgroup$
2
  • $\begingroup$ Hi, thanks for reply. This is very interesting. My only question is, how do you do "extract each sliding square patch of the image" in matlab and also can you show matlab example of the discrete lines for other degrees than 45. thank you! $\endgroup$
    – Dan
    Commented Mar 14, 2018 at 22:40
  • $\begingroup$ I appreciate your feedback. If your question is only about codes in Matlab, it does not belong to SE. DSP. However, I would suggest you to provide self-made by updating your question, with actual data, and we can help your in that direction. In other words, the question is interesting, yet yet we ain't coding at your place $\endgroup$ Commented Mar 15, 2018 at 6:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.