We propose a sparse non-negative image coding based on simulated annealing and matrix pseudo-inversion. We show that sparsity and non-negativity are both important to obtain part-based coding and we also show the impact of each of them on the coding. In contrast with other approaches in the literature, our method can constrain both weights and basis vectors to generate part-based bases suitable for image recognition and fiducial point extraction. We also propose a speedup of the algorithm by implementing a hybrid system that mixes simulated annealing and pseudo-inverse computation of matrices.