Esempio n. 1
0
void addAdditiveNoize(const cv::Mat& src, cv::Mat& dst, double mean, double stddev) {
    CV_Assert(src.type() == CV_8UC1);

    cv::RNG rng;
    src.copyTo(dst);
    cv::Mat noize(dst.rows, dst.cols, dst.type(), cv::Scalar(0));
    cv::randn(noize, mean, stddev);
    dst += noize;
}
Esempio n. 2
0
fullcircle::Sequence::Ptr mk_perlin_noise() {
  std::cout << "Generating Perlin noise demo sequence." << std::endl;

  fullcircle::ColorScheme::Ptr smash(new fullcircle::ColorSchemeSmash());
  fullcircle::Sequence::Ptr seq(new fullcircle::Sequence(25,8,8));
  fullcircle::FrameFader::Ptr fader(new fullcircle::FrameFader(5,25));

  fullcircle::PerlinNoise::Ptr noize(new fullcircle::PerlinNoise(
      3,    // octaves
      .42, // freq
      2.4,   // amplitude
      42    // seed
    ));

  for( uint32_t frameID = 0; frameID < 100; ++frameID) {
    fullcircle::Frame::Ptr frame(new fullcircle::Frame(8,8));
    frame->fill_whole(smash->get_background());
    for( uint16_t x = 0; x < 8; ++x) {
      for( uint16_t y = 0; y < 8; ++y) {
        float n=noize->get_3d(x/8.0f, y/8.0f, frameID/10.0f);
        // determine color
        if (0<=n && n<0.3) {
          frame->set_pixel(x,y,smash->get_primary());
        } else if (0.3<=n && n<0.7) {
          frame->set_pixel(x,y,smash->get_secondary());
        } else if (0.7<=n && n<=1.0) {
          frame->set_pixel(x,y,smash->get_background());
        } else {
          std::cout << "Error: Unknown noise value: " << n << std::endl;
        }
      }
    }
    if (seq->size() == 0)
      seq->add_frame(frame);
    else
      seq = (*seq) << fader->fade(seq->get_last_frame(), frame);
  }
  return seq;
}