To scale the images, I would use:
void cvResize(const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR )
To compress an image, it will look best using CV_INTER_AREA interpolation, while to enlarge an image, it will look best with CV_INTER_CUBIC (slow) or CV_INTER_LINEAR (faster, but still looks fine).
But I have not used cvPyrDown yet, so I do not know its characteristics ...
source share