2013-12-19 32 views
2

我想了解如何複製Photoshop的着色功能程序。 我原本以爲使用顏色轉換矩陣(Flash的ColorMatrixFilter),但任何其他方法將受到歡迎。雖然我的案例在Flash中,但任何平臺都有問題。如何爲所有像素着色改變色相?

enter image description here

我已閱讀Paul Haeberli's essay on Matrix Operations for Image Processing這是關於旋轉色調非常豐富,也this implementation但是這不正是我要找的。

例如 - 鑑於這一形象:

enter image description here

100將輸出

色相旋轉 enter image description here

雖然着色可能提供類似:

enter image description here

哪有我去實現這個目標?

+1

ColorMatrixFilters大約均勻變化的值結合Pixel Bender着色器,而「彩色化」似乎將色調設置爲一個固定值,並按原樣取得飽和度和亮度。我想你應該在所有像素上使用HSB-RGB變換,並在變換回來之前將色調設置爲某個值,而彩色矩陣濾鏡在這裏沒有任何幫助。 – Vesper

+0

感謝您的意見 - 這很有道理。我改寫了這個問題 – OpherV

回答

0

可以使用Pixel Bender着色器對於這一點,這裏有一個簡單的一個:

{ 
    input image4 src; 
    parameter float redMultiplier; 
    parameter float greenMultiplier; 
    parameter float blueMultiplier; 
    output pixel4 dst; 

    void 
    evaluatePixel() 
    { 
     pixel4 pixel = sampleNearest(src,outCoord()); 

     pixel.r += redMultiplier; 
     pixel.g += greenMultiplier; 
     pixel.b += blueMultiplier; 
     dst = pixel;  
    } 
} 

Here's a tutorial如何在閃存

+0

你能詳細說明一下你的代碼嗎?它是如何工作的?輸入色調\飽和度在哪裏? – OpherV

+0

對不起,我想我誤解了你想改變HSB,而我卻給了你一個選擇RGB值的解決方案。上述解決方案可能無法滿足您的需求。基本上,它所做的是評估照片的每個像素,並通過將指定的值添加到紅色,藍色和綠色組件來對其進行修改。 – Marcela

+1

實際上,Pixel Bender着色器可以完成這項工作,我製作了一個着色器,將色相設置爲指定值,以指向色調處於特定範圍內的像素。問題是,由於Flash Player版本11.8 Pixel Bender着色器不僅僅被棄用,而且停止快速考慮進一步考慮使用它們。 Adobe決定不解決這個性能下降問題,在他們的地址中遇到了一大堆憤怒,但是卻把所有的PB用戶傾倒了。它也讓我很難放棄像處理器爲基礎的着色器這樣的先進技術。 Adobe說使用AGAL或Stage3D着色器。 – Vesper

相關問題