     fragmentation_.reset(new Fragmentation<16>(this->size_));
 
     // setup internal memory
-    switch (this->u_->nChannels())
-    {
-    case 1:
-      this->u_.reset(new ImageGpu32fC1(this->size_));
-      this->u_prev_.reset(new ImageGpu32fC1(this->size_));
-      this->p_.reset(new ImageGpu32fC2(this->size_));
-      break;
-    default:
-      throw imp::cu::Exception("ROF denoising not implemented for given image type.",
-                               __FILE__, __FUNCTION__, __LINE__);
-    }
+    this->u_.reset(new ImageGpu32fC1(this->size_));
+    this->u_prev_.reset(new ImageGpu32fC1(this->size_));
+    this->p_.reset(new ImageGpu32fC2(this->size_));
+
 
     // setup textures
     this->f_tex_ = this->f_->genTexture(false,

          reinterpret_cast<float*>(this->u_->data()),
          reinterpret_cast<float*>(this->u_prev_->data()), this->u_->stride(),
          *this->f_tex_, *this->u_tex_, *this->p_tex_,
          this->params_.lambda, tau, theta, this->size_.width(), this->size_.height());

      sigma /= theta;
      theta *= theta;


  if (x<width && y<height)
  {
    d_u[y*stride_u + x] = static_cast<unsigned char>(
          255.0f * tex2D<float>(u_tex, x+.5f, y+.5f));
  }
}
