如何知道iplimage的高斯模糊系数?

时间:2017-06-16 08:54:48

标签: image-processing filter gaussian 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的高斯模糊系数?

1 个答案:

答案 0 :(得分:1)

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

如何找到过滤器操作中使用的系数? 那么你读了手册并找出......

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

因为你没有在你的函数调用中提供sigma(或者在别人的函数调用中说因为我怀疑你编写了那段代码),所以默认为0。

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

在高斯参数的情况下,该参数可以指定   高斯西格玛(标准偏差)。如果它为零,则计算它   从内核大小:

     

sigma = 0.3(n / 2 - 1)+ 0.8

其中n是你的内核大小

  

对小内核使用标准sigma(3 x 3到7 x 7)   提供更好的速度。如果sigma1不为零,则size1和size2为   零,内核大小是从sigma计算出来的(提供   准确的操作)。