我有一個像這樣的比例尺地圖:(數字只是一個例子)猜測地圖上的rgb漸變?
它描述了一個地圖上的單個變量。但是,我無法訪問原始數據,並且幾乎不知道任何關於圖像處理的 。我所做的是使用PIL來獲取地圖上每個點的像素座標和RGB值。只需使用
pix = im.load()
並將pix[x,y]
保存爲每個x,y
即可。現在我想用上面的梯度來猜測每個點的值。
是否有這樣的梯度的標準公式?它對訓練有素的眼睛看起來非常熟悉嗎?我曾參觀過Digital Library of Mathematical Functions一些例子......但是我不知道如果它使用的色調,將RGB高度函數或別的東西(爲了方便起見,我還色盲一些果嶺/眉毛/紅色):)
如何進行,庫,鏈接或想法的任何提示讚賞。謝謝!
編輯:
繼答覆和馬蒂諾的建議,我試圖抓住頂部的顏色和底部:
def rgb2hls(colotup):
'''converts 225 based RGB to 360 based HLS
`input`: (222,98,32) tuple'''
dec_rgb = [x/255.0 for x in colotup] # use decimal 0.0 - 1.0 notation for RGB
hsl_col = colorsys.rgb_to_hls(dec_rgb[0], dec_rgb[1], dec_rgb[2])
# PIL uses hsl(360,x%,y%) notation and throws errors on float, so I use int
return (int(hsl_col[0]*360), int(hsl_col[1]*100), int(hsl_col[2]*100))
def pil_hsl_string(hsltup):
'''returns a string PIL can us as HSL color
from a tuple (x,y,z) -> "hsl(x,y%,z%)"'''
return 'hsl(%s,%s%%,%s%%)' % (hsltup[0], hsltup[1], hsltup[2])
BottomRed = (222,98,32) # taken with gimp
TopBlue = (65, 24, 213)
hue_red = pil_hsl_string(rgb2hls(BottomRed))
hue_blue = pil_hsl_string(rgb2hls(TopBlue))
但是他們出來很不同......這使我擔心使用rgb_to_hls函數來提取值。或者我是在做一些非常錯誤的事情?這是什麼顏色與代碼轉換爲:
很酷!我不知道這是否存在,或者你可以在gimp上閱讀HSV。它還揭示順時針HSV不完全匹配梯度。 – Massagran
@Massagran - 是的,非常整齊。甚至可以得到一個製作立體圖的gimp插件,但我離題了。一直想着這個漸變,我認爲,而不是一個單一的漸變,他們已經使用2.1從橙色到(只是越來越)綠色。第二個從(剛剛結束)綠到藍。我估計你的地圖上的120對應於連接點。我也認爲漸變可以避免在我的圖像中顯示的部分從大約100到130.知道必須有這個工具/設置組合使用! – enhzflep
@enhzlep,現在你提到它放大顯示漸變可以說「加速」放大到這個:http://i.imgur.com/aSw93.png並注意每個顏色不佔用相同的寬度就像它在gimp漸變中那樣(即中間的黃色更長,當你接近結束時紅色和藍色變短)。 – Massagran