對於一些抽象的效果圖,Photoshop中的極座標濾鏡還有很多東西值得研究…
【摘要】對於一些抽象的效果圖,Photoshop中的極座標濾鏡還有很多東西值得研究…
在國外的網站上看到有人把Photoshop的濾鏡分成兩類,一類是對原圖沒有破壞性的濾鏡,另一類是對原圖有破壞性的濾鏡。破壞性濾鏡多以扭曲濾鏡為主,其中極座標的破壞性可以算是相當大的一種。
因為極座標的破壞性,很多人認為這個濾鏡對於影像、照片的處理沒有什麼太大的實際應用,但是如果對於一些抽象的影像,我覺得這個濾鏡還是有些地方值得研究一下的,希望各位看過本文也會有所啟發。
一、極座標變形的感性認識
先看一下極座標對影像做的是一種什麼樣的扭曲。如圖
這一組圖分別是正方型、圓形和色塊經過極座標變換前後的圖像。
直角座標到極座標的變化:可以認為是頂邊下凹,底邊和兩側邊上翻的過程。
極座標到直角座標的變化:可以認為是底邊上凹,頂邊和兩側邊下翻的過程。
這裡所說的「過程」只是用來加深記憶而已,實際上這個上翻下翻的過程是不存在的,而是直接透過座標映射而成的。
1、直角座標—>極座標
原圖中的垂直線經極座標變換後,變成放射線。
原圖中的橫線經極座標變換後,變成同心圓。
當然橫豎交錯畫出來就是蜘蛛網啦。
請觀察每種色塊在變換之後的位置,原圖的頂部收縮為圓心部分,底部的紅色成為畫布內切圓。左右兩個藍色的色塊向上翻轉之後最終合併為一個扇形,原來的兩個側邊會在上方重合。
記住每種色塊變化前後的位置不僅有住於加深對極坐標濾鏡的理解而且在實際應用中也有幫助,至少現在你已經學會畫放射線、同心圓、扇型了。
2、極座標—>直角座標
原圖中的垂直線和橫線(座標軸除外)經變換後,變成圖中的拋物線/雙曲線(具體是那種線形我尚未搞清楚,但我更傾向於是雙曲線)。
座標軸變換後,變成縱向的5條分隔線,其中1,3,5是原縱軸,2,4是原橫軸。
對於色塊的變化,請大家注意一下位置和幅度就是了,這我研究得不多。
Btw:在前言裡我曾說過極座標對影像有破壞性,其實極座標濾鏡也具有一定的還原性,畢竟這是座標系間的映射。對於執行了正變換的圖形再執行反變換還是可以恢復出原圖的一些資訊的。但是因為極座標不是一一對應的關係,所以在圖的邊緣部分的資訊就不能恢復了。比較另類的應用程式還可以利用極座標的還原性來為圖片加密。
二、極座標濾鏡應用
我使用極坐標濾鏡主要還是用於畫圓,或者說畫以圓為基礎的圖像。我們常看到用向量軟體畫的一些重複的有規律的圖形,其實某些圖利用極座標濾鏡就可以完成,有時比用向量軟體做得更好,變化更多。
2.1 放射線的製作,請參閱第一部分。
2.2 同心圓的製作,參見第一部分。
2.3 扇型,環型,彩虹,參見第一部分。
2.4 螺線
螺旋線在向量軟體中畫是相當簡單的事,有些軟體本身就有螺線工具。但是對於ps來說,並沒有特別合適的繪製螺線的工具或公式。在扭曲濾鏡裡有一個旋轉扭曲(Twirl)濾鏡可以做類似螺線的效果,但感覺可控性不強。
我從畫同心圓得到啟發,發現可以利用極坐標濾鏡來畫螺線,無論是等距的還是開放式的都可以畫,步驟也比較簡單,只有幾步而已。
先建立一個矩形空白檔案(400*20),畫一條斜線(如果是粗斜線,那麼注意斜線在畫布的另兩個頂角部分也要畫斜線處理一下以保證下一步填充時能夠正常銜接),定義圖案。如圖
建立新檔案(400*400)以剛才定義的圖案填滿。如圖
應用極坐標濾鏡,直角坐標——極坐標
應用光照濾鏡。
再套用球面化濾鏡和其他的修改,完成。
上面這個圖是畫等距螺線用的,如果畫不等距螺線,需要改變每條斜線的間距和斜率。
說明:圖片的右下會出現一道黑色的痕跡,這條黑線是原圖的底邊上的黑點映射過來的。原圖的底邊在極座標後會映射為與新圖外邊框內切的圓(正方形畫布,如果是長方形畫布就是橢圓)以及圓外的所有空白的地方。如果要避免這條黑線,只要注意原圖的底邊線為背景色就可以了。其實這道線也有其特殊的用法,具體見後面的例子。
畫好的螺線還可以用ImageReady做成Gif動畫。
2.5 縱向斜線和網格的極座標變化
道理都是一樣的,看明白一個,其他的就都會了。但要注意,如果是填滿垂直線,新的畫布尺寸最好是原定義圖案尺寸的整數倍。不然,原圖的左右兩邊在極座標濾鏡之後不能很好的融和。
下面的這兩張圖就利用了剛才介紹的黑線做成了內切圓外的放射線。
複雜圖形演變
2.6 網格的極座標變化
利用簡單的網格配合其他一些濾鏡的使用可以做出各種出人意料的效果。如圖組6~組9。以下以組8為例簡單介紹一下製作方法。
先畫網格,不知道大家用什麼方法畫網格?填充還是別的什麼方法,以後可以交流一下。我畫網格用的是拼貼(Tiles)。
使用極座標濾鏡(極座標—>直角座標),垂直翻轉。
再次s使用極座標濾鏡(極座標—>直角座標),垂直翻轉。
再使用極坐標濾鏡(直角坐標—>極坐標)
使用光照濾鏡,曲線
完成效果如下。
組7和組9的製作方法與組8類似,只是中間夾雜了一些其他的步驟。
其他應用
2.7 製作光碟
製作光碟的方法很多,這個當然是用極座標畫的,但感覺做得併不好。
2.8 放射文字
組11,關於這個網上有很多教程,不再贅述。
既然如此,那麼極座標到直角座標轉換有什麼用呢?大部分情況下,需要進行極坐標變換的只是圖像中的一部分,如果直接“做直線->直角坐標轉極坐標”,那麼原始圖像也會被扭曲。因此可依照「極座標轉直角座標->做直線->直角座標轉極座標」的方式,就能保持原有影像不變。
由此我們可以總結出極座標濾鏡以下幾個特點:
- 直角座標到極座標轉換用來做效果,而極座標到直角座標的轉換用來抵消前者的副作用;
- 水平線轉換成圓,垂直線轉換成放射線,斜線轉換成螺旋線;
- 原影像上側對應圓心,下側對應圓心外;
與風結合
風濾鏡恰好是製作直線特別是漸隱的放射效果直線的好工具。根據上面「極座標轉直角座標->做直線->直角座標轉極座標」的理論,使用風來製作直線,就能獲得所需的放射效果
2.9 形狀的極座標變化
我最喜歡這個,是無意間試出來的。組12。
具體應用就講到這裡,最後講一點點理論,說一下極座標轉換濾鏡的工作過程。
三、 極座標濾鏡的工作過程(直角座標到極座標)一般而言,點陣圖影像中的任一點(像素)可以用直角座標(x,y)來表示。同樣這個像素也可以由極座標(r,a)來表示。極座標濾鏡的工作過程就是將基於直角座標系的像素(x,y)經過極座標映射(r,a)之後再由直角座標(x',y')表示出來的過程。
直角座標和極座標的互化公式如下:
r = sqrt ( x * x + y * y )
a = arctg ( y / x )
x = r * cos ( a )
y = r * sin ( a )
下面是一段是模擬極座標濾鏡工作的偽代碼。這個程式碼不是我寫的,我也只是看懂而已,更詳細的解釋可以參考下面的連結:
http://www.jasonwaltman.com/thesis/filter-polar.html
(這是國外的網站,站主利用C++模擬出了一些PS的濾鏡的效果,而且提供原始碼和原始程式。)
for every pixel in the original image do
{
// x和y是當前像素在直角座標內的座標。
// 影像中心點的座標為x = 0, y = 0。
// r 和a 是像素的極座標。其中角度a為弧度單位。
r = sqrt ( x * x + y * y );
a = atan2 ( y / x );
// R取圖像長和寬的最小值的一半。
R= min[ image_width , image_height ] / 2
// 新的x和y是經過極座標濾鏡變換之後,像素在直角座標系中的新座標。這個轉換的目的,特別是R和6.2832(2pi)的選擇,我認為是將轉換後的圖像限定到原始畫布大小之內的作用。同時這個步驟最終導致了影像的變形。
x = r * image_height / R;
y = a * image_width / 6.2832;
filterpixel.x = x;
filterpixel.y = y;
}
這僅僅是一段偽代碼而已,真正的執行過程要複雜一些,如果繼續深入下去就嚴重跑題了,所以深入的討論還是請參見那個鏈接,自己去看吧。
最後引用那個網站的一句話作為結束語。
“If used creatively, the effect is worth more than just its novelty.”
希望各位在看過本文後能有所啟發。口動不如心動,心動不如行動,期待各位的作品