def invalidate_temporal(self):
    if self.temporal.is_prepared:
      self.contrast = numpy.zeros(self.temporal.key.shape)
      self.brightness = numpy.zeros(self.temporal.brightness.shape)

      for i in range(self.temporal.key.shape[1]):
        self.brightness[:, i] = wlsfilter(self.temporal.brightness[:, i], self.temporal.lambda_, self.temporal.alpha)
        self.contrast[:, i] = (1 - self.tmo.contrast) + wlsfilter(self.tmo.contrast * self.temporal.key[:, i], self.temporal.lambda_, self.temporal.alpha)
  def __getitem__(self, index):
    abs_index = Configuration.sequence.frame_range.absolutize(index)

    hdr = Configuration.sequence[index]
    hdr = remove_specials(hdr)

    if self.tmo.drawback_details:
      hdr_coarse = numpy.log(hdr + EPSILON)
      for i in range(hdr_coarse.shape[2]):
        hdr_coarse[..., i] = wlsfilter(hdr_coarse[..., i], self.tmo.lambda_, self.tmo.alpha)
      hdr_coarse = (hdr * (1 - self.tmo.detail_drawback) + (numpy.exp(hdr_coarse) - EPSILON) * self.tmo.detail_drawback)
      hdr = hdr * numpy.exp((hdr - hdr_coarse) * self.tmo.detail_highlight)
    else:
      hdr_coarse = hdr

    transfered = numpy.zeros(hdr.shape)

    hdr_mean = numpy.mean(hdr, axis=2)

    for channel_index in range(hdr.shape[2]):
      brightness_map = self.brightness[abs_index, channel_index] + hdr_mean
      ia = hdr_coarse[..., channel_index] / brightness_map
      ib = (hdr_coarse[..., channel_index] + brightness_map) * (brightness_map * numpy.sinh(ia))
      transfered[..., channel_index] = numpy.exp(-self.tmo.brightness_offset) * remove_specials(ib) ** self.contrast[abs_index, channel_index]

    ldr = hdr ** self.tmo.gamma / (hdr_coarse ** self.tmo.gamma + transfered)
    # ldr **= (1.0 / (self.tmo.gamma + numpy.spacing(0.0)))

    return ldr
Ejemplo n.º 3
0
import numpy
from gt_io import Configuration
from tonemapping.leonhardt_tmo import wlsfilter

if __name__ == "__main__":
  Configuration.open('/Volumes/Daten/EXR/Untitled.vtmo')

  brightness = numpy.array(Configuration['_temporal']['_brightness'])

  for i in range(brightness.shape[1]):
    brightness[:, i] = wlsfilter(brightness[:, i], 1.0, 1.2)


  print wlsfilter(numpy.array([1 ,2, 3]), 1.0, 1.2)