java实现卷积核二维卷积_图像处理之C语言实现二维卷积

在用C语言实现图像处理中,经常要用到二维卷积的运算,这个在matlab中是非常容易实现的,只需要conv2()就OK啦,而且速度非常的快。但是在C语言中就需要四层的for循环来实现了。

首先二维卷积的原理是:

1 2 3               2 2 2

A=  1 2 3         B= 1 1 1

1 2 3               3 3 3

单我们使用A和B卷积时,首先需要将B旋转180度。即

3 3 3

1 1 1    逐渐右移

2 2 2

1 2 3

1 2 3

1 2 3

可得(full):

2     6    12    10     6

3     9    18    15     9

6    18    36    30    18

4    12    24    20    12

3     9    18    15     9

但是我们在图像处理中一般只选择与A维数相同的矩阵即:

9    18    15

18    36    30

12    24    20

所以可以得以下程序(给出部分代码):

#define N1 512

#define M1 512

#define N2 3

#define M2 3

/*x相当于矩阵A,y相当于J矩阵B,z相当于矩阵full时的输出,z2相当于矩阵与A维数相同时的输出,这里的参数类型根据实际情况作出修改。如果矩阵很大,运算时间比较久*/

void conv2(unsigned char x[N1][M1],int y[N2][M2],float z[N1+N2-1][M1+M2-1],float z2[N1][M1])

{

int i,j;

int n,m;

for(i=0; i

for(j=0; j

{

float temp = 0;

for(m=0; m

for(n=0; n

if((i-m)>=0&&(i-m)=0&&(j-n)

temp+=x[m][n]*y[i-m][j-n];

z[i][j]=temp;

}

for(i=0; i

for(j=0; j

{

z2[i][j]=z[i+(N2-1)/2][j+(M2-1)/2];

}

}

————————————————

版权声明:本文为CSDN博主「No威_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/gotowu/article/details/48806397

图像处理之基础---二维卷积c实现

http://wenku.baidu.com/link?url=4RzdmvP9sdaaUbnVEW4OyBD-g67wIOiJjKFF3Le_bu7hIiBS7I6hMcDmCXrQwsHvrsPv ...

卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解

作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...

使用C语言实现二维,三维绘图算法(1)-透视投影

使用C语言实现二维,三维绘图算法(1)-透视投影 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其实想想 ...

使用C语言实现二维,三维绘图算法(3)-简单的二维分形

使用C语言实现二维,三维绘图算法(3)-简单的二维分形 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

使用C语言实现二维,三维绘图算法(2)-解析曲面的显示

使用C语言实现二维,三维绘图算法(2)-解析曲面的显示 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

二维卷积c代码

二维卷积c代码 二维信号的卷积原理请参考另外一篇文章:http://blog.csdn.net/carson2005/article/details/43702241 这里直接给出参考代码: void ...

【转】python中的一维卷积conv1d和二维卷积conv2d

转自:https://blog.csdn.net/qq_26552071/article/details/81178932 二维卷积conv2d 给定4维的输入张量和滤波器张量来进行2维的卷积计算.即 ...

深度学习面试题10:二维卷积(Full卷积、Same卷积、Valid卷积、带深度的二维卷积)

目录 二维Full卷积 二维Same卷积 二维Valid卷积 三种卷积类型的关系 具备深度的二维卷积 具备深度的张量与多个卷积核的卷积 参考资料 二维卷积的原理和一维卷积类似,也有full卷积.sam ...

4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT

第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...

随机推荐

MemcacheQ 的安装与使用

1.安装libevent 官网:http://www.libevent.org/ 全选复制放进笔记 $ wget https://github.com/downloads/libevent/libev ...

android studio 导入的项目有乱码-笔记2

如果导入的项目原本就是UTF-8.且android studio编码设置为UTF-8就不会乱码.这种情况多是导入的原项目编码为GBK. 解决方法:在android studio 右下角,切换编码为GB ...

Spring3.2新注解@ControllerAdvice

Spring3.2新注解@ControllerAdvice   @ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@Control ...

mysql数据库的中文乱码问题的解决

今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一 ...

java中使用hashSet的特性,判断数组是否有重复值

public static boolean cheakRepeat(int[] array){ HashSet hashSet = new HashSet

Oracle 基本知识回顾

1.查找数据库所用的字符集编码:SELECT USERENV('language') FROM DUAL;2.将一个表中的字段,插入到这个表:INSERT INTO TABLE SELECT * FR ...

基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码

比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用 就可实现跳转到指定位置 ...

mysql 案例 ~查询导致的tmp临时文件问题

一 简介:之前遇到一个tmp分区暴涨的问题,后来经过大神的指点,遂分析写下 二 分类: 1  select语句出现 using temporay tmp 下出现 #sql_631a_1.MYD #sq ...

使用JS与CSS3的翻转实现3D翻牌效果

之前我们有讨论过使用CSS3如何实现网页水平翻转的效果,而这次我们介绍的是翻转效果更深一层的应用——3D翻牌效果. 这里我们需要使用flip中轴翻转实现,又因为是3D效果,如果希望呈现一定的3D视角, ...

Oracle数据库order by排序查询分页比不分页还慢问题解决办法

简单说下问题,有一个JDBC的查询SQL,分页查询语句中有一个排序order by create_time,理论上来说JDBC查询已经是比较底层的技术了,没有像Hibernate.MyBatis那样又 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值