Advertisement
jukaukor

varikorjaus_PIL_gamma.py

Oct 29th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. # Korjataan valokuvan harmaan kohdan punainen ja sininen samaksi kuin vihreä
  2. # jolloin harmaa näyttää harmaalta ja muutkin värit ovat oikein
  3. # Jos harmaan pikselin arvot ovat R=208,G=184,B=140
  4. # Tästä punaisen gammakorjaus on gamR = ln(G)/ln(R) =0.97703
  5. # Sinisen gammakorjaus gamB = ln(G)/ln(R) = 1.0553
  6. # Ladataan ensin Pythonin kuvankäsittelypaketti PIL (eli Pillow)
  7. # ja matematiikkapaketti math
  8. from PIL import Image
  9. import math
  10. # luetaan levyllä oleva näyttökaappauskuva im-tiedostoksi
  11. im = Image.open("Screenshot.png")
  12. # katsotaan kuva näytöllä
  13. im.show()
  14. # harmaan kohdan väriarvot eli rgb-arvot (red,green,blue)
  15. r, g, b = 208, 184, 140
  16. # punaisen ja sinisen gammakorjaukset
  17. gamR = math.log(g)/math.log(r)
  18. gamB = math.log(g)/math.log(b)
  19. # katsotaan kuvan im bandit eli kanavat
  20. # png-kuvassa ne ovat RGBA eli värikanavat ja A=alpha,läpinäkyvyyskanava
  21. print(im.mode)
  22. # puretaan kuva bandeiksi eli kanaviksi
  23. source = im.split()
  24. # annetaan kanaville RGBA kokonaislukuarvot
  25. R,G,B,A = 0,1,2,3
  26. # gammakorjataan punainen kanava source[R], tuloksena outR
  27. outR = source[R].point(lambda i: int(float(i)**gamR))
  28. # gammakorjataan sininen kanava source[B], tuloksena outB
  29. outB =source[B].point(lambda i: int(float(i)**gamB))
  30. # yhdistetään kaikki bandit,kanavat RGBA yhdeksi kuvaksi
  31. # R ja B on korjattu, muut G ja A ennallaan
  32. korjattukuva = Image.merge(im.mode,(outR,source[G],outB,source[A]))
  33. # näytetään värikorjattu kuva
  34. korjattukuva.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement