For any n-by-n complex matrix A and any k, 1 <= k <= n, let Lambda(k)(A) = {lambda is an element of C : X*AX = lambda I(k) for some n-by-k X satisfying X*X = I(k)) be its rank-k numerical range. It is shown that if A is an n-by-n contraction, then Lambda(k)(A) = boolean AND{Lambda(k)(U) : U is an (n + d(A))-by-(n + d(A)) unitary dilation of A}, where d(A) = rank (I(n) - A* A). This extends and refines previous results of Choi and Li on constrained unitary dilations, and a result of Mirman on S(n)-matrices.