Re: 給陣列上顏色...
看板Prob_Solve (計算數學 Problem Solving)作者H45 (!H45)時間17年前 (2007/12/24 11:12)推噓1(1推 0噓 1→)留言2則, 2人參與討論串2/2 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: 我承認這個標題給的很爛,但是... 實在不知道還能怎麼下 Orz
: 我有一個整數陣列 a,長度為 L
: 裡頭元素值域為 0~X
: 我希望能顯示 a 的時候,不同值可以有不同顏色
: 例如: 0→紅色,1→藍色,2→綠色....
: 以數學的方式來說,就是弄個函數,從 0~X 對應到 0~FFFFFF
: 但重點是,顏色又希望能用肉眼看出差異
: →太亮 or 太暗都不容易分出差異
: →同色系能看得出差異
: 還請高手指點 or 惠賜關鍵字...
: (是的,連要用什麼 keyword 去找演算法都不知道 Orz)
: ====
: 我有考慮過建表,但是 X 可能破百,甚至近千....... 囧
我收回 HSI 的方法。
現在手邊有書,來看看書上的作法吧。
這是一個 Gray Level to Color Transformations 的問題
把陣列索引值想成灰階值,輸出想成彩色像素值,問題就解了。
轉換法核心:
Red = |sin(ax + p)|
Green = |sin(ax + q)|
Blue = |sin(ax + r)|
其中 x 是灰階值,a, p, q, r 是可調參數,Red, Green, Blue 是彩色像素值
這邊的 x, Red, Green, Blue 都是假定在 [0, 1], 如果需要 [0, 255] 請自行調整。
sin 的輸入乘上係數 a 是為了決定顏色改變的週期
然而每一個 (或半個?) 週期會出現一次相似的顏色,所以要讓顏色盡可能的不同
就請把 a 值調小一點,這樣週期會加長,重複的次數相對就會減少
sin 的輸入分別加上不同的位移,p, q, r 是為了轉換成彩色
p, q, r 值請不要設定太接近的值,相同的 p, q, r 會使輸出變成灰色
儘可能在一個週期內位移不同但是適當的距離,這樣出來的顏色會好看的多。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.247.13
推
12/24 11:23, , 1F
12/24 11:23, 1F
→
12/24 11:38, , 2F
12/24 11:38, 2F
討論串 (同標題文章)
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章