第6章 图像处理_6.6图片金字塔与图片尺寸缩放

关于金字塔的上下的顺序问题

一般来说,
面积越大的图像,在数学上说成是低层图像,
面积越小的图像,在数学上说成是高层图像,

(向上)
第五层      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))


### 回答1: vxWorks 是由美国公司 Wind River Systems 开发的实时操作系统(RTOS),支持多种处理器体系结构和硬件平台。vxWorks_kernel_api_reference_vol1_6.6 是 vxWorks 官方文档中的一部分,其主要是关于 vxWorks 内核 API 的参考手册。vxWorks 虽然拥有很多特定的 API,但是它与其他 RTOS 相比,最大的优势在于其高度可定制的内核,使用者可以根据自己的需求进行定制和配置。 vxWorks_kernel_api_reference_vol1_6.6 包含了 vxWorks 内核 API 的全部内容,其中包括任务管理、信号量、事件标志、消息队列、定时器、收发器等方面的内容,在 vxWorks 系统开发中是必需的参考手册。用户可以通过这份参考手册了解 vxWorks 内核 API 的具体功能和使用方法,以便开发出更加高效、稳定的应用程序。 此外,vxWorks_kernel_api_reference_vol1_6.6 也提供了详细的示例程序,帮助用户更快地理解 API 的使用,也可作为快速入门手册。但是需要注意的是,由于 vxWorks 内核的高度定制性和灵活性,用户在实际开发中需要根据具体的应用需求进行改动和调整。 总之,vxWorks_kernel_api_reference_vol1_6.6 是 vxWorks 开发者必不可少的参考文档,并且可以提供基础开发和高级调试参考,应用程序从考虑到开发到维护都需要借助该文档。 ### 回答2: 《vxworks_kernel_api_reference_vol1_6.6》是一份VxWorks实时操作系统的内核API参考手册,是开发者使用VxWorks进行嵌入式系统开发的必备参考资料。 该手册共分为六个部分,包括任务管理、消息传递、系统管理、软件定时器、内存管理和中断处理六个方面。在任务管理部分,介绍了任务的创建、删除、挂起、唤醒以及任务之间的消息传递方式;在消息传递部分,介绍了消息队列、消息邮箱、信号量和事件等通信机制;在系统管理部分,介绍了系统调度、任务优先级调整、定时器和闹钟等系统管理功能;在软件定时器部分,介绍了基于定时器的软件实现方式;在内存管理部分,介绍了内存分配、清理等内存管理功能;最后,在中断处理部分,介绍了中断的注册、删除、处理等相关内容。 此外,该手册还提供了各个API函数的详细参数介绍和使用方法。开发者可以根据自己的需求和具体应用场景,灵活运用这些API函数,实现定制化的嵌入式系统开发。 总的来说,《vxworks_kernel_api_reference_vol1_6.6》是一份非常全面、详细的VxWorks内核API参考手册,对于进行嵌入式系统开发的开发者来说,是必不可少的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值