1. 程式人生 > >OpenCV之cvSmooth函式平滑濾波

OpenCV之cvSmooth函式平滑濾波

1、cvSmooth函式用法

 定義原型

   void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,
               int param1, int param2, double param3, double param4 );
src:輸入影象.
dst:輸出影象.
smoothtype平滑方法:
CV_BLUR_NO_SCALE(簡單不帶尺度變換的模糊) - -對每個象素的 param1×param2 領域求和。如果鄰域大小是變化的,可以事先利用函式 cvIntegral 計算積分影象。
CV_BLUR (simple blur)- -對每個象素param1×param2鄰域求和並做尺度變換 1/(param1×param2)。
CV_GAUSSIAN(gaussian blur) - -對影象進行核大小為 param1×param2 的高斯卷積。
CV_MEDIAN(median blur) - -對影象進行核大小為param1×param1 的中值濾波 (鄰域是方的)。
CV_BILATERAL(雙向濾波) - -應用雙向 3x3 濾波,彩色 sigma=param1,空間 sigma=param2.。

    關於雙向濾波,可參考http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
param1
平滑操作的第一個引數.
param2
平滑操作的第二個引數. 對於簡單/非尺度變換的高斯模糊的情況,如果param2的值為零,則表示其被設定為param1。
param3
對應高斯引數的 Gaussian sigma (標準差). 如果為零,則標準差由下面的核尺寸計算:
sigma = (n/2 - 1)*0.3 + 0.8, 其中 n=param1 對應水平核,n=param2 對應垂直核.
對小的卷積核 (3×3 to 7×7) 使用如上公式所示的標準 sigma 速度會快。如果 param3 不為零,而 param1 和 param2 為零,則核大小由sigma 計算 (以保證足夠精確的操作).

   函式 cvSmooth 可使用上面任何一種方法平滑影象。每一種方法都有自己的特點以及侷限。
   沒有縮放的影象平滑僅支援單通道影象,並且支援8位到16位的轉換(與cvSobel和cvaplace相似)和32位浮點數到32位浮點數的變換格式。
  簡單模糊和高斯模糊支援 1- 或 3-通道, 8-位元 和 32-位元 浮點影象。這兩種方法可以(in-place)方式處理影象。
  中值和雙向濾波工作於 1- 或 3-通道, 8-點陣圖像,但是不能以 in-place 方式處理影象.

2、例項(OpenCV 1.0+VC6.0)

    原影象為495x460的單通道灰度影象,已經加有一定程度的椒鹽噪聲。

    關鍵程式碼為:

 //鄰域平均濾波
cvSmooth(pImg,pImg,CV_BLUR,3,3,0,0);           //3x3
cvSmooth(pImg,pImg,CV_BLUR,5,5,0,0);          //5x5

 //中值濾波 
  cvSmooth(pImg,pImg,CV_MEDIAN,3,3,0,0);    //3x3
  cvSmooth(pImg,pImg,CV_MEDIAN,5,5,0,0);    //5x5
 //高斯濾波
  cvSmooth(pImg,pImg,CV_GAUSSIAN,3,3,0,0);//3x3
  cvSmooth(pImg,pImg,CV_GAUSSIAN,5,5,0,0);//5x5

原圖

   

   

    



       從結果可以看出,對於椒鹽噪聲,3x3中值濾波已有很好的效果。



相關推薦

OpenCVcvSmooth函式平滑濾波

1、cvSmooth函式用法  定義原型    void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,                int param1, int param2,

opencvtype()函式返回值對應表

opencv之type()函式返回值對應表 cv::Mat 類的物件有一個成員函式 type() 用來返回矩陣元素的資料型別,返回值是 int 型別,不同的返回值代表不同的型別。 int Mat::type() const 返回值與具體型別對應關係表: | |C1| C2| C3| C4| --|--|

opencvGaussianBlur()函式

opencv之GaussianBlur()函式 2018年04月17日 16:42:50 duwangthefirst 閱讀數:1507 標籤: opencvGaussianFilter高斯濾波影象去噪影象平滑 更多 個人分類: O

OpenCVfindContours函式解讀

轉載自:http://blog.csdn.net/u012062327 參考:opencv documentation findContours()函式原型: void findContours(InputOutputArray image, OutputArrayOfA

openCVwaitKey函式簡介

函式原型為: . C++: int waitKey(int delay=0) Python: cv2.waitKey([delay]) → retval C: int cvWaitKey(int delay=0 ) Python: cv.WaitK

OpenCVmixChannels()函式使用說明

step 1:  函式功能說明       mixChannels主要就是把輸入的矩陣(或矩陣陣列)的某些通道拆分複製給對應的輸出矩陣(或矩陣陣列)的某些通道中,其中的對應關係就由fromTo引數制定. step 2:  函式原型講解       C++:  voi

python+opencv實現高斯平滑濾波

功能: 建立兩個滑動條來分別控制高斯核的size和σ的大小,這個程式是在閾值分割的那個程式上改動的。閾值分割程式在這 注意:由於σ=0時,opencv會根據視窗大小計算出σ,所以,從0滑動σ的滑動條

0027-用OpenCV的GaussianBlur函式做高斯濾波

高斯濾波器是一類根據高斯函式的形狀來選擇權值的線性平滑濾波器,聽說高斯濾波器對於服從正太分佈(高斯分佈)的噪聲非常有效,然而實際來看,貌似效果也不怎麼樣啊,具體的大家可以看本篇帖子程式碼的執行結果,是筆者哪裡沒操作對麼?GaussianBlur函式原型如下: C++: void GaussianBl

OpenCV濾波操作

影象濾波與濾波器 首先我們看一下影象濾波的概念。影象濾波,即在儘量保留影象細節特徵的條件下對目標影象的噪聲進行抑制,是影象預處理中不可缺少的操作,其處理效果的好壞將直接影響到後續影象處理和分析的有效性和可靠性。 消除影象中的噪聲成分叫作影象的平滑化或濾波操作。訊號或影象的能量大部分集中在幅度譜的

初識 OpenCV 均值濾波,中值濾波

影象的噪聲 就是隻影象在攝取的過程中或者是在傳輸的過程中受到隨機干擾訊號 我們常見的噪聲有椒鹽噪聲和高斯噪聲 椒鹽噪聲:出現的位置隨機,但是噪聲的幅值基本相同的 高斯噪聲:出現位置固定,但是噪聲的幅值基本是固定的 怎麼才能把不需要的噪聲濾掉呢,其中最基本的就是均值濾

OpenCV入門教程九】 非線性濾波專場 中值濾波 雙邊濾波

                正如我們上一篇文章中講到的,線性濾波可以實現很多種不同的影象變換。然而非線性濾波,如中值濾波器和雙邊濾波器,有時可以達到更好的實現效果。鄰域運算元的其他一些例子還有對二值影象進行操作的形態學運算元,用於計算距離變換和尋找連通量的半全域性運算元。 先上一張截圖:一、理論與概念講解

python進階—OpenCV常用影象操作函式說明

文章目錄 cv2.threshold cv2.bitwise_and cv2.bitwise_or cv2.bitwise_not cv2.inRange cv2.resize cv2.adaptiveThreshold cv2

OpenCV影象處理(十六) 卷積運算元與自定義線性濾波

卷積概念 卷積是影象處理中一個操作,是kernel在影象的每個畫素上的操作。 Kernel本質上一個固定大小的矩陣陣列,其中心點稱為錨點(anchor point) 卷積如何工作 把kernel放到畫素陣列之上,求錨點周圍覆蓋的畫素乘積之

opencv日常學習approxPolyDP函式和boundingRect函式說明

opencv中利用函式approxPolyDP來對指定的點集進行逼近,其逼近的精度是可設定的 對應的函式為: void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilo

OpenCVKalman fileter(卡爾曼濾波

原理的通俗解釋 用一個網上流傳溫度估計的例子(根據 k-1 時刻的溫度值,估算 k 時刻的是實際溫度值),為了通俗會意,我這裡儘量避免使用專業術語。 假設我們相信溫度是恆定的,所以得到 k 時刻的溫度預測值是跟 k-1 時刻一樣的,假設是23 度,同時該值的高斯噪聲的偏差是 5 度。然後,你

OpenCV學習convexHull函式的理解

1、convexhull函式的作用:     計算出影象的凸包,根據影象的輪廓點,通過函式convexhull轉化成凸包的點點座標,    從而畫出影象的凸包。2、convexHull函式的呼叫形式    void convexHull(InputArray points,O

opencv基礎-平滑濾波

opencv基礎-高斯平滑濾波 函式原型 cv::GaussianBlur( src, dst, cv::Size(param1, param2), param3, param4, cv::BORDER_REPLICATE ); void cv::GaussianBlu

OpenCVLUT函式

何為LUT,LUT(Look-Up Table)實際上就是一張畫素灰度值的對映表,它將實際取樣到的畫素灰度值經過一定的變換如閾值、反轉、二值化、對比度調整、線性變換等,變成了另外一個與之對應的灰度值,這樣可以起到突出影象的有用資訊,增強影象的光對比度的作用。

openCV 中的高斯濾波GaussianBlur函式

在上次的opencv原始碼解析之濾波前言1中,按照opencv_tutorials.pdf中的濾波部分試了下常用的4種濾波器的使用方法。在opencv的C++中,這4個函式分別為:blur,GaussianBlur,meidaBlur,bilateralFilter.下面

OpenCV繪圖多邊形函式cvFillPoly,cvPolyLine,cvFillConvexPoly

OpenCV繪圖函式之多邊形 今天學習了OpenCV中的繪製多邊形的相關函式-cvFillPoly,cvFillConvexPoly,cvPolyLine.現將其用法總結如下,權當做是對今天學習的總結吧~(@^_^@)~ 先來介紹一下這三個函式吧: cvFillPo