I’m a beginner in image processing, and was wondering since seperated (decomposed) filters help give faster and more efficient results, when do we even need to use composite filters? All I heard is the advantages of decomposed filters,but what about composite filters?
Image Processing Context
In classic Image Processing the filters used are known.
Hence being separable is a property of a given filter which is suitable to the task.
In this context, separability only means we can have a more efficient way to apply the filter computationally while the end result is the same. So, in Image Processing, if you have a filter which is separable, use that.
Deep Learning Context
In deep learning context, where the filters are learned, being separate is a constrained. Namely, it has a model behind it.
The main property of in this context, if only one 1D kernel is used, is separable filters are symmetric. So if you want to learn a symmetric filter (You can chose the axis by rotating) this is the way to go.
For instance, it makes sense in a filter detecting elongated edges.
In case we allow the filter to be built using 2 different 1d filters then the property we enforce is rank 1 filter.
For any given problem definition, there's a filter that -- if you ignore execution time and hardware expense -- is "best"*. In general, that "best" filter isn't separable. Depending on the problem at hand, the degree to which the optimum degrades if you find the best separable filter will vary.
So -- sometimes a non-separable filter will give "better" results in the absence of considerations of processing expense. Sometimes it'll be so much better that it's just what you need to use (I can't think of any cases off hand, but -- just assume I'm right, for the sake of argument).
Even today, there's a lot of video processing that needs to be optimized for processor effort rather than striving for that theoretical "cost no object" optimum that you'll see a lot of attention paid to easy computational optimization, like using separable filters, or small kernels, or similar.
* I put "best" in quotes because it depends so heavily on the problem definition, and it can be fiendishly difficult to make a formal definition of "best" with what you really need.