卷积(convolution) cvFilter2D

核心函数:cvFilter2D

原理:

核的中心对准源图像的像素,源图像和核的相对应元素分别相乘并全部相加,得到的值为目标图像核心的值;对于边界则默认用最边界的元素值填充出一个虚拟外边界(相当于调用cvCopyMakeBorder,cvFilter2D内置这个函数)

程序:

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int convolution(int argc,char** argv)
{
IplImage* src=cvCreateImage(cvSize(10,10),8,1); //源图像,注意只有CV_8UC1的类型可以修改其中的值,如果为float则不能用cvSet,cvZero或者直接用for语句修改其中的值
//for(int rows=0;rows<src->height;rows++)
//{
//uchar *data=(uchar*)(src->imageData+rows*src->widthStep);
//for(int cols=0;cols<src->width;cols++)
//{
//uchar *result=(uchar *)(data+cols*src->nChannels);
//*result=1;
//}
//}
//cvZero(src);
cvSet(src,cvScalar(1));
IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
cvZero(dst);
CvMat kernel;
float kerneldata[]={1,1,1,          //核必须为float
              1,1,1,
  1,1,1
};
cvInitMatHeader(&kernel,3,3,CV_32FC1,(void*)kerneldata); //核心必须为浮点型
cvFilter2D(src,dst,&kernel);
std::cout<<"srcMat:"<<std::endl;
for(int rows=0;rows<src->height;rows++)
{
uchar *data=(uchar*)(src->imageData+rows*src->widthStep);
for(int cols=0;cols<src->width;cols++)
{
uchar result=*(data+cols*src->nChannels);
std::cout<<(int)result<<" ";
}
std::cout<<std::endl;
}
std::cout<<"kernelMat:"<<std::endl;
for(int rows=0;rows<kernel.height;rows++)
{
float *data=(float*)(kernel.data.ptr+rows*kernel.step);
for(int cols=0;cols<kernel.width;cols++)
{
float result=*(data+cols);
std::cout<<result<<" ";
}
std::cout<<std::endl;
}
std::cout<<"ConvolutionDstMat:"<<std::endl;
for(int rows=0;rows<dst->height;rows++)
{
uchar *data=(uchar*)(dst->imageData+rows*dst->widthStep);
for(int cols=0;cols<dst->width;cols++)
{
uchar result=*(data+cols*dst->nChannels);
std::cout<<(int)result<<" ";
}
std::cout<<std::endl;
}
return 0;
}

卷积(convolution) cvFilter2D

时间: 2024-11-10 10:40:17

卷积(convolution) cvFilter2D的相关文章

卷积 Convolution 原理及可视化

文章抄自 知乎-王贵波 本文主要介绍了卷积 Convolution 的背景.基本原理.特点.与全连接的区别与联系.不同的卷积模式,进行了卷积可视化以及代码实现了一个简单的 2 维卷积操作,并针对卷积操作进行了计算优化. 目录 卷积背景及原理 卷积的特点(与全连接的区别与联系) 卷积的三种模式 卷积操作 Numpy 简单实现 卷积优化实现 卷积背景及原理 卷积操作历史上来发展于信号处理领域,在信号处理中原始信号通常会被混入噪音,假设传感器在每个时刻 \(t\) 会输出一个信号 \(f(t)\),这

从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)

本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二) 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (三) 在上一篇博客中,我们简单介绍了基于循环图神经网络的两种重要模型,在本篇中,我们将着大量笔墨介绍图卷积神经网络中的卷积操作.接下来,我们将首先介绍一下图卷积神经网络的大概框架

卷积神经网络(CNN)

1. 概述 卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的, 另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的).它的非全连接和权值共享的网络结构使之更类似于生物 神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量. 卷积网络最初是受视觉神经机制的启发而设计的,是为识别二维形状而设计的一个多层感知器,这种网络结构对平移.比例缩放.倾斜或者共他 形式的变形具有高度不变性.1962年

(转载)图像处理(卷积)

图像处理-线性滤波-1 基础(相关算子.卷积算子.边缘效应) 这里讨论利用输入图像中像素的小邻域来产生输出图像的方法,在信号处理中这种方法称为滤波(filtering).其中,最常用的是线性滤波:输出像素是输入邻域像素的加权和. 1.相关算子(Correlation Operator) 定义:,  即 ,其中h称为相关核(Kernel). 步骤: 1)滑动核,使其中心位于输入图像g的(i,j)像素上 2)利用上式求和,得到输出图像的(i,j)像素值 3)充分上面操纵,直到求出输出图像的所有像素值

理解数字图像处理中的卷积

理解数字图像处理中的卷积 彻底理解数字图像处理中的卷积-以Sobel算子为例 作者:FreeBlues 修订记录 2016.08.04 初稿完成 概述 卷积在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨论卷积在数字图像处理中的应用. 在数字图像处理中, 有一种基本的处理方法:线性滤波. 待处理的平面数字图像可被看做一个大矩阵, 图像的每个像素对应着矩阵的每个元素, 假设我们平面的分辨率是 1024*768, 那么对应的大矩阵的行数= 1024, 列数=768. 用于滤波的

卷积神经网络CNN介绍:结构框架,源码理解【转】

1. 卷积神经网络结构 卷积神经网络是一个多层的神经网络,每层都是一个变换(映射),常用卷积convention变换和pooling池化变换,每种变换都是对输入数据的一种处理,是输入特征的另一种特征表达:每层由多个二维平面组成,每个平面为各层处理后的特征图(feature map). 常见结构: 输入层为训练数据,即原始数据,网络中的每一个特征提取层(C-层)都紧跟着一个二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力.具体C层和S层的个数不确定

【练习6.1】阈值化、腐蚀、cvFilter2D及自定义滤波器

提纲 题目要求 程序代码 结果图片 要言妙道 题目要求: 用cvFilter2D创建一个滤波器,只检测一副图像里的60度角的直线.将结果显示.做一下分部步操作: a.自定义卷积核,使用cvFilter2D,处理图像 b.对a的结果图片阈值化,是60度上的直线更清晰 c.对b的结果腐蚀 备注: 对于这道题,我的理解是,只保留一副图片60度角上的直线,是为了增加对自定义滤波器的熟悉度 在Opencv卷积滤波cvFilter2D一文中有更多常用的滤波器模板可以借鉴 程序代码: 1 // OpenCVE

Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之:CNN卷积神经网络推导和实现 [4]Deep Learning模型之:CNN的反向求导及练习 [5]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN [6]Deep Learn

[透析] 卷积神经网络CNN究竟是怎样一步一步工作的?(转)

视频地址:https://www.youtube.com/embed/FmpDIaiMIeA    转载:http://www.jianshu.com/p/fe428f0b32c1 文档参阅:pdf [2MB] & ppt [6MB] & Web View & GitBook 补充知识:深度学习 - 反向传播理论推导 当你听到说深度学习打破了某项新技术障碍,那么十有八九就会涉及到卷积神经网络.它们也被称作CNNs或着ConvNets,是深层神经网络领域的主力.它们已经学会对图像进行

超详细介绍 图像处理(卷积)(转)

图像处理(卷积)作者太棒了 原文 http://blog.sina.com.cn/s/blog_4bdb170b01019atv.html 图像处理-线性滤波-1 基础(相关算子.卷积算子.边缘效应) 这里讨论利用输入图像中像素的小邻域来产生输出图像的方法,在信号处理中这种方法称为滤波(filtering).其中,最常用的是线性滤波:输出像素是输入邻域像素的加权和. 1.相关算子(Correlation Operator) 定义:,  即 ,其中h称为相关核(Kernel). 步骤: 1)滑动核