double delta = 0, // Offset before assignment to dst
int borderType = cv::BORDER_DEFAULT // Border extrapolation to use
);
All the arguments of cv::sepFilter2D() are the same as those of cv::filter2D(), with the
exception of the replacement of the kernel argument with the rowKernel and columnKernel
arguments. The latter two are expected to be 𝑛
!
-by-1 and 1-by-𝑛
!
arrays (with 𝑛
!
not necessarily equal to
𝑛
!
).
The Filter Architecture
Almost all of the functions described in this chapter are based on a unified Filter Architecture. The Filter
Architecture is a class system that allows you (or the OpenCV developers) to create a new filter and
automatically reuse all of the things that every filter has in common (the convolution steps, handling of the
borders, etc.)
The Big Picture
The process of doing convolutions is complex because these are always very computationally intensive
operations. As a result, there is a great benefit to doing things very efficiently. On the other hand, writing
very efficient code is often very difficult to do in a modular way. As a result, OpenCV has an entire
architecture for handling just this problem. This architecture begins at the top with high-level operations
like cv::blur(). This function takes your image, smoothes it, and gives it back. Sounds simple, but this
is actually ...