Photoshop極坐標(biāo)濾鏡詳細(xì)講解
2023-12-23 17:36:47
來(lái)源/作者: /
己有:1人學(xué)習(xí)過(guò)
Photoshop極坐標(biāo)濾鏡詳細(xì)講解對(duì)于一些抽象的效果圖,Photoshop中的極坐標(biāo)濾鏡還有很多東西值得研究……
【摘要】對(duì)于一些抽象的效果圖,Photoshop中的極坐標(biāo)濾鏡還有很多東西值得研究……
在國(guó)外的網(wǎng)站上看到有人把Photoshop的濾鏡分為兩類(lèi),一類(lèi)是對(duì)原圖沒(méi)有破壞性的濾鏡,另一類(lèi)是對(duì)原圖有破壞性的濾鏡。破壞性濾鏡多以扭曲濾鏡為主,其中極坐標(biāo)的破壞性可以算是相當(dāng)大的一種。
因?yàn)闃O坐標(biāo)的破壞性,很多人認(rèn)為這個(gè)濾鏡對(duì)于圖像、照片的處理沒(méi)有什么太大的實(shí)際應(yīng)用,但是如果對(duì)于一些抽象的圖像,我覺(jué)得這個(gè)濾鏡還是有些地方值得研究一下的,希望各位看過(guò)本文也會(huì)有所啟發(fā)。
一、極坐標(biāo)變形的感性認(rèn)識(shí)
先看一下極坐標(biāo)對(duì)圖像做的是一種什么樣的扭曲。如圖
photoshop
這一組圖分別是正方型、圓形和色塊通過(guò)極坐標(biāo)變換前后的圖像。
直角坐標(biāo)到極坐標(biāo)的變化:可以認(rèn)為是頂邊下凹,底邊和兩側(cè)邊上翻的過(guò)程。
極坐標(biāo)到直角坐標(biāo)的變化:可以認(rèn)為是底邊上凹,頂邊和兩側(cè)邊下翻的過(guò)程。
這里所說(shuō)的“過(guò)程”只是用來(lái)加深記憶而已,實(shí)際上這個(gè)上翻下翻的過(guò)程是不存在的,而是直接通過(guò)坐標(biāo)映射而成的。
1、直角坐標(biāo)—>極坐標(biāo)
原圖中的豎線經(jīng)極坐標(biāo)變換后,變?yōu)榉派渚€。
原圖中的橫線經(jīng)極坐標(biāo)變換后,變?yōu)橥膱A。
當(dāng)然橫豎交錯(cuò)畫(huà)出來(lái)就是蜘蛛網(wǎng)啦。
請(qǐng)觀察每種顏色色塊在變換之后的位置,原圖的頂部收縮為圓心部分,底部的紅色成為畫(huà)布內(nèi)切圓。左右兩個(gè)藍(lán)色的色塊向上翻轉(zhuǎn)之后最終合并為一個(gè)扇型,原來(lái)的兩個(gè)側(cè)邊會(huì)在上方重合。
記住每種色塊變化前后的位置不僅有住于加深對(duì)極坐標(biāo)濾鏡的理解而且在實(shí)際應(yīng)用中也有幫助,至少現(xiàn)在你已經(jīng)學(xué)會(huì)畫(huà)放射線、同心圓、扇型了。
2、極坐標(biāo)—>直角坐標(biāo)
原圖中的豎線和橫線(坐標(biāo)軸除外)經(jīng)變換后,變?yōu)閳D中的拋物線/雙曲線(具體是那種線形我尚未搞清楚,但我更傾向于是雙曲線)。
坐標(biāo)軸經(jīng)變換后,變?yōu)榭v向的5條分隔線,其中1,3,5是原縱軸,2,4是原橫軸。
對(duì)于色塊的變化,請(qǐng)大家注意一下位置和幅度就是了,這個(gè)我研究得不多。
Btw:在前言里我曾說(shuō)過(guò)極坐標(biāo)對(duì)圖像有破壞性,其實(shí)極坐標(biāo)濾鏡也具有一定的還原性,畢竟這是坐標(biāo)系間的映射。對(duì)于執(zhí)行了正變換的圖形再執(zhí)行反變換還是可以恢復(fù)出原圖的一些信息的。但是因?yàn)闃O坐標(biāo)不是一一對(duì)應(yīng)的關(guān)系,所以在圖的邊緣部分的信息就不能恢復(fù)了。比較另類(lèi)的應(yīng)用還可以利用極坐標(biāo)的還原性為圖片加密。
二、極坐標(biāo)濾鏡應(yīng)用
我使用極坐標(biāo)濾鏡主要還是用于畫(huà)圓,或者說(shuō)畫(huà)以圓為基礎(chǔ)的圖像。我們經(jīng)??吹接檬噶寇浖?huà)的一些重復(fù)的有規(guī)律的圖形,其實(shí)某些圖利用極坐標(biāo)濾鏡就可以完成,有時(shí)比用矢量軟件做得更好,變化更多。
2.1 放射線的制作,參見(jiàn)第一部分。
2.2 同心圓的制作,參見(jiàn)第一部分。
2.3 扇型,環(huán)型,彩虹,參見(jiàn)第一部分。
2.4 螺線
螺旋線在矢量軟件中畫(huà)是相當(dāng)簡(jiǎn)單的事,有些軟件本身就有螺線工具。但是對(duì)于ps來(lái)說(shuō),并沒(méi)有特別合適的繪制螺線的工具或公式。在扭曲濾鏡里有一個(gè)旋轉(zhuǎn)扭曲(Twirl)濾鏡可以做類(lèi)似螺線的效果,但感覺(jué)可控性不強(qiáng)。
photoshop
我從畫(huà)同心圓得到啟發(fā),發(fā)現(xiàn)可以利用極坐標(biāo)濾鏡來(lái)畫(huà)螺線,無(wú)論是等距的還是開(kāi)放式的都可以畫(huà),步驟也比較簡(jiǎn)單,只有幾步而已。
先建立一個(gè)矩形空白文件(400*20),畫(huà)一條斜線(如果是粗斜線,那么注意斜線在畫(huà)布的另兩個(gè)頂角部分也要畫(huà)斜線處理一下以保證下一步填充時(shí)能夠正常銜接),定義圖案。如圖
photoshop
建立新文件(400*400)用剛才定義的圖案填充。如圖
photoshop
應(yīng)用極坐標(biāo)濾鏡,直角坐標(biāo)——極坐標(biāo)
photoshop
應(yīng)用光照濾鏡。
photoshop
再應(yīng)用球面化濾鏡和其他的修改,完成。
photoshop
上面這個(gè)圖是畫(huà)等距螺線用的,如果畫(huà)不等距螺線,需要改變每條斜線的間距和斜率。
photoshop
photoshop
說(shuō)明:圖片的右下會(huì)出現(xiàn)一道黑色的痕跡,這條黑線是原圖的底邊上的黑點(diǎn)映射過(guò)來(lái)的。原圖的底邊在極坐標(biāo)后會(huì)映射為與新圖外邊框內(nèi)切的圓(正方形畫(huà)布,如果是長(zhǎng)方形畫(huà)布就是橢圓)以及圓外的所有空白的地方。如果要避免這條黑線,只要注意原圖的底邊線為背景色就可以了。其實(shí)這道線也有其特殊的用法,具體見(jiàn)后面的例子。
畫(huà)好的螺線還可以用ImageReady做成Gif動(dòng)畫(huà)。
2.5 縱向斜線和網(wǎng)格的極坐標(biāo)變化
道理都是一樣的,看明白一個(gè),其他的就都會(huì)了。但要注意,如果是填充豎線,新的畫(huà)布尺寸最好是原定義圖案尺寸的整數(shù)倍。不然,原圖的左右兩邊在極坐標(biāo)濾鏡之后不能很好的融和。
下面的這兩個(gè)圖就利用了剛才介紹的黑線做成了內(nèi)切圓外的放射線。
photoshop
photoshop
復(fù)雜圖形演變
photoshop
2.6 網(wǎng)格的極坐標(biāo)變化
利用簡(jiǎn)單的網(wǎng)格配合其他一些濾鏡的使用可以做出各種出人意料的效果。如圖組6~組9。下面以組8為例簡(jiǎn)單介紹一下制作方法。
先畫(huà)網(wǎng)格,不知道大家用什么方法畫(huà)網(wǎng)格?填充還是別的什么方法,以后可以交流一下。我畫(huà)網(wǎng)格用的是拼貼(Tiles)。
photoshop
使用極坐標(biāo)濾鏡(極坐標(biāo)—>直角坐標(biāo)),垂直翻轉(zhuǎn)。
photoshop
再次s使用極坐標(biāo)濾鏡(極坐標(biāo)—>直角坐標(biāo)),垂直翻轉(zhuǎn)。
photoshop
再使用極坐標(biāo)濾鏡(直角坐標(biāo)—>極坐標(biāo))
photoshop
使用光照濾鏡,曲線
photoshop
photoshop
完成效果如下。
photoshop
組7和組9的制作方法與組8類(lèi)似,只是中間夾雜了一些其他的步驟。
photoshop
photoshop
其他應(yīng)用
photoshop
2.7 制作光盤(pán)
制作光盤(pán)的方法很多,這個(gè)當(dāng)然是用極坐標(biāo)畫(huà)的,但感覺(jué)做得并不好。
photoshop
2.8 放射文字
組11,關(guān)于這個(gè)網(wǎng)上有很多教程,不再贅述。
既然如此,那么極坐標(biāo)到直角坐標(biāo)轉(zhuǎn)換有什么用處呢?大部分情況下,需要進(jìn)行極坐標(biāo)變換的僅僅是圖像中的一部分,如果直接“做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”,那么原有圖像也會(huì)被扭曲。因此可按照“極坐標(biāo)轉(zhuǎn)直角坐標(biāo)->做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”的方式,就能保持原有圖像不變。
由此我們可以總結(jié)出極坐標(biāo)濾鏡以下幾個(gè)特點(diǎn):
直角坐標(biāo)到極坐標(biāo)轉(zhuǎn)換用于做效果,而極坐標(biāo)到直角坐標(biāo)的轉(zhuǎn)換用于抵消前者的副作用;水平線轉(zhuǎn)換成圓,垂直線轉(zhuǎn)換成放射線,斜線轉(zhuǎn)換成螺旋線;原圖像上側(cè)對(duì)應(yīng)圓心,下側(cè)對(duì)應(yīng)圓心外;與風(fēng)結(jié)合
風(fēng)濾鏡恰好是制作直線特別是漸隱的放射效果直線的好工具。根據(jù)上面 “極坐標(biāo)轉(zhuǎn)直角坐標(biāo)->做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”的理論,使用風(fēng)來(lái)制作直線,就能獲得所需的放射效果
photoshop
2.9 形狀的極坐標(biāo)變化
我最喜歡這個(gè),是無(wú)意中試出來(lái)的。組12。
photoshop
具體應(yīng)用就講到這里,最后講講一點(diǎn)點(diǎn)理論,說(shuō)一下極坐標(biāo)轉(zhuǎn)換濾鏡的工作過(guò)程。
三、 極坐標(biāo)濾鏡的工作過(guò)程(直角坐標(biāo)到極坐標(biāo))
一般而言,位圖圖像中的任意一點(diǎn)(象素)可以用直角坐標(biāo)(x,y)來(lái)表示。同樣這個(gè)象素也可以由極坐標(biāo)(r,a)來(lái)表示。極坐標(biāo)濾鏡的工作過(guò)程就是將基于直角坐標(biāo)系的象素(x,y)經(jīng)過(guò)極坐標(biāo)映射(r,a)之后再由直角坐標(biāo)(x’,y’)表示出來(lái)的過(guò)程。
直角坐標(biāo)和極坐標(biāo)的互化公式如下:
r = sqrt ( x * x y * y )
a = arctg ( y / x )
x = r * cos ( a )
y = r * sin ( a )
下面是一段是模擬極坐標(biāo)濾鏡工作的偽代碼。這個(gè)代碼并不是我編寫(xiě)的,我也只是看懂而已,更詳細(xì)的解釋可以參考下面的鏈接:
https://img.lvups.com/d/file/bigpic/2022/12/26/3zsde4faouh
(這是個(gè)國(guó)外的網(wǎng)站,站主利用C 模擬出了一些PS的濾鏡的效果,而且提供源代碼和源程序。)
for every pixel in the original image do
{
// x和y是當(dāng)前象素在直角坐標(biāo)內(nèi)的坐標(biāo)。
// 圖像中心點(diǎn)的坐標(biāo)為 x = 0, y = 0。
// r 和 a 是象素的極坐標(biāo)。其中角度a為弧度單位。
r = sqrt ( x * x y * y );
a = atan2 ( y / x );
// R取圖像長(zhǎng)和寬的最小值的一半。
R= min[ image_width , image_height ] / 2
// 新的x和y是經(jīng)過(guò)極坐標(biāo)濾鏡變換之后,象素在直角坐標(biāo)系中的新坐標(biāo)。這個(gè)轉(zhuǎn)換的目的,特別是R和6.2832(2pi)的選擇,我認(rèn)為是將轉(zhuǎn)換后的圖像限定到原畫(huà)布大小之內(nèi)的作用。同時(shí)這個(gè)步驟最終導(dǎo)致了圖像的變形。
x = r * image_height / R;
y = a * image_width / 6.2832;
filterpixel.x = x;
filterpixel.y = y;
}
這僅僅是一段偽代碼而已,真正的執(zhí)行過(guò)程要復(fù)雜一些,如果繼續(xù)深入下去就嚴(yán)重跑題了,所以深入的討論還是請(qǐng)參見(jiàn)那個(gè)鏈接,自己去看吧。
最后引用那個(gè)網(wǎng)站的一句話作為結(jié)束語(yǔ)。
“If used creatively, the effect is worth more than just its novelty.”
希望各位在看過(guò)本文之后能有所啟發(fā)??趧?dòng)不如心動(dòng),心動(dòng)不如行動(dòng),期待各位的作品
【摘要】對(duì)于一些抽象的效果圖,Photoshop中的極坐標(biāo)濾鏡還有很多東西值得研究……
在國(guó)外的網(wǎng)站上看到有人把Photoshop的濾鏡分為兩類(lèi),一類(lèi)是對(duì)原圖沒(méi)有破壞性的濾鏡,另一類(lèi)是對(duì)原圖有破壞性的濾鏡。破壞性濾鏡多以扭曲濾鏡為主,其中極坐標(biāo)的破壞性可以算是相當(dāng)大的一種。
因?yàn)闃O坐標(biāo)的破壞性,很多人認(rèn)為這個(gè)濾鏡對(duì)于圖像、照片的處理沒(méi)有什么太大的實(shí)際應(yīng)用,但是如果對(duì)于一些抽象的圖像,我覺(jué)得這個(gè)濾鏡還是有些地方值得研究一下的,希望各位看過(guò)本文也會(huì)有所啟發(fā)。
一、極坐標(biāo)變形的感性認(rèn)識(shí)
先看一下極坐標(biāo)對(duì)圖像做的是一種什么樣的扭曲。如圖
photoshop
這一組圖分別是正方型、圓形和色塊通過(guò)極坐標(biāo)變換前后的圖像。
直角坐標(biāo)到極坐標(biāo)的變化:可以認(rèn)為是頂邊下凹,底邊和兩側(cè)邊上翻的過(guò)程。
極坐標(biāo)到直角坐標(biāo)的變化:可以認(rèn)為是底邊上凹,頂邊和兩側(cè)邊下翻的過(guò)程。
這里所說(shuō)的“過(guò)程”只是用來(lái)加深記憶而已,實(shí)際上這個(gè)上翻下翻的過(guò)程是不存在的,而是直接通過(guò)坐標(biāo)映射而成的。
1、直角坐標(biāo)—>極坐標(biāo)
原圖中的豎線經(jīng)極坐標(biāo)變換后,變?yōu)榉派渚€。
原圖中的橫線經(jīng)極坐標(biāo)變換后,變?yōu)橥膱A。
當(dāng)然橫豎交錯(cuò)畫(huà)出來(lái)就是蜘蛛網(wǎng)啦。
請(qǐng)觀察每種顏色色塊在變換之后的位置,原圖的頂部收縮為圓心部分,底部的紅色成為畫(huà)布內(nèi)切圓。左右兩個(gè)藍(lán)色的色塊向上翻轉(zhuǎn)之后最終合并為一個(gè)扇型,原來(lái)的兩個(gè)側(cè)邊會(huì)在上方重合。
記住每種色塊變化前后的位置不僅有住于加深對(duì)極坐標(biāo)濾鏡的理解而且在實(shí)際應(yīng)用中也有幫助,至少現(xiàn)在你已經(jīng)學(xué)會(huì)畫(huà)放射線、同心圓、扇型了。
2、極坐標(biāo)—>直角坐標(biāo)
原圖中的豎線和橫線(坐標(biāo)軸除外)經(jīng)變換后,變?yōu)閳D中的拋物線/雙曲線(具體是那種線形我尚未搞清楚,但我更傾向于是雙曲線)。
坐標(biāo)軸經(jīng)變換后,變?yōu)榭v向的5條分隔線,其中1,3,5是原縱軸,2,4是原橫軸。
對(duì)于色塊的變化,請(qǐng)大家注意一下位置和幅度就是了,這個(gè)我研究得不多。
Btw:在前言里我曾說(shuō)過(guò)極坐標(biāo)對(duì)圖像有破壞性,其實(shí)極坐標(biāo)濾鏡也具有一定的還原性,畢竟這是坐標(biāo)系間的映射。對(duì)于執(zhí)行了正變換的圖形再執(zhí)行反變換還是可以恢復(fù)出原圖的一些信息的。但是因?yàn)闃O坐標(biāo)不是一一對(duì)應(yīng)的關(guān)系,所以在圖的邊緣部分的信息就不能恢復(fù)了。比較另類(lèi)的應(yīng)用還可以利用極坐標(biāo)的還原性為圖片加密。
二、極坐標(biāo)濾鏡應(yīng)用
我使用極坐標(biāo)濾鏡主要還是用于畫(huà)圓,或者說(shuō)畫(huà)以圓為基礎(chǔ)的圖像。我們經(jīng)??吹接檬噶寇浖?huà)的一些重復(fù)的有規(guī)律的圖形,其實(shí)某些圖利用極坐標(biāo)濾鏡就可以完成,有時(shí)比用矢量軟件做得更好,變化更多。
2.1 放射線的制作,參見(jiàn)第一部分。
2.2 同心圓的制作,參見(jiàn)第一部分。
2.3 扇型,環(huán)型,彩虹,參見(jiàn)第一部分。
2.4 螺線
螺旋線在矢量軟件中畫(huà)是相當(dāng)簡(jiǎn)單的事,有些軟件本身就有螺線工具。但是對(duì)于ps來(lái)說(shuō),并沒(méi)有特別合適的繪制螺線的工具或公式。在扭曲濾鏡里有一個(gè)旋轉(zhuǎn)扭曲(Twirl)濾鏡可以做類(lèi)似螺線的效果,但感覺(jué)可控性不強(qiáng)。
photoshop
我從畫(huà)同心圓得到啟發(fā),發(fā)現(xiàn)可以利用極坐標(biāo)濾鏡來(lái)畫(huà)螺線,無(wú)論是等距的還是開(kāi)放式的都可以畫(huà),步驟也比較簡(jiǎn)單,只有幾步而已。
先建立一個(gè)矩形空白文件(400*20),畫(huà)一條斜線(如果是粗斜線,那么注意斜線在畫(huà)布的另兩個(gè)頂角部分也要畫(huà)斜線處理一下以保證下一步填充時(shí)能夠正常銜接),定義圖案。如圖
photoshop
建立新文件(400*400)用剛才定義的圖案填充。如圖
photoshop
應(yīng)用極坐標(biāo)濾鏡,直角坐標(biāo)——極坐標(biāo)
photoshop
應(yīng)用光照濾鏡。
photoshop
再應(yīng)用球面化濾鏡和其他的修改,完成。
photoshop
上面這個(gè)圖是畫(huà)等距螺線用的,如果畫(huà)不等距螺線,需要改變每條斜線的間距和斜率。
photoshop
photoshop
說(shuō)明:圖片的右下會(huì)出現(xiàn)一道黑色的痕跡,這條黑線是原圖的底邊上的黑點(diǎn)映射過(guò)來(lái)的。原圖的底邊在極坐標(biāo)后會(huì)映射為與新圖外邊框內(nèi)切的圓(正方形畫(huà)布,如果是長(zhǎng)方形畫(huà)布就是橢圓)以及圓外的所有空白的地方。如果要避免這條黑線,只要注意原圖的底邊線為背景色就可以了。其實(shí)這道線也有其特殊的用法,具體見(jiàn)后面的例子。
畫(huà)好的螺線還可以用ImageReady做成Gif動(dòng)畫(huà)。
2.5 縱向斜線和網(wǎng)格的極坐標(biāo)變化
道理都是一樣的,看明白一個(gè),其他的就都會(huì)了。但要注意,如果是填充豎線,新的畫(huà)布尺寸最好是原定義圖案尺寸的整數(shù)倍。不然,原圖的左右兩邊在極坐標(biāo)濾鏡之后不能很好的融和。
下面的這兩個(gè)圖就利用了剛才介紹的黑線做成了內(nèi)切圓外的放射線。
photoshop
photoshop
復(fù)雜圖形演變
photoshop
2.6 網(wǎng)格的極坐標(biāo)變化
利用簡(jiǎn)單的網(wǎng)格配合其他一些濾鏡的使用可以做出各種出人意料的效果。如圖組6~組9。下面以組8為例簡(jiǎn)單介紹一下制作方法。
先畫(huà)網(wǎng)格,不知道大家用什么方法畫(huà)網(wǎng)格?填充還是別的什么方法,以后可以交流一下。我畫(huà)網(wǎng)格用的是拼貼(Tiles)。
photoshop
使用極坐標(biāo)濾鏡(極坐標(biāo)—>直角坐標(biāo)),垂直翻轉(zhuǎn)。
photoshop
再次s使用極坐標(biāo)濾鏡(極坐標(biāo)—>直角坐標(biāo)),垂直翻轉(zhuǎn)。
photoshop
再使用極坐標(biāo)濾鏡(直角坐標(biāo)—>極坐標(biāo))
photoshop
使用光照濾鏡,曲線
photoshop
photoshop
完成效果如下。
photoshop
組7和組9的制作方法與組8類(lèi)似,只是中間夾雜了一些其他的步驟。
photoshop
photoshop
其他應(yīng)用
photoshop
2.7 制作光盤(pán)
制作光盤(pán)的方法很多,這個(gè)當(dāng)然是用極坐標(biāo)畫(huà)的,但感覺(jué)做得并不好。
photoshop
2.8 放射文字
組11,關(guān)于這個(gè)網(wǎng)上有很多教程,不再贅述。
既然如此,那么極坐標(biāo)到直角坐標(biāo)轉(zhuǎn)換有什么用處呢?大部分情況下,需要進(jìn)行極坐標(biāo)變換的僅僅是圖像中的一部分,如果直接“做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”,那么原有圖像也會(huì)被扭曲。因此可按照“極坐標(biāo)轉(zhuǎn)直角坐標(biāo)->做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”的方式,就能保持原有圖像不變。
由此我們可以總結(jié)出極坐標(biāo)濾鏡以下幾個(gè)特點(diǎn):
直角坐標(biāo)到極坐標(biāo)轉(zhuǎn)換用于做效果,而極坐標(biāo)到直角坐標(biāo)的轉(zhuǎn)換用于抵消前者的副作用;水平線轉(zhuǎn)換成圓,垂直線轉(zhuǎn)換成放射線,斜線轉(zhuǎn)換成螺旋線;原圖像上側(cè)對(duì)應(yīng)圓心,下側(cè)對(duì)應(yīng)圓心外;與風(fēng)結(jié)合
風(fēng)濾鏡恰好是制作直線特別是漸隱的放射效果直線的好工具。根據(jù)上面 “極坐標(biāo)轉(zhuǎn)直角坐標(biāo)->做直線->直角坐標(biāo)轉(zhuǎn)極坐標(biāo)”的理論,使用風(fēng)來(lái)制作直線,就能獲得所需的放射效果
photoshop
2.9 形狀的極坐標(biāo)變化
我最喜歡這個(gè),是無(wú)意中試出來(lái)的。組12。
photoshop
具體應(yīng)用就講到這里,最后講講一點(diǎn)點(diǎn)理論,說(shuō)一下極坐標(biāo)轉(zhuǎn)換濾鏡的工作過(guò)程。
三、 極坐標(biāo)濾鏡的工作過(guò)程(直角坐標(biāo)到極坐標(biāo))
一般而言,位圖圖像中的任意一點(diǎn)(象素)可以用直角坐標(biāo)(x,y)來(lái)表示。同樣這個(gè)象素也可以由極坐標(biāo)(r,a)來(lái)表示。極坐標(biāo)濾鏡的工作過(guò)程就是將基于直角坐標(biāo)系的象素(x,y)經(jīng)過(guò)極坐標(biāo)映射(r,a)之后再由直角坐標(biāo)(x’,y’)表示出來(lái)的過(guò)程。
直角坐標(biāo)和極坐標(biāo)的互化公式如下:
r = sqrt ( x * x y * y )
a = arctg ( y / x )
x = r * cos ( a )
y = r * sin ( a )
下面是一段是模擬極坐標(biāo)濾鏡工作的偽代碼。這個(gè)代碼并不是我編寫(xiě)的,我也只是看懂而已,更詳細(xì)的解釋可以參考下面的鏈接:
https://img.lvups.com/d/file/bigpic/2022/12/26/3zsde4faouh
(這是個(gè)國(guó)外的網(wǎng)站,站主利用C 模擬出了一些PS的濾鏡的效果,而且提供源代碼和源程序。)
for every pixel in the original image do
{
// x和y是當(dāng)前象素在直角坐標(biāo)內(nèi)的坐標(biāo)。
// 圖像中心點(diǎn)的坐標(biāo)為 x = 0, y = 0。
// r 和 a 是象素的極坐標(biāo)。其中角度a為弧度單位。
r = sqrt ( x * x y * y );
a = atan2 ( y / x );
// R取圖像長(zhǎng)和寬的最小值的一半。
R= min[ image_width , image_height ] / 2
// 新的x和y是經(jīng)過(guò)極坐標(biāo)濾鏡變換之后,象素在直角坐標(biāo)系中的新坐標(biāo)。這個(gè)轉(zhuǎn)換的目的,特別是R和6.2832(2pi)的選擇,我認(rèn)為是將轉(zhuǎn)換后的圖像限定到原畫(huà)布大小之內(nèi)的作用。同時(shí)這個(gè)步驟最終導(dǎo)致了圖像的變形。
x = r * image_height / R;
y = a * image_width / 6.2832;
filterpixel.x = x;
filterpixel.y = y;
}
這僅僅是一段偽代碼而已,真正的執(zhí)行過(guò)程要復(fù)雜一些,如果繼續(xù)深入下去就嚴(yán)重跑題了,所以深入的討論還是請(qǐng)參見(jiàn)那個(gè)鏈接,自己去看吧。
最后引用那個(gè)網(wǎng)站的一句話作為結(jié)束語(yǔ)。
“If used creatively, the effect is worth more than just its novelty.”
希望各位在看過(guò)本文之后能有所啟發(fā)??趧?dòng)不如心動(dòng),心動(dòng)不如行動(dòng),期待各位的作品