zoukankan      html  css  js  c++  java
  • 二维卷积c代码

    二维卷积c代码

    二维信号的卷积原理请参考另外一篇文章:http://blog.csdn.net/carson2005/article/details/43702241

    这里直接给出参考代码:

    [cpp] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. void Conv2(int** filter, int** arr, int** res, int filterW, int filterH, int arrW, int arrH)  
    2. {  
    3.     int temp;  
    4.   
    5.     for (int i=0; i<filterH+arrH-1; i++)  
    6.     {  
    7.         for (int j=0; j<filterW+arrW-1; j++)  
    8.         {  
    9.             temp = 0;  
    10.             for (int m=0; m<filterH; m++)  
    11.             {  
    12.                 for (int n=0; n<filterW; n++)  
    13.                 {  
    14.                     if ((i-m)>=0 && (i-m)<arrH && (j-n)>=0 && (j-n)<arrW)  
    15.                     {  
    16.                         temp += filter[m][n]*arr[i-m][j-n];  
    17.                     }  
    18.                 }  
    19.             }  
    20.             res[i][j] = temp;  
    21.         }  
    22.     }  
    23. }  
    24.   
    25. void Conv2Test()  
    26. {  
    27.     int filterW = 3;  
    28.     int filterH = 3;  
    29.     int arrW = 5;  
    30.     int arrH = 5;  
    31.     int resW = filterW + arrW - 1;  
    32.     int resH = filterH + arrH - 1;  
    33.   
    34.     int** pFilter = new int*[filterH];  
    35.     for (int i=0; i<filterH; i++)  
    36.     {  
    37.         pFilter[i] = new int[filterW];  
    38.     }  
    39.   
    40.     int** arr = new int*[arrH];  
    41.     for (int i=0; i<arrH; i++)  
    42.     {  
    43.         arr[i] = new int[arrW];  
    44.     }  
    45.   
    46.     int** res = new int*[resH];  
    47.     for (int i=0; i<resH; i++)  
    48.     {  
    49.         res[i] = new int[resW];  
    50.     }  
    51.   
    52.     pFilter[0][0] = 1;  
    53.     pFilter[0][1] = 3;  
    54.     pFilter[0][2] = 1;  
    55.     pFilter[1][0] = 0;  
    56.     pFilter[1][1] = 5;  
    57.     pFilter[1][2] = 0;  
    58.     pFilter[2][0] = 2;  
    59.     pFilter[2][1] = 1;  
    60.     pFilter[2][2] = 2;  
    61.   
    62.     arr[0][0] = 17;  
    63.     arr[0][1] = 24;  
    64.     arr[0][2] = 1;  
    65.     arr[0][3] = 8;  
    66.     arr[0][4] = 15;  
    67.     arr[1][0] = 23;  
    68.     arr[1][1] = 5;  
    69.     arr[1][2] = 7;  
    70.     arr[1][3] = 14;  
    71.     arr[1][4] = 16;  
    72.     arr[2][0] = 4;  
    73.     arr[2][1] = 6;  
    74.     arr[2][2] = 13;  
    75.     arr[2][3] = 20;  
    76.     arr[2][4] = 22;  
    77.     arr[3][0] = 10;  
    78.     arr[3][1] = 12;  
    79.     arr[3][2] = 19;  
    80.     arr[3][3] = 21;  
    81.     arr[3][4] = 3;  
    82.     arr[4][0] = 11;  
    83.     arr[4][1] = 18;  
    84.     arr[4][2] = 25;  
    85.     arr[4][3] = 2;  
    86.     arr[4][4] = 9;  
    87.   
    88.     printf("pFilter:  ");  
    89.     for (int i=0; i<filterH; i++)  
    90.     {  
    91.         for (int j=0; j<filterW; j++)  
    92.         {  
    93.             printf("%d ", pFilter[i][j]);  
    94.         }  
    95.         printf(" ");  
    96.     }  
    97.     printf("***********************************************  ");  
    98.   
    99.     printf("arr:  ");  
    100.     for (int i=0; i<arrH; i++)  
    101.     {  
    102.         for (int j=0; j<arrW; j++)  
    103.         {  
    104.             printf("%d ", arr[i][j]);  
    105.         }  
    106.         printf(" ");  
    107.     }  
    108.     printf("***********************************************  ");  
    109.   
    110.   
    111.     Conv2(pFilter, arr, res, filterW, filterH, arrW, arrH);  
    112.   
    113.     printf("res:  ");  
    114.     for (int i=0; i<resH; i++)  
    115.     {  
    116.         for (int j=0; j<resW; j++)  
    117.         {  
    118.             printf("%d ", res[i][j]);  
    119.         }  
    120.         printf(" ");  
    121.     }  
    122.     printf("***********************************************  ");  
    123. }  
  • 相关阅读:
    sqoop安装并配置连接数据库
    Mapreduce自定义数据类型
    MapReduce入门(三)倒排索引
    复合式MapReduce之ChainJob
    android 各种xml的作用
    Android ViewPager实现软件的第一次加载的滑动效果
    Android调用系统相机和文件浏览器
    Android样式的编写格式
    Android 按钮按下效果
    Android圆角矩形的实现
  • 原文地址:https://www.cnblogs.com/yymn/p/4589588.html
Copyright © 2011-2022 走看看