关于金字塔的上下的顺序问题
一般来说,
面积越大的图像,在数学上说成是低层图像,
面积越小的图像,在数学上说成是高层图像,
(向上)
第五层 1
第四层 111
第三层 11111
第二层 111111111
第一层 11111111111
(向下)
但对于金字塔函数来说,刚好相反,以上图中的上下方向来说
pyrUp是从上往下的运算——向上采样
pryDOWN是从下往上的运算——向下采样
向下采样:
(1)对图像G(i)进行高斯内核卷积
(2)去除所有偶数行和列
向上采样:
(1)在行核列上将图像扩大为2倍,并以0填充
(2)使用上述高斯内核进行卷积,获得“新增像素”的近似值
以下链接给出了插值算法的很好的说明
https://blog.csdn.net/qq_20823641/article/details/52221442?locationNum=2&fps=1
尺寸调整函数:resize
void resize(InputArray src,
OutputArray dst,
Size dsize,
double fx = 0,
double fy = 0,
iont interpolation = INTER_LINEAR)
参数1 src:源图像
参数2 dst:输出图像,有着dsize的尺寸,或者src.size()计算出来的尺寸
参数3 dsize:输出图像大小。如果=0,则dsize = Size(round(fx*src.cols), round(fy*src.rows))
参数4 fx:沿水平轴的缩放系数。如果=0,fx = dsize.width/src.cols
参数5 fy:沿垂直轴的缩放洗漱。如果=0,fy = dsize.height/src.rows
参数6 interpolation:指定的插值方式
//! interpolation algorithm
enum
{
INTER_NEAREST =CV_INTER_NN, 最邻近插值 //!< nearest neighbor interpolation
INTER_LINEAR =CV_INTER_LINEAR, 线性插值 //!< bilinear interpolation
INTER_CUBIC =CV_INTER_CUBIC, 三次样条插值 //!< bicubic interpolation
INTER_AREA =CV_INTER_AREA, 区域插值 //!< area-based (or super) interpolation
INTER_LANCZOS4=CV_INTER_LANCZOS4, Lanczos插值 //!< Lanczos interpolation over 8x8 neighborhood
INTER_MAX =7,
WARP_INVERSE_MAP=CV_WARP_INVERSE_MAP
};
例:
方式1:显示指定dsize = dstImage.size(),fx/fy会自动计算
Mat srcImage = imread("1.jpg");
Mat dstImage = Mat::zeros(512, 512, CV_8UC3);
resize(srcImage, dstImage, dstImage.size())
方式2:指定fx/fy,Size()表示使用Size的默认构造函数Size(0,0)
Mat srcImage = imread("1.jpg");
Mat dstImage;
resize(srcImage, dstImage, Size(), 0.5, 0.5);
向上采样函数:pyrUp(放大一张图片)
void pyrUp(InputArray src,
OutputArray dest,
const Size& destsize = Size(),
int borderType = BORDER_DEFAULT)
参数2 dest:输出图像,和src有一样的尺寸和类型
参数3 destsize:默认情况下为Size(src.col*2, src.rows*2)
例:
Mat srcImage = imread("1.jpg");
Mat destImage;
pyrUp(srcImage, destImage, Size(srcImage.cols*2, srcImage.rows*2))
向下采样函数:pyrDown(缩小一张图片)
void pyrDown(InputArray src,
OutputArray dest,
const Size& destsize = Size(),
int borderType = BORDER_DEFAULT)
参数2 dest:输出图像,和src有一样的尺寸和类型
参数3 destsize:默认情况下为Size((src.col+1)/2, (src.rows+1)/2)
例:
Mat srcImage = imread("1.jpg");
Mat destImage;
一般来说,
面积越大的图像,在数学上说成是低层图像,
面积越小的图像,在数学上说成是高层图像,
(向上)
第五层 1
第四层 111
第三层 11111
第二层 111111111
第一层 11111111111
(向下)
但对于金字塔函数来说,刚好相反,以上图中的上下方向来说
pyrUp是从上往下的运算——向上采样
pryDOWN是从下往上的运算——向下采样
向下采样:
(1)对图像G(i)进行高斯内核卷积
(2)去除所有偶数行和列
向上采样:
(1)在行核列上将图像扩大为2倍,并以0填充
(2)使用上述高斯内核进行卷积,获得“新增像素”的近似值
以下链接给出了插值算法的很好的说明
https://blog.csdn.net/qq_20823641/article/details/52221442?locationNum=2&fps=1
尺寸调整函数:resize
void resize(InputArray src,
OutputArray dst,
Size dsize,
double fx = 0,
double fy = 0,
iont interpolation = INTER_LINEAR)
参数1 src:源图像
参数2 dst:输出图像,有着dsize的尺寸,或者src.size()计算出来的尺寸
参数3 dsize:输出图像大小。如果=0,则dsize = Size(round(fx*src.cols), round(fy*src.rows))
参数4 fx:沿水平轴的缩放系数。如果=0,fx = dsize.width/src.cols
参数5 fy:沿垂直轴的缩放洗漱。如果=0,fy = dsize.height/src.rows
参数6 interpolation:指定的插值方式
//! interpolation algorithm
enum
{
INTER_NEAREST =CV_INTER_NN, 最邻近插值 //!< nearest neighbor interpolation
INTER_LINEAR =CV_INTER_LINEAR, 线性插值 //!< bilinear interpolation
INTER_CUBIC =CV_INTER_CUBIC, 三次样条插值 //!< bicubic interpolation
INTER_AREA =CV_INTER_AREA, 区域插值 //!< area-based (or super) interpolation
INTER_LANCZOS4=CV_INTER_LANCZOS4, Lanczos插值 //!< Lanczos interpolation over 8x8 neighborhood
INTER_MAX =7,
WARP_INVERSE_MAP=CV_WARP_INVERSE_MAP
};
例:
方式1:显示指定dsize = dstImage.size(),fx/fy会自动计算
Mat srcImage = imread("1.jpg");
Mat dstImage = Mat::zeros(512, 512, CV_8UC3);
resize(srcImage, dstImage, dstImage.size())
方式2:指定fx/fy,Size()表示使用Size的默认构造函数Size(0,0)
Mat srcImage = imread("1.jpg");
Mat dstImage;
resize(srcImage, dstImage, Size(), 0.5, 0.5);
向上采样函数:pyrUp(放大一张图片)
void pyrUp(InputArray src,
OutputArray dest,
const Size& destsize = Size(),
int borderType = BORDER_DEFAULT)
参数2 dest:输出图像,和src有一样的尺寸和类型
参数3 destsize:默认情况下为Size(src.col*2, src.rows*2)
例:
Mat srcImage = imread("1.jpg");
Mat destImage;
pyrUp(srcImage, destImage, Size(srcImage.cols*2, srcImage.rows*2))
向下采样函数:pyrDown(缩小一张图片)
void pyrDown(InputArray src,
OutputArray dest,
const Size& destsize = Size(),
int borderType = BORDER_DEFAULT)
参数2 dest:输出图像,和src有一样的尺寸和类型
参数3 destsize:默认情况下为Size((src.col+1)/2, (src.rows+1)/2)
例:
Mat srcImage = imread("1.jpg");
Mat destImage;
pyrDown(srcImage, destImage, Size((srcImage.col+1)/2, (srcImage.rows+1)/2))