Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # don't forget: pip install Pillow
- import math
- from PIL import Image
- source = Image.open("image.tif")
- def ycc(r, g, b):
- y = .299*r + .587*g + .114*b
- cb = 128 -.168736*r -.331364*g + .5*b
- cr = 128 +.5*r - .418688*g - .081312*b
- return y, cb, cr
- def rgb(y, cb, cr):
- r = y + 1.402 * (cr-128)
- g = y - .34414 * (cb-128) - .71414 * (cr-128)
- b = y + 1.772 * (cb-128)
- return round(r), round(g), round(b)
- data = []
- min_luma = 255
- max_luma = 0
- for pixel in source.getdata():
- yuv_pixel = ycc(*pixel)
- luma = yuv_pixel[0]
- log_luma = math.log(yuv_pixel[0],10)
- min_luma = min(min_luma, log_luma)
- max_luma = max(max_luma, log_luma)
- data.append((log_luma, yuv_pixel[1], yuv_pixel[2]))
- luma_range = max_luma - min_luma
- luma_factor = luma_range / 192
- for index,pixel in enumerate(data):
- pixel = (round((pixel[0] - min_luma) / luma_factor), pixel[1], pixel[2])
- rgb_pixel = rgb(*pixel)
- data[index] = rgb_pixel
- print(min_luma)
- print(max_luma)
- enhanced = Image.new('RGB', source.size)
- enhanced.putdata(data)
- enhanced.save('enhanced.tif')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement