A convolution filter is a small grid of weights — three by three, five by five — that is dragged across the image. At each position it multiplies its weights by the pixels underneath, sums the products, and writes one number into an output map. That output map is called a feature map, and a large value in it means the patch under the filter looked like whatever the filter is tuned to detect.
The weights are not designed by a person. They start random and are adjusted during training until the filter becomes useful, which is the decisive difference from the hand-designed edge kernels of the previous chapter. A filter that ends up with positive weights on one side and negative weights on the other behaves like an edge detector; a filter with a different arrangement may respond to a color transition or a small blob.
Because the same weights are reused at every position, two consequences follow. First, the number of parameters stays tiny — nine weights cover the whole image rather than one weight per pixel. Second, the detector is position-tolerant by construction: if the pattern appears in the upper left or the lower right, the same filter fires. That is exactly the property a hand-designed recipe could not guarantee.