青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

卷積與平滑濾波器的圖像處理應(yīng)用

卷積的介紹

卷積(convolution)是泛函分析里的一個概念,不過泛函分析一般都是數(shù)學(xué)系才學(xué)的,計算機系的學(xué)生大多在概率統(tǒng)計課本里了解到。它分為兩種形式,一個是離散形式,一個是連續(xù)(積分)形式。在圖像處理中我們更關(guān)心離散卷積,不過也先看看積分形式的卷積。現(xiàn)在假設(shè)我們有兩個函數(shù)f(x)g(x),這里g(x)又叫做平滑函數(shù)或者卷積核,那么它們在連續(xù)空間的卷積是:

(f*g)(x)=\int_{-\infty}^{\infty}f(t)g(x-t)dt

一般我們有一個這樣的結(jié)論,就是當(dāng)f(x)經(jīng)過足夠多次相同平滑函數(shù)g(x)卷積,就會足夠接近高斯函數(shù),也就是正態(tài)分布的函數(shù)形式。卷積就是一種平滑操作,這說明高斯函數(shù)就是“最平滑的函數(shù)”。引入熱力學(xué)中熵的概念,高斯函數(shù)就是擁有最高熵的函數(shù),最穩(wěn)定的狀態(tài),以至于自然界大多數(shù)的統(tǒng)計規(guī)律都呈現(xiàn)出正態(tài)分布:

((\cdots((f*g)*g)\cdots)*g)(x) \rightarrow \frac 1{\sigma\sqrt{2\pi}} e^{-x^2/{\sigma^2}}

下面介紹離散形式的卷積。這卷積,首先是由有限項的多項式體現(xiàn)。神奇的是,而它們的乘積就是卷積。首先我們設(shè)有兩個多項式p = a_0 + a_1 x + a_2 x^2以及q = b_0 + b_1 x + b_2 x^2 + b_3 x^3。計算它們的乘積:

\begin{align*} r = p\cdot q &= (a_0 b_0) \\ &+ (a_0 b_1 + a_1 b_0) x \\ &+ (a_0 b_2 + a_1 b_1+ a_2 b_0) x^2 \\ &+ (a_0 b_3 + a_1 b_2 + a_2 b_1) x^3 \\ &+ (a_1 b_3 + a_2 b_2) x^4 \\ &+ (a_2 b_3) x^5 \end{align*}

再引入離散形式卷積(向量卷積)的定義,大家比較一下這個定義和上面多項式的計算。稍微說明一下,中括號的意義是p[n]代表向量第n個元素。將兩個多項式的系數(shù)寫成向量形式然后進行向量卷積,也就是例如p = [a_0, a_1, a_2],而沒定義的地方當(dāng)作0??梢园l(fā)現(xiàn),兩者是完全一致的:

\begin{align*} (p * q)[n] &= \sum_{m=-\infty}^\infty p[m]\cdot q[n-m] \\ r[1] &= \sum_{m=0}^1  p[m]\cdot q[1-m] &&= a_0 b_1 + a_1 b_0 \\ r[2] &= \sum_{m=0}^2  p[m]\cdot q[2-m] &&= a_0 b_2 + a_1 b_1 + a_2 b_0 \\ &\cdots \end{align*}

知道了多項式的乘積就是其相應(yīng)的卷積,我們甚至可以直接得出兩個冪級數(shù)卷積的結(jié)果。因為泰勒級數(shù)就是冪級數(shù)的一種,所以我們可以將幾乎所有的連續(xù)函數(shù)轉(zhuǎn)換成離散形式,避免了繁復(fù)的積分運算:比如我們希望得到 r(x) = p(x) * q(x),其中p(x) = \sum a_i x^i,\  q(x) = \sum b_i x^i,只需要簡單地計算這兩個級數(shù)的柯西乘積,所得結(jié)果就是r(x)的卷積。當(dāng)然了,這是后話,與本文的主題無關(guān)。

卷積與圖像處理

在開始講圖像處理之前,我希望先理解一下卷積的整個過程是怎樣的。從上面的公式看得還是有點懵懵懂懂,從直覺上去理解一下很有必要。觀察卷積的公式以及下面的圖片,這個過程可以看作,當(dāng)你想求一個r[n]的時候:

你先把卷積核q疊在p上面,盡量使左端靠近(如果左對齊就再好不過了),然后看看在[0, n]內(nèi)p, q重疊的部分是從哪里到哪里,分別寫成向量,那么r[n]就等于其中一個向量與另一個向量的逆序的內(nèi)積。

比如當(dāng)n = 2時,兩個向量是[a_0, a_1, a_2][b_2, b_1, b_0];n = 4時,兩個向量是[a_1, a_2, a_3, a_4][b_3, b_2, b_1, b_0]。至于求內(nèi)積,一定難不倒你。下圖說明了這一點:

\begin{align*} && a_0    && a_1    && a_2    && a_3    && a_4 \\ && a_0b_0 && a_0b_1 && a_0b_2 && a_0b_3 \\ &&        && a_1b_0 && a_1b_1 && a_1b_2 && a_1b_3 \\ &&        &&        && a_2b_0 && a_2b_1 && a_2b_2 && a_2b_3 \\ &&        &&        &&        && a_3b_0 && a_3b_1 && a_3b_2 && a_3b_3 \\ &&        &&        &&        &&        && a_4b_0 && a_4b_1 && a_4b_2 && a_4b_3 \\ \hline && c_0    && c_1    && c_2    && c_3    && c_4    && c_5    && c_6    && c_7 \end{align*}

上面是對某一點上卷積的理解。對整個域的卷積,則可以看成是將卷積核(除了開頭幾個外)不停向右移動,每移動一格就將重疊部分拿出來求內(nèi)積。

這時我們可以把圖像處理和卷積聯(lián)系起來了。圖像處理是,將一副“源圖像”(Source),通過一些算法,變成一副“目標(biāo)圖像”(Destination)。當(dāng)我們進行平滑處理的時候,用到一個叫做濾波器(filter)的 東西,也叫做濾鏡。想想我們現(xiàn)實生活中放大鏡是怎么用的:拿著放大鏡,從報紙的左上角開始,一直掃啊掃到右下角,掃的過程中一直望著放大鏡和報紙的重疊區(qū) 域(其實就是望著放大鏡,因為它比報紙小多了),這樣你就瀏覽完了一張放大過的報紙。平滑濾鏡也是同樣的使用方法,從源圖的左上角開始掃到右下角,掃的過 程中一直取出重疊部分進行內(nèi)積計算,然后將結(jié)果存放到目標(biāo)圖像中 —— 顯然這個操作跟卷積是一致的,只不過定義在二維空間內(nèi)。

為了方便量化表示,我們把圖像抽象成定義在R \cap [0, 1] 數(shù)環(huán)內(nèi)的二維矩陣,其意義是灰度值,顏色信息我們暫且忽略。卷積核,也就是濾波器同樣也是定義在R \cap [0, 1] 內(nèi)的二維矩陣。這樣,二維的卷積我們這樣定義它的離散形式:

\text{Dest}[i, j] = \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}[i - y, j - x]

我們的卷積核大小并不是無限的,它一個半徑r,這樣它的大小就是2r+1。規(guī)定了這個r使得,當(dāng)|x| > r 或 |y| > r,都有Ker[y, x] = 0。規(guī)定過大小之后,由 |i-y| < r; |j-x| < r得到 i-r < y < i+r; j-r < x < j+r。同時我們規(guī)定Dest和Src的大小是m \times n。于是我們得到了濾波器的算法:

\text{Dest}[i, j] = \sum_{y=\max\{0,i-r\}}^{\min\{i+r,n\}} \left( \sum_{x=\max\{0,j-r\}}^{\min\{j+r,m\}} \text{Src}[y, x] \cdot \text{Ker}[i - y, j - x] \right)

高斯濾波器

二維的高斯函數(shù)(俗稱避孕套函數(shù))
二維的高斯函數(shù)(俗稱避孕套函數(shù))

高斯濾波器是最常用的平滑濾波器之一,在Photoshop里面它被用作高斯模糊濾鏡。高斯濾波器的定義很經(jīng)典,就是簡單地把正態(tài)分布離散開來。二維形式只是單純把x替代成(x2 + y2),然后修改系數(shù)令實數(shù)域上的積分為1:

\begin{align*} \text{Ker}_1[x] &= \frac 1{\sigma\sqrt{2\pi}} e^{-x^2/{\sigma^2}} \\ \text{Ker}_2[i, j] &= \frac 1{2\sigma^2\pi} e^{-(i^2+j^2)/{\sigma^2}} \end{align*}

也許你已經(jīng)發(fā)現(xiàn)了一個這樣的規(guī)律,這一規(guī)律,這在更高維上仍然是滿足的,也就是在連續(xù)空間里同樣滿足。這將成為我們優(yōu)化算法的關(guān)鍵。將這個規(guī)律代回到二維離散卷積的公式里,因為y在第二個連加中相當(dāng)于常數(shù)系數(shù)可以提出來,我們發(fā)現(xiàn):

\begin{align*} \text{Ker}_2[i, j] &= \text{Ker}_1[i] \cdot \text{Ker}_1[j] \\ \text{Dest}[i, j] &= \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_2[i - y, j - x] \\ &= \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_1[i-y] \cdot \text{Ker}_1[j-x]\\ &= \sum_{y=-\infty}^\infty \left( \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_1[j-x]\right) \text{Ker}_1[i-y] \end{align*}

如果x連加所表示是卷積是從右上角開始按照文字書寫順序從左到右,然后從上到下的順序進行一維卷積,那么y連加表示的卷積就是先從上到下,再從左到有的順序卷積。在OpenCV提供的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,不用imgproc提供的算法,我寫了一個示例:


 1 // cflags: -lopencv_highgui -lopencv_core
 2 
 3 #include <iostream>
 4 #include <cmath>
 5 #include <opencv2/highgui/highgui.hpp>
 6 
 7 using namespace cv;
 8 using namespace std;
 9 
10 const char* title = "gaussian-filter";
11 
12 Mat kernelMatrix(int radius, double sigma)
13 {
14         int d = radius * 2 + 1;
15         Mat kernel(2, d, CV_64F);
16 
17         double coef = 0;
18         for(int i = 0; i <= radius; i++) {
19                 // f(x) = 1/(sigma * sqrt(2 pi)) * e ^ -x^2/(2 s^2)
20                 int dx = i - radius;
21                 double dx_2 = dx * dx;
22                 double w = pow(M_E, - dx_2 / (2 * sigma * sigma));
23 
24                 coef += w;
25                 kernel.at<double>(0, i) = w;
26                 kernel.at<double>(0, d - i - 1= w;
27                 // when you used values from i to j (j>i), the sum of them is:
28                 // kernel[1, j] - (i ? kernel[1, i-1] : 0)
29                 kernel.at<double>(1, i) = coef;
30         }
31 
32         for(int i = radius + 1; i < d; i++) {
33                 coef += kernel.at<double>(0, i);
34                 kernel.at<double>(1, i) = coef;
35         }
36 
37         return kernel;
38 }
39 
40 
41 void convolution(const Mat& img, const Mat& kernel, Mat& output, bool t = true)
42 {
43         for(int y = 0, x = 0; y < img.rows; x = (++x<img.cols)? x : (y++0)) {
44                 Vec3d r(000);
45 
46                 int ideal = x - int(kernel.cols / 2),
47                     ran_beg = max(ideal, 0- ideal,
48                     ran_end = min(ideal + kernel.cols, img.cols) - ideal;
49 
50                 for(int i = ran_beg; i < ran_end; i++) {
51                         double weight = kernel.at<double>(0, i);
52                         Vec3b pixel = img.at<Vec3b>(y, ideal + i);
53 
54                         r[0+= pixel[0* weight;
55                         r[1+= pixel[1* weight;
56                         r[2+= pixel[2* weight;
57                 }
58 
59                 double coef = kernel.at<double>(1, ran_end - 1);
60                 if(ran_beg) coef -= kernel.at<double>(1, ran_beg - 1);
61 
62                 output.at<Vec3b>(t?x:y, t?y:x) = Vec3b(
63                         saturate_cast<uchar>(r[0]/coef),
64                         saturate_cast<uchar>(r[1]/coef),
65                         saturate_cast<uchar>(r[2]/coef));
66         }
67 }
68 
69 
70 int main()
71 {
72         namedWindow(title, WINDOW_AUTOSIZE);
73 
74         const int r = 10;
75 
76         Mat img = imread("ai-sample.jpg"),
77             kernel = kernelMatrix(r, (r - 1* 0.3 + 0.8);
78 
79         Mat product_v = Mat(img.cols, img.rows, img.type());
80         Mat product_h = Mat(img.rows, img.cols, img.type());
81 
82         convolution(img, kernel, product_v);
83         convolution(product_v, kernel, product_h);
84 
85         imshow(title, product_h);
86         for(; waitKey(0> 0;);
87 
88         destroyWindow(title);
89 }


渲染效果圖
渲染效果圖

posted on 2015-08-12 00:35 Shihira 閱讀(3263) 評論(0)  編輯 收藏 引用 所屬分類: 圖形編程

導(dǎo)航

統(tǒng)計

公告

留言簿(2)

隨筆分類

搜索

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲尤物视频网| 欧美日本国产| 亚洲欧洲日本一区二区三区| 久久精品人人做人人爽| 国产精品久久久久久久午夜片| 欧美精品一区二区在线观看| 欧美日产一区二区三区在线观看| 欧美乱在线观看| 国产精品久在线观看| 欧美婷婷久久| 国产日本欧美一区二区三区在线| 黄色国产精品一区二区三区| 亚洲国产小视频在线观看| 日韩视频一区二区在线观看| 亚洲欧美国产不卡| 久久一区中文字幕| 99日韩精品| 欧美在线免费| 欧美经典一区二区| 国产女精品视频网站免费| 在线观看91精品国产入口| 99国产成+人+综合+亚洲欧美| 亚洲欧美另类在线观看| 欧美不卡视频一区| 亚洲无限av看| 美国三级日本三级久久99| 国产精品福利片| 亚洲国内欧美| 欧美专区中文字幕| 亚洲免费大片| 媚黑女一区二区| 国产日韩专区| 亚洲专区一区| 亚洲高清久久久| 久久久99精品免费观看不卡| 欧美性大战久久久久久久| 亚洲福利视频一区| 久久精品国产99精品国产亚洲性色 | 亚洲影院色无极综合| 亚洲国产精品第一区二区| 亚洲网站视频福利| 欧美精品在线网站| 伊人成综合网伊人222| 亚洲欧洲av一区二区| 欧美护士18xxxxhd| 久久国产精品久久w女人spa| 国产精品高潮呻吟久久av无限 | 亚洲国产一区二区在线| 久久精品国产免费看久久精品| 欧美特黄视频| 一本色道久久| 亚洲精品在线免费观看视频| 狂野欧美一区| 亚洲国产精品电影| 欧美多人爱爱视频网站| 久久久久一区| 精品动漫3d一区二区三区免费版| 欧美主播一区二区三区美女 久久精品人| 亚洲精品日韩久久| 欧美激情久久久久| 夜久久久久久| 一本色道久久99精品综合| 欧美日韩精品免费观看| 国产精品99久久久久久有的能看| 亚洲高清视频在线观看| 美女精品自拍一二三四| 亚洲高清在线观看| 91久久国产综合久久| 欧美日韩精品二区| 亚洲影音一区| 久久av红桃一区二区小说| 狠狠色综合一区二区| 麻豆精品精品国产自在97香蕉| 久久久午夜视频| 亚洲韩国日本中文字幕| 亚洲国产精品一区二区第一页| 欧美成人免费全部观看天天性色| 日韩视频一区二区| 亚洲丝袜av一区| 国产一区二区三区四区三区四| 久久久久久穴| 欧美成人官网二区| 亚洲综合日韩| 久久久精品国产99久久精品芒果| 91久久久在线| 亚洲一区二区免费在线| 狠狠色狠狠色综合系列| 亚洲区在线播放| 国产免费观看久久黄| 欧美成人精品福利| 欧美午夜一区二区三区免费大片 | 久久精品国产亚洲aⅴ| 快she精品国产999| 午夜久久黄色| 国产精品日本欧美一区二区三区| 亚洲日本一区二区| 欧美婷婷在线| 久久精品亚洲一区二区三区浴池 | 亚洲激情在线| 国产精品丝袜久久久久久app| 久久久久九九九九| 欧美久久综合| 另类天堂av| 国产精品chinese| 欧美v日韩v国产v| 国产精品丝袜xxxxxxx| 欧美激情在线| 韩国一区电影| 亚洲系列中文字幕| 亚洲精品激情| 久久精品夜夜夜夜久久| 亚洲一区尤物| 欧美精品日韩一区| 免费在线欧美视频| 国产日韩欧美亚洲一区| 一个人看的www久久| 亚洲精品久久久久久久久久久| 性色av香蕉一区二区| 亚洲午夜伦理| 欧美日韩福利| 亚洲国产欧美一区二区三区久久 | 午夜精品久久久久久久男人的天堂| 亚洲国产高清一区| 久久爱91午夜羞羞| 欧美亚洲三级| 国产精品理论片| 日韩一区二区电影网| 亚洲人成啪啪网站| 欧美不卡视频一区发布| 欧美成人国产一区二区| 国内久久视频| 久久黄色网页| 久久只有精品| 狠狠做深爱婷婷久久综合一区 | 99视频精品在线| 欧美成年人在线观看| 欧美成人资源网| 亚洲国产成人精品视频| 久久影音先锋| 欧美国产精品中文字幕| 亚洲第一黄网| 老司机精品久久| 欧美国产综合一区二区| 亚洲欧洲日韩综合二区| 欧美福利专区| 99国产精品视频免费观看一公开| 夜夜嗨网站十八久久| 欧美日韩成人一区二区| 一本一本a久久| 性感少妇一区| 国产亚洲欧美日韩在线一区| 欧美成人自拍视频| 亚洲欧美一区二区原创| 久久国产精品毛片| 激情欧美一区二区三区| 久久久91精品国产| 亚洲国产精品成人一区二区| 亚洲精选视频免费看| 国产精品www994| 欧美一级在线播放| 亚洲国产成人精品久久久国产成人一区| 亚洲国产高清一区| 欧美三级乱人伦电影| 午夜欧美精品| 亚洲二区视频| 亚欧成人在线| 91久久国产综合久久| 国产精品久久精品日日| 欧美一区二区啪啪| 亚洲人成小说网站色在线| 欧美一区国产一区| 亚洲精品午夜| 国产亚洲欧美一级| 欧美激情在线观看| 欧美一级欧美一级在线播放| 亚洲国产精品ⅴa在线观看| 午夜电影亚洲| 亚洲欧洲日韩女同| 狠狠色狠狠色综合系列| 欧美日韩在线播放| 久久久免费精品| 亚洲免费一区二区| 亚洲精品中文字幕有码专区| 久久狠狠亚洲综合| 一本色道久久综合狠狠躁篇怎么玩| 国产欧美日韩91| 欧美日韩国内自拍| 欧美 日韩 国产精品免费观看| 午夜精品一区二区三区在线播放| 亚洲国产欧洲综合997久久| 久久精品动漫| 亚洲一二三四久久| 亚洲美女色禁图| 亚洲二区在线视频| 好吊色欧美一区二区三区四区| 国产精品久久久久999| 欧美理论电影网| 欧美成人免费全部| 久久综合九色综合欧美就去吻| 性欧美xxxx视频在线观看|