您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]BF609 UYVY图像怎么转换为灰度图像
本帖共有1315个阅读者
发表帖子 发表投票 回复主题
[求助]BF609 UYVY图像怎么转换为灰度图像
mathslee(论坛新手)
mathslee
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:421
积分:43
注册时间:2013/9/23
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]BF609 UYVY图像怎么转换为灰度图像
BF609 UYVY图像怎么转换为灰度图像

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/26 19:18:14
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
用DMA把数据中的Y提出来,就是8位灰度图,如果需要RGB格式,把R,G,B全部填上Y数据就可以了

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/26 19:21:54
mathslee(论坛新手)
mathslee
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:421
积分:43
注册时间:2013/9/23
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
您好,我刚接触609,看自带的YUVLoop例程,通过MT9M114采集的视频是UYUV格式的放到了一个buffer里之后通过ADV7511送出的,我想在此基础上对图像做处理,具体怎么抽取Y呢,能不能说详细点,非常感谢...

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/27 12:03:21
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
图像排列格式是 UYVY UYVY
UYVY UYVY ,即奇数地址为Y值,简单的方法,写个for循环。假设数据存在ser_buffer[],Y提取到det_buffer[],总数据量1000个.
for(i=0;i<1000;i++)
{
if(i%2 != 0)
{
det_buffer[i/2] =  ser_buffer[i];
}
}

或者用MDMA搬运,如果你没用过DMA的话,就用上面的吧。MDMA配置比较复杂,我们下载区有例子代码,你可以看看

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/27 15:09:10
mathslee(论坛新手)
mathslee
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:421
积分:43
注册时间:2013/9/23
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
好的谢谢楼主,

想进一步请教楼主:

如果我想显示灰度的图像到监视器,是不是要填充U和V通道呢,是填充Y值还是纯色?

谢谢...

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/29 9:11:49
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

看你的监视器要求的 数据格式,监视器要求什么数据信号,就给什么信号。

如果监视器是UYVY的,而你只送过Y数据,UV数据你可以尝试填充,0,0x80,看哪个显示的正常,试试吧。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/30 11:04:48
mathslee(论坛新手)
mathslee
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:421
积分:43
注册时间:2013/9/23
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Andy,您好,

按照你的说法Y数据提取出来了,非常感谢!
我想请教一下我想用EPPI与Pdma完成抽取,采集是16bitUYVY模式,pDMA是32bit传输
adi_eppi_SubmitTxDMAData(ADI_EPPI_HANDLE const hDevice,
void            *pBuffer,
uint32_t        xCount,
uint32_t        yCount,
int32_t         xModify,
int32_t         yModify)
对应的yModify与xModify该如何取值?

谢谢。。。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/10/15 13:08:25
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我不知道你采集图像多大,DMA是8位,还是16位,还是32位。
按经验给你回答吧:
void            *pBuffer,    
你数据存储的地方,你指定一个不小于采集数据的buffer就行。
uint32_t        xCount,
这里填你一行DMA采集的次数。假如你图像一个是1000个点,你只取灰度,只能用8位DMA模式,所以填1000
uint32_t        yCount,
你图像的宽度,如你图像时1000*500,这里填500
int32_t         xModify,
每采集一个数据后,指针地址的增量,如果连续采集,在8位DMA时填1,但你只取灰度,所以每采集一次,地址增量要空1个色度,所以填2,如果采集图像不正确,你就改为1,bf533上要填1,bf54上要填2.没用过bf609,你试试
int32_t         yModify)
8位DMA时填1.





这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/10/15 17:45:59
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159293 Call, 1 Queries, Processed in 0.031250 second(s),