Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. # don't forget: pip install Pillow
  4.  
  5. import math
  6. from PIL import Image
  7.  
  8. source = Image.open("image.tif")
  9.  
  10. def ycc(r, g, b):
  11. y = .299*r + .587*g + .114*b
  12. cb = 128 -.168736*r -.331364*g + .5*b
  13. cr = 128 +.5*r - .418688*g - .081312*b
  14. return y, cb, cr
  15.  
  16. def rgb(y, cb, cr):
  17. r = y + 1.402 * (cr-128)
  18. g = y - .34414 * (cb-128) - .71414 * (cr-128)
  19. b = y + 1.772 * (cb-128)
  20. return round(r), round(g), round(b)
  21.  
  22. data = []
  23. min_luma = 255
  24. max_luma = 0
  25. for pixel in source.getdata():
  26. yuv_pixel = ycc(*pixel)
  27. luma = yuv_pixel[0]
  28. log_luma = math.log(yuv_pixel[0],10)
  29. min_luma = min(min_luma, log_luma)
  30. max_luma = max(max_luma, log_luma)
  31. data.append((log_luma, yuv_pixel[1], yuv_pixel[2]))
  32.  
  33. luma_range = max_luma - min_luma
  34. luma_factor = luma_range / 192
  35.  
  36. for index,pixel in enumerate(data):
  37. pixel = (round((pixel[0] - min_luma) / luma_factor), pixel[1], pixel[2])
  38. rgb_pixel = rgb(*pixel)
  39. data[index] = rgb_pixel
  40.  
  41. print(min_luma)
  42. print(max_luma)
  43.  
  44. enhanced = Image.new('RGB', source.size)
  45. enhanced.putdata(data)
  46. enhanced.save('enhanced.tif')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement