使用filter2D创建自定义线性滤波器
2015-08-04 09:52
651 查看
1、函数原型
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Pointanchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT )
该函数可使用任意自定义卷积核在输入图像上进行卷积运算,而且可以实现就地转换(In-place operation is supported)。
2、参数分析
src:源图像
dst:目标图像
ddepth:dst的深度,若为负值(如-1),则表示其深度与源图像相等。
kernel:用来遍历图像的核
anchor:核的锚点的相对位置,其中心点默认为(-1,-1)。
delta:在卷积的过程中,该值会加到每个像素上。默认情况下,这个值为0。
BORDER_DEFAULT:像素插值方法,这里为默认值,详细可以参照borderInterpolate()方法。
3、卷积核&锚点
卷积核:卷积核本质上是一个大小固定、由数值参数构成的数组,一个特殊卷积所实现的功能是由其卷积核的形式决定的。
锚 点:数组的参考点(anchor point,也叫锚点)通常位于数组(卷积核)的中心。
举 例:下图描述了一个以数组中心为参考点的3X3的卷积核,-4所在为锚点。若要计算图像上某个点的卷积值,则将卷积核的锚点定位到图像上的那个点,让核的其它元素覆盖图像中的相应的像素点。将图像上的点与卷积核对应相乘后再求和,并将这个结果放在图像上锚点的相对位置上。通过在图像上扫描卷积核,对图像的每个点重复此操作。
4、应用举例
使用Gabor滤波器对原图像(src)进行滤波操作得到滤波后的图像(src_filted)
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Pointanchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT )
该函数可使用任意自定义卷积核在输入图像上进行卷积运算,而且可以实现就地转换(In-place operation is supported)。
2、参数分析
src:源图像
dst:目标图像
ddepth:dst的深度,若为负值(如-1),则表示其深度与源图像相等。
kernel:用来遍历图像的核
anchor:核的锚点的相对位置,其中心点默认为(-1,-1)。
delta:在卷积的过程中,该值会加到每个像素上。默认情况下,这个值为0。
BORDER_DEFAULT:像素插值方法,这里为默认值,详细可以参照borderInterpolate()方法。
3、卷积核&锚点
卷积核:卷积核本质上是一个大小固定、由数值参数构成的数组,一个特殊卷积所实现的功能是由其卷积核的形式决定的。
锚 点:数组的参考点(anchor point,也叫锚点)通常位于数组(卷积核)的中心。
举 例:下图描述了一个以数组中心为参考点的3X3的卷积核,-4所在为锚点。若要计算图像上某个点的卷积值,则将卷积核的锚点定位到图像上的那个点,让核的其它元素覆盖图像中的相应的像素点。将图像上的点与卷积核对应相乘后再求和,并将这个结果放在图像上锚点的相对位置上。通过在图像上扫描卷积核,对图像的每个点重复此操作。
4、应用举例
使用Gabor滤波器对原图像(src)进行滤波操作得到滤波后的图像(src_filted)
Mat getGaborFeature(Mat src, int theta, int lambd, int KernelSize) { Mat src_filted; src_filted.create(src.size(), src.type()); Mat GK = getGaborKernel(Size(KernelSize, KernelSize), 2 * CV_PI, (theta * CV_PI) / 8, lambd, CV_PI / 2, CV_32F); filter2D(src, src_filted, -1, GK, Point(-1,-1)); return src_filted; }
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours
- OpenCV 2.3.1图像文件的读入和显示
- opencv2 矩阵方式 resize图像缩放代码
- OpenCV 灰度直方图
- 彩色图转为灰度图