计算机视觉
图像处理

二维卷积

二维卷积c代码:

void Conv2(int** filter, int** arr, int** res, int filterW, int filterH, int arrW, int arrH)
{
	int temp;

	for (int i=0; i<filterH+arrH-1; i++)
	{
		for (int j=0; j<filterW+arrW-1; j++)
		{
			temp = 0;
			for (int m=0; m<filterH; m++)
			{
				for (int n=0; n<filterW; n++) { if ((i-m)>=0 && (i-m)=0 && (j-n)<arrW)
					{
						temp += filter[m][n]*arr[i-m][j-n];
					}
				}
			}
			res[i][j] = temp;
		}
	}
}

void Conv2Test()
{
	int filterW = 3;
	int filterH = 3;
	int arrW = 5;
	int arrH = 5;
	int resW = filterW + arrW - 1;
	int resH = filterH + arrH - 1;

	int** pFilter = new int*[filterH];
	for (int i=0; i<filterH; i++)
	{
		pFilter[i] = new int[filterW];
	}

	int** arr = new int*[arrH];
	for (int i=0; i<arrH; i++)
	{
		arr[i] = new int[arrW];
	}

	int** res = new int*[resH];
	for (int i=0; i<resH; i++)
	{
		res[i] = new int[resW];
	}

	pFilter[0][0] = 1;
	pFilter[0][1] = 3;
	pFilter[0][2] = 1;
	pFilter[1][0] = 0;
	pFilter[1][1] = 5;
	pFilter[1][2] = 0;
	pFilter[2][0] = 2;
	pFilter[2][1] = 1;
	pFilter[2][2] = 2;

	arr[0][0] = 17;
	arr[0][1] = 24;
	arr[0][2] = 1;
	arr[0][3] = 8;
	arr[0][4] = 15;
	arr[1][0] = 23;
	arr[1][1] = 5;
	arr[1][2] = 7;
	arr[1][3] = 14;
	arr[1][4] = 16;
	arr[2][0] = 4;
	arr[2][1] = 6;
	arr[2][2] = 13;
	arr[2][3] = 20;
	arr[2][4] = 22;
	arr[3][0] = 10;
	arr[3][1] = 12;
	arr[3][2] = 19;
	arr[3][3] = 21;
	arr[3][4] = 3;
	arr[4][0] = 11;
	arr[4][1] = 18;
	arr[4][2] = 25;
	arr[4][3] = 2;
	arr[4][4] = 9;

	printf("pFilter: \n");
	for (int i=0; i<filterH; i++)
	{
		for (int j=0; j<filterW; j++)
		{
			printf("%d ", pFilter[i][j]);
		}
		printf("\n");
	}
	printf("*********************************************** \n");

	printf("arr: \n");
	for (int i=0; i<arrH; i++)
	{
		for (int j=0; j<arrW; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	printf("*********************************************** \n");


	Conv2(pFilter, arr, res, filterW, filterH, arrW, arrH);

	printf("res: \n");
	for (int i=0; i<resH; i++)
	{
		for (int j=0; j<resW; j++)
		{
			printf("%d ", res[i][j]);
		}
		printf("\n");
	}
	printf("*********************************************** \n");
}

 

转载注明来源:CV视觉网 » 二维卷积

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 3

评论前必须登录!