smooth函数
smooth函數
?Smooth?函數
各種方法的圖像平滑
void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype=CV_GAUSSIAN, int param1=3, int param2=0, double param3=0 ); src- 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?的中值 (i.e. 鄰域是方的).
- CV_BILATERAL (雙濾波) - 應用雙向 3x3 濾波,彩色 sigma=param1,空間 sigma=param2. 關于雙向濾波,可參考?http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
函數?cvSmooth?可使用上面任何一種方法平滑圖像。每一種方法都有自己的特點以及局限。
沒有縮放的圖像平滑僅支持單通道圖像,并且支持8位、16位、32位和32位浮點格式。
簡單模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特浮點圖像。這兩種方法可以(in-place)方式處理圖像。
中值和雙向濾波工作于 1- 或 3-通道, 8-位圖像,但是不能以 in-place 方式處理圖像
opencv代碼:
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include<cv.h> #include<stdlib.h> using namespace cv; using namespace std;int main() {Mat src, dst;src = imread("D:6.jpg");/*Mat kx = (Mat_<float>(1, 3) << 0,-1,0);Mat ky = (Mat_<float>(1, 3) << -1,0, -1);sepFilter2D(src, dst, src.depth(),kx,ky,Point(-1,-1),0,BORDER_DEFAULT );*/cvSmooth(src, dst, CV_GAUSSIAN, , 3, 0);imshow("shiyan", dst);waitKey(0);return 0; }
總結
- 上一篇: sepFilter2D函数
- 下一篇: sobel函数