Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Korjataan valokuvan harmaan kohdan punainen ja sininen samaksi kuin vihreä
- # jolloin harmaa näyttää harmaalta ja muutkin värit ovat oikein
- # Jos harmaan pikselin arvot ovat R=208,G=184,B=140
- # Tästä punaisen gammakorjaus on gamR = ln(G)/ln(R) =0.97703
- # Sinisen gammakorjaus gamB = ln(G)/ln(R) = 1.0553
- # Ladataan ensin Pythonin kuvankäsittelypaketti PIL (eli Pillow)
- # ja matematiikkapaketti math
- from PIL import Image
- import math
- # luetaan levyllä oleva näyttökaappauskuva im-tiedostoksi
- im = Image.open("Screenshot.png")
- # katsotaan kuva näytöllä
- im.show()
- # harmaan kohdan väriarvot eli rgb-arvot (red,green,blue)
- r, g, b = 208, 184, 140
- # punaisen ja sinisen gammakorjaukset
- gamR = math.log(g)/math.log(r)
- gamB = math.log(g)/math.log(b)
- # katsotaan kuvan im bandit eli kanavat
- # png-kuvassa ne ovat RGBA eli värikanavat ja A=alpha,läpinäkyvyyskanava
- print(im.mode)
- # puretaan kuva bandeiksi eli kanaviksi
- source = im.split()
- # annetaan kanaville RGBA kokonaislukuarvot
- R,G,B,A = 0,1,2,3
- # gammakorjataan punainen kanava source[R], tuloksena outR
- outR = source[R].point(lambda i: int(float(i)**gamR))
- # gammakorjataan sininen kanava source[B], tuloksena outB
- outB =source[B].point(lambda i: int(float(i)**gamB))
- # yhdistetään kaikki bandit,kanavat RGBA yhdeksi kuvaksi
- # R ja B on korjattu, muut G ja A ennallaan
- korjattukuva = Image.merge(im.mode,(outR,source[G],outB,source[A]))
- # näytetään värikorjattu kuva
- korjattukuva.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement