标签:style blog http io ar color os 使用 sp
从今天开始进入官方的图像处理部分。
图像滤波:
主要介绍了四种滤波函数的使用方式
示例代码:
1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 int MAX_KERNEL_LENGTH = 31; 8 9 using namespace std; 10 using namespace cv; 11 12 void Show(std::string name,Mat img) 13 { 14 namedWindow(name, CV_WINDOW_AUTOSIZE); 15 imshow(name, img); 16 } 17 18 int main(void) 19 { 20 Mat src = imread("lena.jpg"); 21 if (src.empty()) 22 return -1; 23 Show("Src", src); 24 25 Mat dst = src.clone(); 26 for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) 27 { 28 blur(src, dst, Size(i, i), Point(-1, -1)); 29 } 30 Show("Blur", dst); 31 32 for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) 33 { 34 GaussianBlur(src, dst, Size(i, i), 0, 0); 35 } 36 Show("GaussianBlur", dst); 37 38 for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) 39 { 40 medianBlur(src, dst, i); 41 } 42 Show("MedianBlur", dst); 43 44 for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) 45 { 46 bilateralFilter(src, dst, i, i * 2, i / 2); 47 } 48 Show("BilateralFilter", dst); 49 50 waitKey(); 51 return 0; 52 }
可以使用如下方式显示变换程度:
1 #include <opencv2\opencv.hpp> 2 #include <iostream> 3 #include <string> 4 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 6 7 int MAX_KERNEL_LENGTH = 31; 8 9 using namespace std; 10 using namespace cv; 11 12 void Show(std::string name,Mat img) 13 { 14 namedWindow(name, CV_WINDOW_AUTOSIZE); 15 imshow(name, img); 16 } 17 18 int main(void) 19 { 20 Mat src = imread("lena.jpg"); 21 if (src.empty()) 22 return -1; 23 Show("Src", src); 24 25 Mat dst = src.clone(); 26 for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) 27 { 28 blur(src, dst, Size(i, i), Point(-1, -1)); 29 Show("Blur", dst); 30 waitKey(100); 31 } 32 33 waitKey(); 34 return 0; 35 }
函数说明:
Box Filter:
blur(src, dst, Size(i, i), Point(-1, -1));
Size(i,i)是滤波器的kernel,Point(-1,-1)是滤波锚点位置,为负数时代表跟随滤波器的kernel(可以防止图像变换过程中偏移)。
Gaussian Filter:
GaussianBlur(src, dst, Size(i, i), 0, 0);
Size同样是kernel,后面两个参数是sigma x,y的值,若为0表示跟随kernel,(因为作为分母其不可为0)。
Median Filter:
medianBlur(src, dst, i);
参数i代表的是kernel值,因为是方形(二维)图像,所以只用一个数字就好,并且需要使用奇数。
Bilateral Filter:
bilateralFilter(src, dst, i, i * 2, i / 2);
后面三个参数分别表示:
d,变换需要使用的直径范围,就是每个像素点会根据周围几个像素点进行运算;
color,颜色域标准差;
space,坐标空间的标准差。
虽然网速不好,还是上传变换后的结果图片吧:
原图就自己去opencv的安装文件夹下找了。
以上。
标签:style blog http io ar color os 使用 sp
原文地址:http://www.cnblogs.com/lhyz/p/4147725.html