What is the difference between kernel and filter
A kernel is the 2 dimensional matrix for 2d convolution (or 1d also), A kernel defines the size of the convolution. A filter is the values stored in the kernel matrix. A kernel matrix doesn't have to be a filter, for example if you had a kernel with 

\begin{bmatrix}0&amp;0&amp;0\\0&amp;1&amp;0\\0&amp;0&amp;0\end{bmatrix}

the kernal above wouldn't filter anything, but leave you with what you started after convolution.

You can also make edge detectors, like the one below
\begin{bmatrix}1&amp;0&amp;-1\\1&amp;0&amp;-1\\1&amp;0&amp;-1\end{bmatrix}