下采样
先高斯滤波,然后下采样:抛除原图的偶数行和列,缩小图片尺寸为原来的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;
}
}
}