MATLAB: How to filter plots to get constant more prominently visible

computer visionconstant patternsplot filteringplotssmothingvideo processing

I am working on plots to get the distance between two constants point in the plots. Below is one example plot i generated where x-axis shows the time of video and y-axis hows the height of bounding box. I need to take distance between two points where the bounding box height was constant for some time. Like if bounding box height increases/decreases between the range of 1 to 2 for some time, we consider it that the bounding box height was same for some time. But the graph does not clearly show this pattern, i need to filter the noise and make the constant portion more prominent in order to extract constant portions from plot. If anyone can help me in it.

Best Answer

Use histc() or the newer histcounts() or quantiz() to quantize the values.
Your problem is not well specified in its current form. Are you looking for hard edges, or are you looking for relative movement? If you were looking for relative movement you could look at abs(diff(y)) but you then run the risk of missing gradual drift -- for example, 1.3:.05:2.8 never has more than the small 0.05 difference between any two adjacent values, but the overall change is 1.5; where would you want to put the breakpoints in such a case?