📄 yuv - rgb 格式分析及快速查表算法设计 - colorant的专栏 - csdn博客.htm
字号:
<DIV>而RB本身就只和YU或YV相关,所以这样我们一共需要4个8*8的二维表格,需要占用4乘2的16次方共256K内存。基本可以接受。但是对于手机这样的嵌入式运用来说,还是略有些大了。</DIV>
<DIV>进一步分析,我们可以看到,因为在手机等嵌入式运用上我们最终是要把数据转换成RGB565格式送到LCD屏上显示的,所以,对于RGB三分量来说,我们根本不需要8bit这么高的精度,为了简单和运算的统一起见,对每个分量我们其实只需要高6bit的数据就足够了,所以我们可以进一步把表格改为4个6*6的二维表格,这样一共只需要占用16K内存!在计算表格元素值的时候还可以把最终的溢出判断也事先做完。最后的算法如下:</DIV>
<DIV style="MARGIN-LEFT: 21pt"> </DIV>
<DIV style="MARGIN-LEFT: 21pt">y = (YUVdata[Y1POS] >> 2);</DIV>
<DIV style="MARGIN-LEFT: 21pt">u = (YUVdata[UPOS] >> 2);</DIV>
<DIV><SPAN> v = (YUVdata[VPOS] >> 2);</SPAN></DIV>
<DIV><SPAN> </SPAN></DIV>
<DIV><SPAN> r = yv2r_table[ y ][ v ];</SPAN></DIV>
<DIV><SPAN> g = yig2g_table[ y ][ uv2ig_table[ u ][ v ]
];</SPAN></DIV>
<DIV><SPAN> b = yu2b_table[ y ][ u ];</SPAN></DIV>
<DIV><SPAN> </SPAN></DIV>
<DIV><SPAN> RGBdata[1] =( (r & 0xF8) | ( g >>
5) );</SPAN></DIV>
<DIV><SPAN> RGBdata[0] =( ((g & 0x1C) << 3) | ( b
>> 3) );</SPAN></DIV>
<DIV> </DIV>
<DIV>这样相对部分查表法,我们增加了3次移位运算,而进一步减少了4次加法运算和6次比较赋值操作。</DIV>
<DIV>在计算表格元素数值的时候,要考虑舍入和偏移等因数使得计算的中间结果满足数组下标非负的要求,需要一定的技巧:</DIV>
<DIV>采用完全查表法,相对于第一种算法,最终运算速度可以有比较明显的提高,具体性能能提高多少,要看所在平台的CPU运算速度和内存存取速度的相对比例。内存存取速度越快,用查表法带来的性能改善越明显。在我的PC上测试的结果性能大约能提高35%。而在某ARM平台上测试只提高了约15%。</DIV>
<DIV><STRONG><FONT size=5><SPAN>3.4<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN>进一步的思考</FONT></STRONG></DIV>
<DIV>实际上,上述算法:</DIV>
<DIV><SPAN> RGBdata[1] =( (r & 0xF8) | ( g >>
5) );</SPAN></DIV>
<DIV><SPAN> RGBdata[0] =( ((g & 0x1C)
<< 3) | ( b >> 3) );</SPAN></DIV>
<DIV>中的 (r & 0xF8) 和 ( b >> 3) 等运算也完全可以在表格中事先计算出来。另外,YU /
YV的取值实际上不可能覆盖满6*6的范围,中间有些点是永远取不到的无输入,RB的运算也可以考虑用5*5的表格。这些都可能进一步提高运算的速度,减小表格的尺寸。</DIV>
<DIV>另外,在嵌入式运用中,如果可能尽量将表格放在高速内存如SRAM中应该比放在SDRAM中更加能发挥查表法的优势。</DIV>
<DIV><STRONG><FONT size=6><SPAN>4<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN>RGB2YUV ?</FONT></STRONG></DIV>
<DIV>目前觉得这个是没法将3维表格的查表运算化简为2维表格的查表运算了。只能用部分查表法替代其中的乘法运算。</DIV>
<DIV>另外,多数情况下,我们需要的还是YUV2RGB的转换,因为从Sensor得到的数据通常我们会用YUV数据,此外JPG和MPEG实际上也是基于YUV格式编码的,所以要显示解码后的数据需要的也是YUV2RGB的运算
8 )运气运气。</DIV>
<P class="right articalinfo">发表于 @ <A title=permalink
href="http://blog.csdn.net/colorant/archive/2007/12/03/1913162.aspx">2007年12月03日
10:00:00</A>|<A title=评论
href="http://blog.csdn.net/colorant/archive/2007/12/03/1913162.aspx#FeedBack">评论(<SPAN
id=FeedbackCount_1913162>loading...</SPAN>
<SCRIPT type=text/javascript>AddFeedbackCountStack("1913162")</SCRIPT>
)</A>|<A title=编辑
href="http://writeblog.csdn.net/PostEdit.aspx?entryId=1913162">编辑</A></P><SPAN
id=Post.ascx_ViewPost_PreviousAndNextEntriesDown>
<H3 class=pagego><A
href="http://blog.csdn.net/colorant/archive/2007/12/03/1913200.aspx">新一篇: Camera
图像处理原理分析- 色彩篇 一</A> | <A
href="http://blog.csdn.net/colorant/archive/2007/12/03/1913119.aspx">旧一篇: c语言核心技术
一</A></H3></SPAN></DIV></DIV>
<DIV class=commentslist>
<SCRIPT type=text/javascript>
var CurrentEntryId = '1913162';
var CurrentUserName = 'colorant';
</SCRIPT>
<SCRIPT src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/feedback.js"
type=text/javascript></SCRIPT>
<DIV id=commentslist></DIV></DIV>
<DIV class=spacecommment></DIV>
<SCRIPT type=text/javascript>
LoadFeedbackCount();
document.write("<img src='http://counter.csdn.net/pv.aspx?id=24' border=0 width=0 height=0>");// 计数器
</SCRIPT>
</DIV></DIV></DIV>
<DIV id=csdnblog_sidebar>
<DIV class=gutter>
<DIV class=aboutauthor>
<DL>
<DT>用户操作
<DD class=middle><A href="http://webim.csdn.net/Messages/colorant.ashx"
target=_blank>[即时聊天]</A> <A
href="http://hi.csdn.net/Admin/WriteMessage.aspx?Receiver=colorant"
target=_blank>[发私信]</A> <A
href="http://webim.csdn.net/AddFriends/colorant.ashx" target=_blank>[加为好友]</A>
<DT><A href="http://hi.csdn.net/colorant">彩色蚂蚁</A><SPAN>ID:<A
href="http://hi.csdn.net/colorant">colorant</A></SPAN>
<DD class=middle><A href="http://hi.csdn.net/colorant"><IMG alt=""
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/1_colorant.jpg"></A>
<DD class=middle><A href="http://profile.csdn.net/8/E4/edit.html"></A>
<DD>共<EM>41325</EM>次访问,排名<EM>3261</EM>,<A
href="http://hi.csdn.net/colorant/profile/contactlist/1.html">好友</A><EM>31</EM>人,<A
href="http://hi.csdn.net/colorant/profile/concernedlist/1.html">关注者</A><EM>35</EM>人。<BR>从事Linux驱动开发,BlueZ协议栈开发,喜爱摄影。
<DD>
<DT>colorant的文章
<DD>原创 40 篇
<DD>翻译 0 篇
<DD>转载 0 篇
<DD>评论 26 篇
<DT>彩色蚂蚁的公告
<DD>希望和各位Linux开发者多多交流 8)
<DT>文章分类
<DD>
<DIV class=publiclist_sidebar>
<UL>
<LI><A href="http://blog.csdn.net/colorant/category/292888.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/292888.aspx">10.Linux内核模块分析</A>
<LI><A href="http://blog.csdn.net/colorant/category/351743.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/351743.aspx">15.驱动编程</A>
<LI><A href="http://blog.csdn.net/colorant/category/293198.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/293198.aspx">20.内核杂项</A>
<LI><A href="http://blog.csdn.net/colorant/category/297036.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/297036.aspx">21.内核ARM体系结构相关</A>
<LI><A href="http://blog.csdn.net/colorant/category/292873.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/292873.aspx">30.调试工具和方法论</A>
<LI><A href="http://blog.csdn.net/colorant/category/441721.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/441721.aspx">35.调试记录和分析</A>
<LI><A href="http://blog.csdn.net/colorant/category/358448.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/358448.aspx">40.系统集成相关</A>
<LI><A href="http://blog.csdn.net/colorant/category/516900.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/516900.aspx">50.输入法</A>
<LI><A href="http://blog.csdn.net/colorant/category/528235.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/528235.aspx">60.应用开发</A>
<LI><A href="http://blog.csdn.net/colorant/category/351135.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/351135.aspx">80.读书笔记</A>
<LI><A href="http://blog.csdn.net/colorant/category/293357.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/293357.aspx">90.其它</A>
<LI><A href="http://blog.csdn.net/colorant/category/468688.aspx/rss"><IMG
alt=(RSS)
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/rss.gif"></A><A
href="http://blog.csdn.net/colorant/category/468688.aspx">T10.旅行</A></LI></UL></DIV>
<DT>收藏
<DD>
<DIV class=publiclist_sidebar>
<UL></UL></DIV>
<DT>我的其它主页空间
<DD><A href="http://colorant.yupoo.com/" target=_self>我的摄影相册</A><A
href="http://www.yupoo.com/services/feeds/photos?user_id=ff80808113090b90011327be59de425c"
target=_blank>(RSS)</A>
<DD><A href="http://colorant.blogcn.com/index.shtml"
target=_self>我的旅行摄影博客</A><A href="http://colorant.blogcn.com/rss.xml"
target=_blank>(RSS)</A>
<DT>存档
<DD>
<DIV class=publiclist_sidebar>
<UL>
<LI><A
href="http://blog.csdn.net/colorant/archive/2009/03.aspx">2009年03月(1)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2009/02.aspx">2009年02月(2)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2009/01.aspx">2009年01月(1)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/10.aspx">2008年10月(1)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/09.aspx">2008年09月(2)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/08.aspx">2008年08月(8)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/07.aspx">2008年07月(6)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/06.aspx">2008年06月(2)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/02.aspx">2008年02月(1)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2008/01.aspx">2008年01月(1)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2007/12.aspx">2007年12月(8)</A>
<LI><A
href="http://blog.csdn.net/colorant/archive/2007/04.aspx">2007年04月(7)</A></LI></UL></DIV><SPAN
id=RecentVisitors></SPAN><SPAN id=SubscriptionList>
<DT>订阅我的博客
<DD><A href="http://feeds.feedsky.com/csdn.net/colorant"><IMG alt=XML聚合
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/gif.gif"
border=0></A> <A href="http://feeds.feedsky.com/csdn.net/colorant"
target=_blank><IMG alt=FeedSky
src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/feedsky.gif"
border=0></A></SPAN> </DD></DL></DIV></DIV></DIV>
<DIV id=pubfooter>
<DL>
<DT>
<DD>Csdn Blog version 3.1a
<DD>Copyright © 彩色蚂蚁 </DD></DL></DIV></DIV></FORM>
<SCRIPT src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/counter.js"
type=text/javascript></SCRIPT>
<SCRIPT src="YUV - RGB 格式分析及快速查表算法设计 - colorant的专栏 - CSDN博客.files/ga.js"
type=text/javascript>
</SCRIPT>
<SCRIPT type=text/javascript>
try {
var pageTracker = _gat._getTracker("UA-2688088-9");
pageTracker._trackPageview();
} catch(err) {}</SCRIPT>
</DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -