画像の全体的な彩度を増減する関数のペアを作成しようとしています。「彩度」とは本質的に「グレーから離れている、またはグレーに近い」ことを意味することを理解しているため、RGB チャンネルを増減する必要がありますが、すべてを均等に行うことはできません (つまり、r * 2、g * 2、b * 2) 画像が明るくなるだけなので。
http://www.georeference.org/doc/colors_as_hue_saturation_and_brightness.htmの式を使用しようとし ましたが、コードで使用しようとすると、画像はほぼ完全に黒く、黄色の斑点がいくつかあります。
これが私がこれまでに試したことです:
def upSaturation(pictu):
'''Takes a picture and increases the overall color saturation'''
satuP = duplicatePicture(pictu)
for pixel in getPixels(satuP):
r = getRed(pixel)
g = getGreen(pixel)
b = getBlue(pixel)
mn = min(r, g, b)
mx = max(r, g, b)
lht = (mx + mn) / 2
if lht <= 128:
satu = 255 * ((mx - mn) / (mx + mn))
clr = makeColor(r * satu, g * satu, b * satu)
setColor(pixel, clr)
else:
sat = 255 * ((mx - mn) / (511 - (mx + mn)))
color = makeColor(r * sat, g * sat, b * sat)
setColor(pixel, color)
show(satuP)
return satuP
私も makeColor(sat, sat, sat) だけを試してみましたが、それは完全に黒く、いくつかの白い斑点がありました。この時点で他に何をすべきかわかりません。いくつかのガイダンスをいただければ幸いです。