单核通道单卷积
yummy
阅读:385
2022-03-30 22:12:28
评论:0
#include<stdio.h> /*输入图像5*5 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 */ /*卷积核大小3*3 1 0 1 0 1 0 1 0 1 */ //padding :0 不填充 //step :1 步长 //单通道 单卷积 #define CONV_IMG_IN_SIZE 5 #define CONV_W_SIZE 3 #define CONV_IMG_OUT_SIZE 3 int conv(float img_in[CONV_IMG_IN_SIZE][CONV_IMG_IN_SIZE],float w[CONV_W_SIZE][CONV_W_SIZE],float img_out[CONV_IMG_OUT_SIZE][CONV_IMG_OUT_SIZE]) { int i,j,k,r; float temp; //滑动卷积 for(k=0;k<CONV_IMG_OUT_SIZE;k++)//行 { for(r=0;r<CONV_IMG_OUT_SIZE;r++)//列 { //平面卷积计算 temp = 0.0; for(i=0;i<CONV_W_SIZE;i++)//行 { for(j=0;j<CONV_W_SIZE;j++)//列 { temp += img_in[i+k][j+r] * w[i][j]; } } img_out[k][r] = temp ; } } return 0 ; } void conv_test() { float img_in[CONV_IMG_IN_SIZE][CONV_IMG_IN_SIZE]={1,1,1,0,0, 0,1,1,1,0, 0,0,1,1,1, 0,0,1,1,0, 0,1,1,0,0}; float w[CONV_W_SIZE][CONV_W_SIZE]={1,0,1, 0,1,0, 1,0,1}; float img_out[CONV_IMG_OUT_SIZE][CONV_IMG_OUT_SIZE] ={0}; int i,j; conv(img_in,w,img_out); printf("输入图片:\n"); for(i=0;i<5;i++) { for(j=0;j<5;j++) { printf("%.1f ",img_in[i][j]); } printf("\n"); } printf("输出图片:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%.1f ",img_out[i][j]); } printf("\n"); } } int main() { conv_test(); return 0; }
本文 zblog模板 原创,转载保留链接!网址:http://xn--zqqs03dbu6a.cn/?id=10
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。