void Sprite::remapImages(frame_t frameFrom, frame_t frameTo, const Remap& remap) { ASSERT(m_format == IMAGE_INDEXED); //ASSERT(remap.size() == 256); for (const Cel* cel : uniqueCels()) { // Remap this Cel because is inside the specified range if (cel->frame() >= frameFrom && cel->frame() <= frameTo) { remap_image(cel->image(), remap); } } }
void BModel::wiener_filter(const int r, const double sigma, const double S) { IplImage *reKernel = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1); IplImage *image = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 4); IplImage *reRImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1); IplImage *reGImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1); IplImage *reBImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1); IplImage *kernel = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2); IplImage *rImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2); IplImage *gImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2); IplImage *bImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2); IplImage *imaginary = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1); cvZero(imaginary); cvZero(reKernel); create_kernel(r, sigma, reKernel); cvConvertScale(_tempImageSrc, image, 1/255.); cvSplit(image, reRImage, reGImage, reBImage, 0); cvMerge(reKernel, imaginary, 0, 0, kernel); cvMerge(reRImage, imaginary, 0, 0, rImage); cvMerge(reGImage, imaginary, 0, 0, gImage); cvMerge(reBImage, imaginary, 0, 0, bImage); wiener_filter_chanel(rImage, kernel, S); cvSplit(rImage, reRImage, imaginary, 0, 0); wiener_filter_chanel(gImage, kernel, S); cvSplit(gImage, reGImage, imaginary, 0, 0); wiener_filter_chanel(bImage, kernel, S); cvSplit(bImage, reBImage, imaginary, 0, 0); cvMerge(reRImage, reGImage, reBImage, 0, image); cvConvertScale(image, _tempImageDst, 255); remap_image(_tempImageDst, -r); change_filt_image(); create_temp_image(_srcImage); cvReleaseImage(&reKernel); cvReleaseImage(&image); cvReleaseImage(&reRImage); cvReleaseImage(&reGImage); cvReleaseImage(&reBImage); cvReleaseImage(&kernel); cvReleaseImage(&rImage); cvReleaseImage(&gImage); cvReleaseImage(&bImage); cvReleaseImage(&imaginary); }