예제 #1
0
파일: sprite.cpp 프로젝트: airways/aseprite
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);
    }
  }
}
예제 #2
0
파일: bmodel.cpp 프로젝트: grafin/Diplom
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);
}