Convolution 旋積 (迴旋積分)
王藹侯
維基百科上Convolution的說明如下:
Convolution(捲積/摺積/疊積)是一種數學運算,將兩個函數「捲起來」以產生一個新的函數,通常用來提取特徵或修正資料。
在電腦視覺中,它使用一個稱為「捲積核」(kernel)的小型矩陣在圖像上滑動,透過「線性組合」計算局部區域的代表性值,從而提取特徵,例如邊緣、角落等。

構成亂點圖的每個位置的像點(pixel, picture element)是隨機產生的黑點或白點,白點是1、黑點是0,電腦程式可以設定產生10%的白點、30%的白點、60%的白點…等等。30%白點就意味著是70%的黑點。製作亂點立體圖最常使用的是50%白點、50%黑點的亂點圖。
這是一個旋積運算(Convolution)使用的運算核(Kernel),是一個3x3像點的旋積運算核(見圖)。將亂點圖的每一個點周邊8個點的0或1乘上相對應位置的1,總和最大9、最小是0。在另外一張圖的這個位置,如果總和是5~9,就畫上白點,如果總和是0~4,就畫上黑點。這種每個位置和它周邊的點作運算,糾是所謂的旋積(迴旋積分)。

總和0~4和總和5~9的機率是50%/50%,一張50%密度的亂點圖經過旋積,仍然是50%密度。
旋積的核也可以是5x5像點的核(見圖),運算的總和最大是25、最小是0。總和是13~25,就畫上白點,總和是0~12,就畫上黑點。


密度50%的亂點圖原圖


以5x5的旋積運算核(Low pass kernel)作5次旋積運算


以5x5的旋積運算核(Low pass kernel)作10次旋積運算

更大的7x7的旋積運算核
這種全部1的旋積運算核會移除圖形中高空間頻率的成分(細緻的部分),抽取圖形中低空間頻率的成分(輪廓的部分)。彷彿是一張炭筆畫用饅頭去抹上一抹,變得比較模糊。
這在繪製小角度亂點立體圖的時候非常有用。
如果在6x4吋相片上,要仿製如同TNO Stereotest的15秒角的立體圖,也就是1個像點的視角要小到15秒角,在40公分的測試距離,橫幅需要有多少個像點呢?計算如下:
6 x 2.54 / n / 40 x 180/pi x 60 x 60 =
15” à n
= 5239 pixels
5239 pixels / 6 inch ~= 900 dpi
(dots per inch)
要印製像差15秒角的亂點立體圖,印表機的解析度得要大於900dpi。
高密度的亂點圖看起來灰濛濛一片,沒有可資兩眼融像的花紋,這時就得以旋積運算移除高空間頻率。
如前面展示,以旋積運算移除高空間頻率,增加了可資融像的花紋,但是不會影響左右兩張立體圖之間的像差(Disparity)。
邊長是奇數個1的旋積運算核總像點數也是奇數,例如邊長7個1的旋積運算核,共49個像點,計算總和最小是0,最大是49,共50階層。總和為0~24畫0的機率和總和為25~49畫1的機率是相等的,於是密度50%的亂點圖經過幾次旋積運算後,都會一直保持密度為50%。
如果使用的旋積運算畫0和畫1的機率不相等,多次旋積運算後,亂點圖的密度是會改變的。
例如這是一個抽取圖形中高空間頻率、邊角等細緻成分的旋積運算核,計算總和最小是-8,最大是8,共17階層。

如果總和為-8~0畫0,總和為1~8畫1,則畫0的機率稍大,多次旋積運算後,0的占比會越來越多。
如果總和為-8~-1畫0,總和為0~8畫1,則畫1的機率稍大,多次旋積運算後,1的占比會越來越多。
如果要避免這種情況,旋積運算核稍微改成

讓計算總和最小是-8,最大是9,共18階層。總和為-8~0畫0,總和為1~9畫1,畫0的機率和畫1的機率相等,於是密度50%的亂點圖經過無數次旋積運算後,都會一直保持密度為50%。
影像處理可以不同的旋積運算核分離影像中的低空間頻率和高空間頻率:

Original Low
pass High pass

這是低通(通過影像中的低空間頻率)旋積運算核 (Low pass filter)

這是高通(通過影像中的高空間頻率)旋積運算核 (High pass filter)
視網膜節細胞(Ganglion
cells)的接受野(或譯接受域)(Receptive field)是同心圓的形狀(如圖):有On-center的節細胞,圓中央照光激活節細胞
/ 圓周邊照光抑制節細胞:有Off-center的節細胞,圓中央照光抑制節細胞 / 圓周邊照光激活節細胞。整片大範圍的照光,圓中央、圓周邊都照光,節細胞反而沒有反應。
這有點像高通的旋積運算核:

On-center Off-center