fuyanwen

fuyanwen

0个粉丝

3

问答

0

专栏

0

资料

fuyanwen  发布于  2018-06-29 09:20:38
采纳率 0%
3个问答
4513

关于海思ive中HI_MPI_IVE_Map函数的使用

 
函数定义如下:
HI_S32 HI_MPI_IVE_Map(IVE_HANDLE *pIveHandle,IVE_SRC_IMAGE_S *pstSrc,
        IVE_SRC_MEM_INFO_S *pstMap, IVE_DST_IMAGE_S *pstDst,HI_BOOL bInstant);
请问参数pstMap如何赋值,而且根据函数定义中的参数详解中有如下说明
IVE_SRC_MEM_INFO_S   *pstMap          Input lookup table. Must be an U8 array of size 256.
那如果只是一个256的数组,如何实现映射了?
请大家帮忙,谢谢。
我来回答
回答11个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-06-29 10:20:31
认可0
文档上写的很清楚: 对源图像中的每个像素,查找Map 查找表中的值,赋予目标图像相应像素查找表中的值

计算公式如下:
I out(x, y) =  map[I (x, y)]

举例来说: 图像为2x2, 内容为
100, 70
  10, 35

那么输出为
map(100), map(70)
map(10) , map(35)  

为什么map 是256的数组呢? 因为8bit数 的范围是 0 到 255

fuyanwen

0个粉丝

3

问答

0

专栏

0

资料

fuyanwen 2018-06-29 11:54:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=100419&ptid=50979]zhuangweiye 发表于 2018-6-29 10:20[/url]
文档上写的很清楚: 对源图像中的每个像素,查找Map 查找表中的值,赋予目标图像相应像素查找表中的值

计 ...[/quote]

谢谢你的回答了,意思是不是可以理解为,就是获取pstSrc图像的每一个灰度值作为pstmap中的下标索引值,把pstmap中对应下标的值赋给pstDst,是这样理解吗?
那这个函数的用途主要是在哪方面了?
我以为这个map算子会和opencv中的remap有类似的功能了,现在我想对opencv中的remap函数进行一些优化或者替换,因为在3520中处理速度比较慢,请问有什么方法吗?
谢谢你的指点。

vcil

0个粉丝

4

问答

0

专栏

0

资料

vcil 2018-08-10 15:36:48
认可0
好帖,顶起来:lol

jim_xiao

0个粉丝

1

问答

0

专栏

0

资料

jim_xiao 2019-04-26 14:21:18
认可0
关键是怎么用?映射表如何添加进去,海思文档都没相关介绍:D

微信用户

0个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-05-05 14:25:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=100419&ptid=50979]zhuangweiye 发表于 2018-6-29 10:20[/url]
文档上写的很清楚: 对源图像中的每个像素,查找Map 查找表中的值,赋予目标图像相应像素查找表中的值

计 ...[/quote]

遇到了 问题,   8bit 尝试没问题,  8bit 到16位的。 U8C1->U16C1  这种模式, 理解是 u16 这个是宽增加2倍,别的保持不变。 但是报错还是参数有问题。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-05-05 14:29:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=142870&ptid=50979]alaode 发表于 2019-5-5 14:25[/url]
遇到了 问题,   8bit 尝试没问题,  8bit 到16位的。 U8C1->U16C1  这种模式, 理解是 u16 这个是宽增加 ...[/quote]

可能的话, 把代码贴一下, 把实际的参数值打印出来

不然和猜谜没啥区别

微信用户

0个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-05-05 14:46:35
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=142871&ptid=50979]zhuangweiye 发表于 2019-5-5 14:29[/url]
可能的话, 把代码贴一下, 把实际的参数值打印出来

不然和猜谜没啥区别[/quote]

   
        s32Ret=HI_MPI_IVE_Map(&hIveHandle,&stMainImage, &stMem_uv, &stImageuv,&ctrl,1);

        stMainImage  这个是HI_MPI_VPSS_GetChnFrame 后  
                stMainImage.enType = IVE_IMAGE_TYPE_U8C1;
                stMainImage.pu8VirAddr[0] = stFramehd1.stVFrame.pVirAddr[0];
                stMainImage.u32PhyAddr[0] = stFramehd1.stVFrame.u32PhyAddr[0];
                stMainImage.u16Width = stFramehd1.stVFrame.u32Width;
                stMainImage.u16Height = stFramehd1.stVFrame.u32Height;
                stMainImage.u16Stride[0] = stFramehd1.stVFrame.u32Stride[0];

stMem_uv   一个SAMPLE_COMM_IVE_CreateMemInfo 的内存分配。先没赋值,默认把先。

stImageuv 为   上图吧。

                stImageuv.enType = IVE_IMAGE_TYPE_U16C1;
                stImageuv.pu8VirAddr[0] = stFrameuv.stVFrame.pVirAddr[0];
                stImageuv.u32PhyAddr[0] = stFrameuv.stVFrame.u32PhyAddr[0];
                stImageuv.u16Width = stFrameuv.stVFrame.u32Width;
                stImageuv.u16Height = stFrameuv.stVFrame.u32Height;
                stImageuv.u16Stride[0] = stFrameuv.stVFrame.u32Stride[0];
                stImageuv.u16Stride[1] = stFrameuv.stVFrame.u32Stride[1];
                stImageuv.u16Stride[2] = stFrameuv.stVFrame.u32Stride[2];



重点是,stImageuv.u16Width  我设置的是2倍的 stFramehd1.stVFrame.u32Width。 高度不变。



下面是uv的分配。
        printf("stFrameuv  HI_MPI_VB_GetBlock!!\n");
        do {
                VbBlk3 = HI_MPI_VB_GetBlock(VB_INVALID_POOLID, stFramehd1.stVFrame.u32Stride[0] * stFramehd1.stVFrame.u32Height*2 , NULL);
        } while (VB_INVALID_HANDLE == VbBlk3);       
        poolID =  HI_MPI_VB_Handle2PoolId(VbBlk3);
        printf("stFrameuv        HI_MPI_VB_GetBlock  end!!\n");
                memset(&stFrameuv, 0, sizeof(stFrameuv));
                stFrameuv.stVFrame.u32PhyAddr[0] = HI_MPI_VB_Handle2PhysAddr(VbBlk3);
                stFrameuv.stVFrame.u32PhyAddr[1] = stFrameuv.stVFrame.u32PhyAddr[0] + stFramehd1.stVFrame.u32Stride[0] * stFramehd1.stVFrame.u32Height*2;
                stFrameuv.stVFrame.u32PhyAddr[2] = stFrameuv.stVFrame.u32PhyAddr[1];

                stFrameuv.u32PoolId                                        = poolID;
                stFrameuv.stVFrame.u32Width                 = stFramehd1.stVFrame.u32Width*2;
                stFrameuv.stVFrame.u32Height                 = stFramehd1.stVFrame.u32Height;
                stFrameuv.stVFrame.u32Field                 = stFramehd1.stVFrame.u32Field;
                stFrameuv.stVFrame.enPixelFormat         = stFramehd1.stVFrame.enPixelFormat;

                stFrameuv.stVFrame.enVideoFormat          = stFramehd1.stVFrame.enVideoFormat;
                stFrameuv.stVFrame.enCompressMode         = stFramehd1.stVFrame.enCompressMode;

                stFrameuv.stVFrame.pVirAddr[0] = (HI_U32*)HI_MPI_SYS_Mmap(stFramev.stVFrame.u32PhyAddr[0], stFramehd1.stVFrame.u32Stride[0] * stFramehd1.stVFrame.u32Height*2 );
                stFrameuv.stVFrame.pVirAddr[1] = stFramev.stVFrame.pVirAddr[0] + stFramev.stVFrame.u32Stride[0] * stFramehd1.stVFrame.u32Height*2;
                stFrameuv.stVFrame.pVirAddr[2] = stFramev.stVFrame.pVirAddr[1];

                stFrameuv.stVFrame.u32Stride[0]         = stFramehd1.stVFrame.u32Stride[0]*2;  //1920
                stFrameuv.stVFrame.u32Stride[1]         = stFramehd1.stVFrame.u32Stride[1]*2;
                stFrameuv.stVFrame.u32Stride[2]         = stFramehd1.stVFrame.u32Stride[2]*2;

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-05-05 14:59:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=142872&ptid=50979]alaode 发表于 2019-5-5 14:46[/url]
s32Ret=HI_MPI_IVE_Map(&hIveHandle,&stMainImage, &stMem_uv, &stImageuv,&ctrl,1);

        stMainIm ...[/quote]

map这个算子 大部分芯片只支持U8C1->U8C1

只有少部分支持U8C1->U16C1 (Hi3519V100/Hi3519V101/Hi3516CV300/Hi3559V100/Hi3559AV100ES)

微信用户

0个粉丝

87

问答

0

专栏

3

资料

微信用户 2019-05-05 15:09:33
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=142875&ptid=50979]zhuangweiye 发表于 2019-5-5 14:59[/url]
map这个算子 大部分芯片只支持U8C1 ->U8C1

只有少部分支持U8C1 ->U16C1 (Hi3519V100/Hi3519V101/Hi351 ...[/quote]

是的, 我的是hi3519v101.  定位到问题了。 原来不太理解stride  在 ive_image_s 和ive_data_s。原来用的都是8bit 所有不用考虑, 16bit 的就要小心了。

cxd0725

0个粉丝

2

问答

0

专栏

0

资料

cxd0725 2018-07-03 09:59:00
认可0
学习了…………

knk

0个粉丝

12

问答

0

专栏

0

资料

knk 2018-08-08 18:10:24
认可0
学习了。。。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区