如何正确使用3x3高斯滤波器
how to use 3x3 gaussian filter correctly
我正在学习图像处理教程,它说了以下内容
From the gray-scale image, a Gaussian image pyramid PGauss is
computed by firstly applying a 3× 3 Gaussian filter to the image
我知道如何使用 PyrUp
和 PyrDown
对图像进行上下采样。但我不知道如何使用或应用 3x3 高斯滤波器!
我看了一些帖子并关注了他们,他们建议使用
ImgProc.getGaussianKernel(p1,p2,p3)
我在使用ImgProc.getGaussianKernel(p1,p2,p3)
时遇到的问题是
1-我无法将类型指定为 CV_32 或 CV_64,因为当我将参数 3 指定为 ImgProc.CV_32
时,它总是用红线下划线?
2-我用了getGaussianKernel
,只有size和sigma两个参数,当我运行这一步,把从它返回的Mat写入硬盘时,我发现图像是空的,尽管它有大小。为什么会这样?
请告诉我如何正确使用 3x3 高斯滤波器
更新:
我可以使用 ImgProc.blur(.....)
来平滑图像而不是 ImgProc.getGaussianKernel(p1,p2,p3)
吗?
你真的应该看看 docs before asking , also: filter2D
..
int kernelSize = 3; // 3x3 filter
int resultType = CvType.CV_32F; // CvType, not Imgproc !
double sigma = 1.2; // whatever you choose.
Mat kernel = Imgproc.getGaussianKernel(kernelSize, sigma, resultType);
// now apply the filter:
Mat filtered = new Mat();
Imgproc.filter2D(image, filtered, CvType.CV_32F, kernel);
GaussianBlur 与上面的代码相同,blur() 使用的是盒式过滤器,而不是高斯过滤器。
我正在学习图像处理教程,它说了以下内容
From the gray-scale image, a Gaussian image pyramid PGauss is
computed by firstly applying a 3× 3 Gaussian filter to the image
我知道如何使用 PyrUp
和 PyrDown
对图像进行上下采样。但我不知道如何使用或应用 3x3 高斯滤波器!
我看了一些帖子并关注了他们,他们建议使用
ImgProc.getGaussianKernel(p1,p2,p3)
我在使用ImgProc.getGaussianKernel(p1,p2,p3)
时遇到的问题是
1-我无法将类型指定为 CV_32 或 CV_64,因为当我将参数 3 指定为 ImgProc.CV_32
时,它总是用红线下划线?
2-我用了getGaussianKernel
,只有size和sigma两个参数,当我运行这一步,把从它返回的Mat写入硬盘时,我发现图像是空的,尽管它有大小。为什么会这样?
请告诉我如何正确使用 3x3 高斯滤波器
更新:
我可以使用 ImgProc.blur(.....)
来平滑图像而不是 ImgProc.getGaussianKernel(p1,p2,p3)
吗?
你真的应该看看 docs before asking , also: filter2D ..
int kernelSize = 3; // 3x3 filter
int resultType = CvType.CV_32F; // CvType, not Imgproc !
double sigma = 1.2; // whatever you choose.
Mat kernel = Imgproc.getGaussianKernel(kernelSize, sigma, resultType);
// now apply the filter:
Mat filtered = new Mat();
Imgproc.filter2D(image, filtered, CvType.CV_32F, kernel);
GaussianBlur 与上面的代码相同,blur() 使用的是盒式过滤器,而不是高斯过滤器。