A bump like this one is likely to be wide-band, especially with the sharp onset. Plus, the line may be hard to deal with in the Fourier domain. Hence, the combination is complicated to remove with a classical linear filter. The problem is very akin to baseline, background or trend removal, answered elsewhere here.
Several options are possible, for instance:
- use a non-linear filter, based on a median, or a minimum/maximum statistics,
- use morphological operators: a rolling ball, lot of straight segments, etc.
- use a knowledge on the data model, like a linear equation: $y=ax+b$, or the fact that the bump is "above",
- combine the above in a variational formulation, using appropriate data fidelity and penalty.
In your example, I suspect that a classical linear fit with robust distance (like a least-absolute distortion) could do the job. I will call all the above filters, in the wide sense that you will remplace a value with respect to some sort of combination of the others.
You can also call the following robust regression, LAD fitting. An example at work:
% Standard and Robust fit of a degree 1 polynomial w/ a bump nSample = 1000; % Create a similar composite signal time = linspace(0,5,nSample)'; polyCoef = [0.2 0]; dataLine = polyval(polyCoef,time); dataParabola = -8*(time-2).*(time-3); dataParabola(dataParabola < 0) = 0; data = dataLine+dataParabola; % Use Matlab curve fitting toolbox optsRobust = fitoptions('Method','LinearLeastSquares','Robust','LAR'); [fitObject,gof] = fit(time,data,'poly1',optsRobust); h1=plot(fitObject,time,data); grid on