概述
卷积操作是图像变换的基础。
抽象的说,卷积这个术语意味着我们对图像的每一个部分所做的操作。从这个意义上讲,我们所熟悉的很多图像变换操作可以被理解成普通卷积的特殊情况。一个特殊的卷积所实现的功能是由所用的卷积核的形式决定的。这个核本质上是一个大小固定,由数值参数构成的数组,数组的标定点通常位于数组的中心。数组的大小被称为核支撑。单就技术而言,核支撑实际上仅仅由核数组的非零部分组成。
下面的卷积示例描述了以数组中心为标定点的3×3卷积核。若要计算一个特定点的卷积值,首先将核的标定点定位到图像的第一个像素点,核的其余元素覆 盖图像中其相对应的局部像素点。对于每一个核点,我们可以得到这个点的核的值以及图像中相应图像点的值。将这些值相乘并求和,并将这个结果放置在与输入图像标定点所相对应的位置。通过在整个图像上扫描卷积核,对图像的每个点重复此操作。
卷积示例:
3 * 3 的像素区域R与卷积核G的卷积运算:
R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
opencv中对图像做卷积的函数
void cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1)); #define cvConvolve2D cvFilter2D
-
src
- 输入图像. dst
- 输出图像. kernel
- 卷积核, 单通道浮点矩阵. 如果想要应用不同的核于不同的通道,先用 cvSplit 函数分解图像到单个色彩通道上,然后单独处理。 anchor
- 核的锚点表示一个被滤波的点在核内的位置。 锚点应该处于核内部。缺省值 (-1,-1) 表示锚点在核中心。
- 函数 cvFilter2D 对图像进行线性滤波,支持 In-place 操作。当核运算部分超出输入图像时,函数从最近邻的图像内部象素差值得到边界外面的象素值。
-
#include "cv.h" #include "highgui.h" #include <stdio.h> int main() { IplImage *src=0; IplImage*dst =0; IplImage*dst2=0; float k[9]={ 1,2,1, 2,4,2, 1,2,1}; //高斯卷积3*3的核 for(int i = 0 ; i< 9;i++){ k[i] = float(k[i]/10); } CvMat Km; Km = cvMat(3,3,CV_32F,k); float k2[25] = { 1, 2, 3, 2, 1, 2, 5, 6, 5, 2, 3, 6, 8, 6, 3, 2, 5, 6, 5, 2, 1, 2, 3, 2, 1};//高斯卷积5*5的核 for(int j = 0 ; j<25; j++){ k2[j] = float(k2[j]/30); } CvMat Km2; Km2 = cvMat(5,5,CV_32F,k2); src=cvLoadImage("4.jpg"); dst=cvCloneImage(src); //使用cvCloneImage时,dst无需初始化,直接复制 dst2 = cvCloneImage(src); cvNamedWindow("src",CV_WINDOW_AUTOSIZE); cvNamedWindow("filter3*3",CV_WINDOW_AUTOSIZE); cvNamedWindow("filter5*5",CV_WINDOW_AUTOSIZE); cvShowImage("src",src); cvFilter2D(src,dst,&Km,cvPoint(-1,-1)); cvFilter2D(src, dst2, &Km2,cvPoint(-1,-1)); //卷积本身公式比较复杂,但是经过舍去高阶小量,简化后成为模板操作 cvShowImage("filter3*3",dst); cvShowImage("filter5*5", dst2); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&dst); cvReleaseImage(&dst2); cvDestroyAllWindows(); return 0; }
测试原图:
-
- 最后,改变高斯核的数值和大小,结果将不同。
最后
以上就是慈祥冰淇淋为你收集整理的opencv图像处理-卷积的全部内容,希望文章能够帮你解决opencv图像处理-卷积所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复