<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      圖像的卷積(濾波)運算(二)——高斯濾波

      1. 高斯濾波原理

      根據數學知識,一維高斯函數可以描述為:

      在圖像處理中,選定X方向上長度為3的窗口,令δ=1,中心坐標為1,由上述公式,其卷積核(Xa,X,Xb)可以如下計算:

      Xa = exp(-1*(0-1)(0-1)/(2*1*1))= 0.606530659712633
      X = exp(-1*(1-1)(1-1)/(2*1*1))= 1
      Xb = exp(-1*(2-1)(2-1)/(2*1*1))= 0.606530659712633
      

      可以看到計算過程沒有用到常數部分,是因為需要歸一化,常數部分可以省略:

      Sum = Xa + X + Xb = 2.2130613194252668
      Xa = Xa/Sum = 0.274068619061197
      X = X/Sum = 0.451862761877606
      Xb = Xb/Sum = 0.274068619061197
      

      通過OpenCV驗證下上述結果是否正確,OpenCV可以通過函數getGaussianKernel()來實現計算高斯核,運行如下代碼,可以發現兩者的計算結果是一致的。

      Mat kernelX = getGaussianKernel(3, 1);
      cout << kernelX <<  endl;
      

      2. 圖像二維卷積

      上述的推導過程都是一維的,那么二維情況下的卷積核怎么計算呢,其實很簡單,轉置并相乘就可以了:

      Mat kernelX = getGaussianKernel(3, 1);
      cout << kernelX <<  endl;
      
      Mat kernelY = getGaussianKernel(3, 1);
      Mat G = kernelX * kernelY.t();
      cout << G << endl << endl << endl;
      

      運行結果:

      在得到卷積核之后,將其放到圖像中進行二維卷積,對于原圖像中的一個像素P(x,y),有如下卷積過程:

      將窗口覆蓋的對應位置的像素值相乘后相加,即可得到新圖像對應位置的像素值Q(x,y)。當對圖像所有的像素值都這樣做時,就可以得到濾波后的圖像。由于一般情況下總是順序去卷積的,從左至右,由上而下,所以這個過程就是卷積核的滑動。

      當滑動到邊界的時候,就會產生一個問題,就是卷積核對應的位置沒有像素值。這時可以將邊界像素值舍棄(卷積),或者自動填充為0(濾波)。

      3. 具體實現

      在OpenCV中,可以直接使用GaussianBlur()函數實現高斯濾波,但是為了驗證和學習高斯濾波算法,也可以自己構建高斯卷積核,使用濾波函數filter2D()進行濾波。其具體實現如下:

      #include <iostream>
      #include <opencv2\opencv.hpp>
      
      using namespace cv;
      using namespace std;
      
      int main()
      {	
      	//從文件中讀取成灰度圖像
      	const char* imagename = "C:\\Data\\imgDemo\\lena.jpg";
      	Mat img = imread(imagename, IMREAD_GRAYSCALE);
      	if (img.empty())
      	{
      		fprintf(stderr, "Can not load image %s\n", imagename);
      		return -1;
      	}
      
      	//直接高斯濾波
      	Mat dst1;
      	GaussianBlur(img, dst1, Size(3, 3), 1, 1);
      	
      	//自定義高斯濾波器
      	Mat kernelX = getGaussianKernel(3, 1);
      	Mat kernelY = getGaussianKernel(3, 1);
      	Mat G = kernelX * kernelY.t();
      	Mat dst2;
      	filter2D(img, dst2, -1, G);
      	
      	//比較兩者的結果
      	Mat c;
      	compare(dst1, dst2, c, CMP_EQ);
      
      	//
      	imshow("原始", img);
      	imshow("高斯濾波1", dst1);
      	imshow("高斯濾波2", dst2);
      	imshow("比較結果", c);
      	
      	waitKey();
      
          return 0;
      }
      

      可以看到這里分別用GaussianBlur()和filter2D()進行了高斯濾波,并通過compare()函數進行比較。運行結果如下所示,兩者的濾波結果基本一致,說明構建的卷積核是正確的。

      4. 參考資料

      1.OpenCV實現二維高斯核GaussianKernel
      2.opencv3.2.0圖像處理之高斯濾波GaussianBlur API函數
      3.OpenCV高斯濾波器詳解及代碼實現

      posted @ 2019-03-25 11:06  charlee44  閱讀(13856)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲码国产精品高潮在线| 女人色熟女乱| 少妇xxxxx性开放| 精品三级在线| 久久精品国产再热青青青| 日本高清一区二区三| 丁香五月网久久综合| 亚洲人成网网址在线看| 国产性色av免费观看| 成人污视频| 亚洲精品第一区二区在线| 任我爽精品视频在线播放| 亚洲中文一区二区av| 国产精品黄色一区二区三区| 无码专区视频精品老司机| 四虎永久在线精品无码视频| 91一区二区三区蜜桃臀| 亚洲久悠悠色悠在线播放| 亚洲色大成网站WWW永久麻豆| 亚洲日本va午夜中文字幕久久 | 一区二区亚洲精品国产精华液| 暖暖影院日本高清...免费| 日韩欧国产美一区二区在线| 亚洲精品无码你懂的网站| 日韩精品亚洲专在线电影| 亚洲熟女乱色综一区二区| 人妻少妇不满足中文字幕| 久久精品蜜芽亚洲国产av| 亚洲最大av一区二区| 亚洲精品成人A在线观看| 国产精品成人av电影不卡 | 欧美成人精品| 亚洲欧美综合精品二区| 黎城县| 午夜爽爽爽男女免费观看影院 | 粉嫩一区二区三区粉嫩视频| 国产精品户外野外| 亚洲人成人伊人成综合网无码| 久青草视频在线视频在线| 九九热爱视频精品| 国产区精品福利在线熟女|