2017-06-16 33 views
1

目前我正在使用iplimage的高斯模糊。 这样,如何知道iplimage的高斯模糊系数?

# include "stdio.h" 
# include "highgui.h" 
# include "cv.h" 

int main(int argc, char** argv) { 
    IplImage* img = 0; 
    IplImage* out = 0; 

    if(argc < 2) { 
     printf("Usage: Accepts one image as argument\n"); 
     exit(EXIT_SUCCESS); 
    } 

    img = cvLoadImage(argv[1]); 

    if(!img) { 
     printf("Error loading image file %s\n", argv[1]); 
     exit(EXIT_SUCCESS); 
    } 

    out = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3); 


    cvSmooth(img, out, CV_GAUSSIAN, 3, 3); 

    cvReleaseImage(&img); 
    cvReleaseImage(&out); 
    cvDestroyWindow("Example1"); 
    cvDestroyWindow("Output"); 
    return EXIT_SUCCESS; 
} 

但我不知道是什么系数在IplImage结构的高斯模糊使用。

我怎么能知道是IplImage的高斯模糊系数?

+0

www.google.com,输入 “cvSmooth” – Piglet

回答

1

的IplImage没有任何高斯模糊系数。 IplImage是英特尔处理库中用于存储图像数据的数据结构。

你怎么能找到在你的过滤操作中使用的系数? 那么你阅读手册,并找出...

http://docs.opencv.org/3.0-beta/modules/imgproc/doc/filtering.html#smooth

因为你不提供你的函数调用一个Σ(或让我们在别人的函数调用说,因为我怀疑你写的代码) ,它的默认值为0

cvSmooth(img, out, CV_GAUSSIAN, 3, 3); 

在高斯参数的情况下,这参数可以指定 高斯西格马(标准偏差)。如果它是零,它是从核尺寸计算 :

标准差= 0.3(N/2 - 1)+ 0.8

其中n是内核大小

使用标准小内核的sigma(3 x 3到7 x 7) 提供更好的速度。如果sigma1不为零,而size1和size2为 零,则内核大小由sigma计算(以提供足够精确的操作)。