As for illumination variation, traditional feature extraction methods are not satisfactory for face recognition. A block discriminant analysis algorithm is proposed to solve the problem. Firstly, local contrast enhancement is used to compensate for uneven illumination; secondly, discrete cosine transform (DCT) is implemented for divided image blocks. According to data distribution of DCT matrix, the block candidate features are selected, and merged to candidate features; finally, block discriminant analysis are carried out for features extraction. Experiments are tested on Yale and Yale B, the results prove the algorithm outperform related algorithms.