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
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)