Each discrete cosine transform (DCT) uses N real basis vectors whose components are cosines. In the DCT-4, for example, the jth component of v(k) is cos(j + 1/2) (k + 1/2)pi/n. These basis vectors are orthogonal and the transform is extremely useful in image processing. Tf the vector x gives the intensities along a row of pixels, its cosine series Sigma c(k)v(k) has the coefficients c(k) = (x,v(k))/N. They are quickly computed from a Fast Fourier Transform. But a direct proof of orthogonality, by calculating inner products, does not reveal how natural these cosine vectors are. We prove orthogonality in a different way. Each DCT basis contains the eigenvectors of a symmetric "second difference": matrix. By varying the boundary conditions we get the established transforms DCT-1 through DCT-4. Other combinations lead to four additional cosine transforms. The type of boundary condition (Dirichlet or Neumann, centered at a meshpoint or a midpoint) determines the applications that are appropriate for each transform. The centering also determines the period: N - 1 or N in the established transforms, N - 1/2 or N + 1/2 in the other four. The key point is that all these "eigenvectors of cosines" come from simple and familiar matrices.