上采样函数和下采样函数(c语言)

下采样

先高斯滤波,然后下采样:抛除原图的偶数行和列,缩小图片尺寸为原来的1/4
原本矩阵
下采样后矩阵为:
下采样后矩阵

上采样

将图像扩充为原来图像大小,与下采样相反,扩充部分填充为0,然后高斯滤波,滤波核是下采样的4倍。(滤波其实就是插值)
原本矩阵
上采样后矩阵为:
在上采后矩阵
上采样和下采样的c语言代码

/*****************************************************
function:pyr_down(int width, int height, int* image, int* new_image)
下采样函数
input: 图像的宽width,图像的高height,原图像image(数组格式)
output: 下采样图像new_image
data:2020/11/12
*******************************************************/
void pyr_down(int width, int height, int* image, int* new_image)
{
    
    
 int width2 = width / 2;
 for (int i = 0; i < height; i += 2)
 {
    
    
  for (int j = 0; j < width; j += 2)
  {
    
    
   new_image[i / 2 * width2 + j / 2] = image[i*width + j];
  }
 }
}
void pyr_up(int width, int height, int* image, int* new_image)
{
	for (int i = 0; i < height; i= i+2)
	{
		for (int j = 0; j < width; j = j+2)
		{
			new_image[i*width + j] = image[i / 2 * width / 2 + j / 2];
			new_image[(i+1)*width + (j+1)] = 0;
			new_image[(i + 1)*width + j] = 0;
			new_image[i*width + (j + 1)] = 0;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/math_new_photo/article/details/109677061