0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在i.MX RT处理器上使用PXP实现缩放和旋转组合操作

恩智浦MCU加油站 来源:恩智浦MCU加油站 2025-02-20 10:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文主要探讨如何使用PXP实现缩放和旋转组合操作,PXP是NXP推出的一个2D图形加速器,主要完成对图像的数据格式转换、固定角度旋转(90°,180°,270°),任意比例缩放、混色,移位以及翻转等功能。运行平台为i.MX RT1170/1160/1060/1050/1040。

其功能结构框如下图所示:

465fcbce-ef25-11ef-9310-92fbcf53809c.png

其工作域有3个:PS, AS以及OUTPUT。

PS域和AS域是输入域,如果不需要混色,就只需要PS域输入就可以了。PS域的输入图像可以进行缩放、颜色转换以及旋转等操作。

本文主要讨论一种特殊的情况,经过PS域,先进行缩放再进行旋转,然后输出。比如摄像头输入一个640(w)* 480(h)的图片,经过放大和旋转后,输出到一个720(w)*1280(h)的屏幕上。这个转换过程如下图所示:

466f5800-ef25-11ef-9310-92fbcf53809c.png

为了实现这个操作,我们需要配置一个PS域的区域范围,对于这种场景,PS域的范围应该配置为(0,0,1280-1,1280-1),这四个坐标分别表示区域的左上角x,左上角y,右下角x,右下角y。上面的图形在PS域中的位置如下图所示:

467d8600-ef25-11ef-9310-92fbcf53809c.png

这样,通过把PS域的大小配置为1280*1280的正方形,才能保证图像在放大和旋转完的过程中,所有的输入和输出都在PS域的范围内。超过PS域的范围,PXP不保证里面的数据正确,这一点在配置PXP的时候非常重要。另外PXP的框图结构里面有两个旋转(Rotation)单元。对于要依次做缩放和旋转的情况,需要使用PXP的第二个旋转单元。

下面我们从代码层面看一看相关的配置:

1.定义屏幕尺寸和原始图像尺寸

#define APP_PANEL_WIDTH  720


#define APP_PANEL_HEIGHT 1280


#define APP_IMG_SIZE_W 640


#define APP_IMG_SIZE_H 480
2. PS域的配置

下面的代码是PS输入图像的buffer的相关配置。

这里重点讲一下pitchBytes的概念。pitchBytes是用来指定一行图像的字节数,它等于一行数据的像素数*每个像素的字节数。PXP是靠这个参数来作为输入数据的换行边界。

const pxp_ps_buffer_config_tpsBufferConfig = {


.pixelFormat = APP_PXP_PS_FORMAT,


.swapByte    = false,


.bufferAddr  = (uint32_t)s_psBufferPxp,  // PS input image buffer


.bufferAddrU = 0U,


.bufferAddrV = 0U,


.pitchBytes  = APP_IMG_SIZE_W * APP_BPP,


};

配置PS区域,需要配置为配置为(0,0,1280-1,1280-1)。

PXP_SetProcessSurfacePosition(


APP_PXP,


0,


0,


APP_PANEL_HEIGHT-1,  // 1280-1


APP_PANEL_HEIGHT-1);// 1280-1
3.配置输出buffer

这里需要注意,当使用第二级的旋转单元时,我们配置的输出区域的长和宽是旋转之前的长度和宽度,这一点非常容易出错。而pitchBytes一般都会配成旋转后的图像宽度(像素数)* 每个像素的字节数。

outputBufferConfig.pixelFormat    = APP_PXP_OUT_FORMAT;


outputBufferConfig.interlacedMode = kPXP_OutputProgressive;


outputBufferConfig.buffer0Addr    = (uint32_t)s_BufferLcd[0];


outputBufferConfig.buffer1Addr    = 0U;


outputBufferConfig.pitchBytes     = APP_PANEL_WIDTH * APP_BPP;


outputBufferConfig.width          = APP_PANEL_HEIGHT; //1280;


outputBufferConfig.height         = APP_PANEL_WIDTH;  //720;
4.配置缩放比例和旋转角度

这里缩放比例是通过缩放前的长宽和缩放后的长宽来指定的,API内部会自动计算缩放系数。

PXP_SetProcessSurfaceScaler(APP_PXP,


APP_IMG_SIZE_W,


APP_IMG_SIZE_H,


APP_PANEL_HEIGHT,


APP_PANEL_WIDTH);
PXP_SetRotateConfig(APP_PXP,


kPXP_RotateOutputBuffer,  // Use the 2nd rotation unit.


kPXP_Rotate90,


kPXP_FlipDisable);

运行结果如下,左边是原始图像,右边是放大以及旋转90°得到的图像:

46892028-ef25-11ef-9310-92fbcf53809c.png

恩智浦MCU加油站

恩智浦半导体NXP Semiconductors N.V.(纳斯达克股票代码:NXPI)是汽车、工业物联网、移动设备和通信基础设施市场值得信赖的合作伙伴,致力于提供创新解决方案。

这是由恩智浦官方运营的公众号,着重为您推荐恩智浦MCU的产品信息、开发技巧、教程文档、培训课程等内容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20152

    浏览量

    247327
  • NXP
    NXP
    +关注

    关注

    61

    文章

    1377

    浏览量

    194878
  • 图像
    +关注

    关注

    2

    文章

    1096

    浏览量

    42163

原文标题:在i.MX RT处理器上使用PXP实现缩放和旋转组合操作

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    初识Layerscape和I.MX系列处理器

    600MHz主频,内部特殊的TCM+SRAM组合使得它的处理能力有MCU小钢炮之称。终端客户实际测试后反馈,算法的运行效率
    发表于 12-10 18:14

    i.MX RT跨界处理器

    应用处理器与MCU“跨界”处理器—从性能差距到新解决方案领域降低成本—去除片内闪存集高性能、低延迟、高能效和安全性于一体相关行业和应用 i.MX RT跨界
    发表于 02-19 06:06

    i.MX RT处理器系列

    大量的RAM和FLASH内存,因此这似乎非常合适。到目前为止,RT1064是RT系列中的高端处理器。让我感兴趣的是它有4MB的片FLASH存储
    发表于 07-22 07:53

    i.MX RT1050平台的相关资料推荐

    的首款跨界处理器。该处理器具备应用处理器的高性能与高度集成的优势,更具有微控制的易用性和实时功能。NXP Semiconductors(恩智浦半导体)公司根据用户成本需求,
    发表于 11-29 07:19

    基于面向i.MX应用处理器的可靠架构

    基于面向i.MX应用处理器的可靠架构
    发表于 10-31 14:07 7次下载
    基于面向<b class='flag-5'>i.MX</b>应用<b class='flag-5'>处理器</b>的可靠架构

    ZLG携手NXP举行i.MX RT 跨界处理器全国巡回研讨会

    2018年3月20号—4月3号,ZLG将携手NXP全国6大城市(广州、深圳、上海、杭州、南京、北京)举办i.MX RT 跨界处理器全国巡回研讨会,届时将为您呈现NXP最新推出的
    的头像 发表于 03-09 15:24 6536次阅读

    NXP i.MX RT106F和RT106L处理器

    NXP i.MX RT106L跨界处理器主要针对低成本本地语音识别应用。是专用于边缘侧的离线嵌入式本地语音控制的解决方案。该款高性能实时处理器基于Arm Coretx-M7内核,主频高
    的头像 发表于 08-24 16:03 3964次阅读

    i.MX RT MCU 跨界处理器可以轻松地满足所有人的无线功能需求?

    我们最近的产品发布中,我们推出了能够比以往更加轻松地交付无线功能的新平台。我们的 Wi-Fi/ 蓝牙组合解决方案和 i.MX RT MCU 跨界
    的头像 发表于 09-03 11:24 2330次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> MCU 跨界<b class='flag-5'>处理器</b>可以轻松地满足所有人的无线功能需求?

    【044】SylixOS 正式支持 i.MX RT1050平台

    的首款跨界处理器。该处理器具备应用处理器的高性能与高度集成的优势,更具有微控制的易用性和实时功能。NXP Semiconductors(恩智浦半导体)公司根据用户成本需求,
    发表于 11-19 12:51 14次下载
    【044】SylixOS 正式支持 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1050平台

    i.MX RT开发笔记-08 | i.MX RT1062嵌套中断向量控制NVIC(按键中断检测)

    系列文章目录i.MX RT开发笔记-01 | 初识 i.MX RT1062 跨界MCUi.MX RT
    发表于 12-01 13:51 2次下载
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>开发笔记-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中断向量控制<b class='flag-5'>器</b>NVIC(按键中断检测)

    RT-Thread & NXP 发布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界处理器系列。该系列下又包括 i.MX RT1020、i.MX
    发表于 12-07 13:06 2次下载
    <b class='flag-5'>RT</b>-Thread & NXP 发布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    适用于i.MX RT500和i.MX RT600 MCU的Xtensa音频框架介绍

    众多的恩智浦i.MX RT跨界处理器当中,您可能会发现有些系列除了Arm内核之外还结合了高性能的DSP,利用集成DSP的技术优势,可提供高性能音频数字信号
    的头像 发表于 11-10 09:39 3742次阅读

    NXP i.MX RT117F 交叉处理器

    。以下是本周新品情报,请及时查收: 支持3D面部识别 NXP i.MX RT117F 交叉处理器   贸泽电子即日起开售NXP Semiconductors 的i.MX
    的头像 发表于 01-18 08:45 1429次阅读

    i.MX RT1050如何实现双大容量存储(MSC)设备

    i.MX RT1050如何实现双大容量存储(MSC)设备
    的头像 发表于 10-30 17:08 1154次阅读
    <b class='flag-5'>在</b><b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1050<b class='flag-5'>上</b>如何<b class='flag-5'>实现</b>双大容量存储(MSC)设备

    恩智浦i.MX RT1180跨界处理器如何选型

    i.MX RT1180 跨界处理器包含众多的型号,以满足客户对不同性能与价格的需求,今天就先给大家说说如何选型。
    的头像 发表于 09-28 14:01 2055次阅读
    恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1180跨界<b class='flag-5'>处理器</b>如何选型