H264學習方法&&歷程&&資料


我的H.264學習歷程

 半年前,我知道了H.264這個名詞。那個時候決定學習H.264,可是我連資料都不知道如何收集。而且整個學校就只有我一個人在學習H.264,

找不到人交流,所以那個時候學得真的是舉步維艱,很痛苦,而能在網上認識一個學習H.264的同志真的是一件讓我很高興的事。

       後來慢慢在網上找到了一些介紹H.264的文章,當然也找到了peter李的網站,找到了流媒體論壇。那個時候在論壇裏看見別人問的問題

,我都完全不懂。看見別人要這樣資料要那樣資料,我也不知道這些資料怎麼能夠用得着。最有趣的是我居然把JVT的會議文章全部下載下來了

——當時並不知道這幾百兆的東西到底怎麼用,現在倒是知道它的用處了,看來還是沒有白下,呵呵~~~。
 
      一開始就想,先看看標準吧。因爲標準是英文的,又特別長。所以爲了避免看了後面忘記了前面,我就開始翻譯,看一段翻譯一段。可

是這個過程真的是又枯燥又痛苦。而且看着300多頁的東西,要像這樣來看完,還真是沒有勇氣和信心。想了想還是算了吧,看源代碼吧。當時

因爲知道JM是標準的測試模型,所以就看JM 了。一開始看代碼可是很老實的,每句程序,每個變量都跟蹤。等把讀入參數、初始化變量跟蹤完

了,才知道,這一段沒必要看那麼細緻,完全可以跳過的。

       就這樣看代碼看不懂的時候就查標準、去流媒體論壇問。可是論壇有好處也有壞處,好處是可以有很多人蔘與,壞處是你問的問題無論

怎樣都不可能馬上知道答案,於是一般來說對你繼續讀代碼就是一個阻礙。於是去找H.264的QQ羣,很高興找到了“H.264家園”,可是隨後很

失望——見不到人問,也見不到人回答我的問題。於是,生氣了,自己建了一個羣,這樣終於有了一個比較好的交流環境。可是那個時候的

H.264在我看來還只是一個遙不可及的華麗殿堂。QQ羣裏大家討論的問題我仍然不懂。而我爲了能儘快弄個像樣的題目來作爲畢業論文,那個時

候也沒有繼續看H.264的內容,只不過花了一個半月的時間來實現一個在今天看來比較膚淺的錯誤隱藏算法(因爲我給自己定的方向是錯誤隱藏

)。

       等到我的這篇論文完成已經是9月中旬了,而這個時候對H.264仍然是那麼陌生。因爲這段時間沒有繼續看H.264的內容,以前看過的內

容,本來理解就不透徹、印象也就不深,所以基本上都忘記了。所以這個時候的我可以說對H.264還處在只是知道個概念的階段。H.264實在是

個龐大的東西,而對於中國人來說,它又是如此的新(個人認爲),大面積的商用都還沒有開始。我要想在畢業之前在這裏面做點有價值的東

西在當時看來實在不太可能,於是只有硬着頭皮繼續研究自己的錯誤隱藏,希望能給自己的畢業論文增加一點分量。這樣就開始看JM關於幀間

錯誤隱藏的代碼。因爲JM幀間錯誤隱藏比幀內的複雜得多,涉及到很多相關的問題。所以在看代碼過程中也要對這些問題做一些瞭解,再加上

QQ羣裏的經常討論,讓我真正開始了學習H.264的起步。

       等我把幀間錯誤隱藏看完,已經是10月底了,而這個時候正好我們學院要搞一次學術研討會。爲了能給自己的畢業和以後找工作增加一

點砝碼,我決定參加。於是開始準備會議報告,通過準備會議報告,讓我對H.264的整體框架又一次做了回顧和熟悉。時間終於走到了今天,我

很高興地感覺到,自己已經站在H.264 的門口了——總是有進步的。呵呵~~~

現在自己對學習H.264也有了一些自己的想法,所以寫出來和大家一起探討:

1、第一個階段:

學習H.264,首先要把最基本最必要的資料拿在手裏。這些資料我都放在羣共享的《H.264學習必備》(這是我自己打的一個壓縮包,內容包括

:標準文檔+ 測試模型+經典文章)裏了。怎麼使用《H.264學習必備》呢?首先看裏面的《H.264_MPEG-4 Part 10 White Paper》,看完之後

再看《Video coding using the H.264 MPEG-4 AVC compression standard》和《Halsted.Press.H.264.And.MPEG-

4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook-LiB》,然後可以看《Overview of the H.264_AVC Video

Coding Standard.pdf》。這三篇文章看完後,你應該對H.264的整體框架有個比較深入的瞭解了。這個時間可能只需要花費你兩週左右的時間

(對於我這樣的笨蛋好像是要這麼長時間的。如果你碰巧用了比這個時間還長的時間,那並不說明你比我更笨,只能說明你肯定天天陪MM聊天

去了。呵呵~~~)。


2、第二階段:

然後你就可以看代碼了。這個時候你最常用的工具就是《H.264學習必備》裏的標準文檔和測試模型。看代碼也有講究。並不是像我開始那樣看

得那麼仔細,結果後來才知道遠沒有這個必要。正如peter李說的:看代碼也要先從整體框架入手。先搞懂H.264的整體框架在代碼裏是怎麼分

布的,一個功能模塊的前伸模塊和後繼模塊是什麼。也就是搞清楚整個代碼流程。這個階段對標準文檔的使用可能很少。


3、第三階段:

然後你找到一個自己感興趣的切入點,開始以此爲中心研究這個問題。你研究問題的時候應該是聯繫測試模型來研究,這個時候你就需要仔細

看代碼中對這個問題的實現了。這個階段我絕對支持你一行行代碼跟蹤,一個參數一個參數地跟蹤。而代碼中不懂的地方可能需要查標準。這

時你再來看標準文檔就有了針對性。也因爲能將標準文檔和代碼對應起來,從而看標準文檔也不覺得有太大困難,也能明白標準文檔說的是什

麼問題,在測試模型中是如何通過代碼實現的。在這個階段中,會牽連到很多H.264的相關知識,這樣通過以點帶線,以線帶面。你會對H.264

的內容認識越來越多。而你也就找到了自己的方向,最終走上了締造中國人的H.264的光輝大道,呵呵~~~


==========【注意事項】==========

1、切忌將代碼和標準文檔獨立開看,否則,你的困難會很大(當然可能是因爲我太笨了,對於“甜菜”的你可能無論怎樣都能應用自如。呵呵

~~~)。
2、對於剛開始接觸H.264的人,切忌直接看代碼和標準,哪怕是將標準和代碼結合起來看,你也會不太順利。換句話說:在沒有了解H.264整體

框架之前,你最好什麼都不要做。
3、你千萬不要覺得自己參加討論,以及幫助別人找答案(當然是在你覺得別人問的問題你似曾相識的時候)是一個浪費時間的過程。因爲你參

加討論,特別是你幫別人找答案的時候,很多你似是而非的問題卻能夠得到一個更深刻的認識。
4、學問,學問,即要問也要學。不要養成自己的依賴思想。其實你在自己查資料的過程中,也會學到很多東西。比如會知道某個問題在哪篇文

章裏能找到答案,或者收集到更多相關問題的有價值的文章……而且自己查到的到底比別人告訴的印象深刻。


        好了,好像寫完了。還沒有寫的時候覺得自己有很多感受想告訴大家。現在寫到這裏卻好像覺得沒說完,但又不知道該說什麼了。呵

呵~~~

        那些走在我前面的朋友,你們有什麼要對我說的麼?我好想聽!
        最後還要感謝很多網上的朋友在我學習過程中對我的支持,謝謝你們!!!


轉載:http://www.360doc.com/content/061017/19/11177_232935.html

 


H264學習指南

在寫這個題目是,就感到有些戰戰兢兢,在這個論壇也混了一段時間了,說實話,並沒有感覺在這裏學到太多東西。而且覺得大家討論問題的

深度不及“視頻設計芯片論壇”http://china264.68l.com/index.asp

因爲最近手頭的活基本搞完了,人也閒了下來,這麼熱的天氣,突然想寫這麼一篇文章。不過首先聲明的是我對H264並不是太熟悉。但多多少

少也學習了這麼久了,寫點心得出來對自己是個交待,同時也希望給新手們一點幫助,只要對大家有一點點幫助,也就很滿足了。

 


       好,閒話少說。如果大家是剛開始進入圖象領域,那麼先看一看"計算機圖象處理"方面的教材還是有必要的.不過稍微瞭解一下就好

了,不用太深入,在以後的對264的學習中,自然會對這些基本概念有進一步的瞭解.然後,是對264的瞭解,推薦3篇文章.

1、Halsted.Press.H.264.And.MPEG-4.Video. Compression. Video. Coding. For. Next. Generation。
   對視頻編解碼原理講得比較詳細
2、Video coding using the H.264 MPEG-4 AVC compression standard。
   更加關注於編解碼的各個模塊的實現方式
3、Overview of the H.264/AVC Video Coding Standard。
   是Thomas Wiegand的大作,對264較之以往標準的新特性都作了說明。

 

        這三篇文章絕對是瞭解264的經典文章,論壇上好像也有下載的地址。這些都是e文文章,不過相信對大多數人難度都不大。


細心將這三篇文章看完。對264就有了一個比較清楚地認識了。對一個這麼大的東西,不可能說要在短時間內全部搞懂它,因此就要根據當前自

己的情況,選擇一個具體的研究方向,比如說運動估計、熵編碼等等。我現在以我自己的研究方向運動估計作爲例子,來說一下我的學習方法

,當然肯定有班門弄斧的嫌疑,但是既然大家都不認識我,我也就不客氣了。


        從入門的3篇文章中可以看出,幀間編碼(運動估計)是264的運算複雜度的“主力”部分。那麼首先要對傳統的那些運動估計方法作

一個瞭解,如果是教育網的朋友再ieee的網站上拿motion estimation一搜就能搜到一大堆文章了,我的建議是選一篇比較新而且比較長的文章

,就是那種regular paper 而不是short paper。這些文章中一般會對本研究方向的經典方法作一個回顧和比較,這樣,從這篇文章的參考文獻

中再進一步把本研究方向的歷史和現狀作一個瞭解。


        所謂對264的研究的話,基本上就是用更加好的算法來降低264本身的計算複雜度。能夠做到不提高碼率當然好,但碼率稍微有點上升

也沒有關係,不過那就要在編碼速度上有優勢,這樣就可以說“本方法利於實時實現“啦,哈哈。就運動估計來說,傳統的3ss,4ss,ds都要知

道是怎麼回事,然後像被大家奉爲經典的mvfast,pmvfast就要專心的看一下了。最好呢,是在這些方法上,能夠提出自己的新觀點、新方法。

當然,這就不是一個純粹看論文能夠解決的問題了。大家需要對264的新特點有一個清楚了了解,然後考慮的方向可以是以前的方法應該怎麼改

善再用在264上,能夠更好地發揮作用,向連續消方法,half-way stop的方法,好像國內的都有人出論文。因爲264的幀間預測採用了可變塊大

小,因此又引出了一個問題:按什麼方法來分塊是最好的?大家在看那3篇入門的文章時,就要邊看邊思考,裏面說採用可變塊大小,就要想到

我怎麼知道該怎麼分塊;裏面提到4*4塊幀內預測有9種模式,就要想到這9種模式如何決策。也就是說,大家再看這些文章時,要想一下,我該

怎麼去實現它。這些問題其實很容易就能提出來,但要解決卻是一個大問題。


        比如說分塊吧,VBSME(variable block size motion estimation),ieee上可有不少文章,臺灣國立成功大學(?好像是這個名字)

的一篇碩士論文就寫的是這個,可見264有好多東西可以去做,養幾個博士絕對綽綽有餘啊,赫赫。其實研究方向越細,就能夠對這個方向把握

得越準確,成天看着,總會有些新想法出來吧,嗬嗬,開玩笑的說。選好了一個大的研究方向,然後就要知道現在這個方向大家都是在那些細

節上做工作。像運動估計的話,多幀預測,可變塊大小的分法,1/4像素估計精度等等都是熱門的東西,那基本上來說,跟着大家走就好了。了

解哪些東西是熱門,基本上*多看文章,同時建議大家多看e文的,最好是ieee的。我的一個博士師兄告訴我說,如果你想發某一個檔次的文章

,你就應該看比這個雜誌高一個檔次的文章。而且他說一般看個15篇左右,就應該要能夠出一篇自己的東西了。這個師兄現在畢業了,他發了

好多EI的,羨慕!


       如果“不幸”有了自己的新想法,那麼就需要驗證了。簡單一點的驗證呢,可以放在c語言或者matlab平臺下進行,但是如果要發論文

的話,基本上還是要放在JM下才有說服力。而且試驗序列最好採用標準序列。這既涉及到一個讀JM源碼和修改JM源碼的問題。我看了一段時間

,實在是好煩啊,所以,對不起,在這方面我沒有太多好的建議。但是我在修改一個幀內預測算法時,反而把預測速度減慢了,哈哈,按照常

理來說,我的方法應該比JM裏的方法好纔對,而且我在matlab下的仿真結果的確如此,很鬱悶,希望大家推薦一個看源碼的方法給我,謝謝先


        除去以上說的這些,看標準也是很必要的。200503的那個prepublished版本好像是最新的,對於翻譯標準,我認爲不是太必要,但對

瞭解標準也還是有點幫助,可以放在正常工作時間以外進行,如果大家有這麼努力的話。

轉載:http://www.360doc.com/content/061017/19/11177_232938.html

 

 

註釋:沒有得到上面作者的《H264必備資料》,找到下面的一系列資料作爲補充吧。

 

網上查找的H264資料:

 

JVT所有的會議文件都在這裏
ftp://standards.polycom.com

ITU的站點
http://ftp3.itu.ch/av-arch/

流媒體論壇的FTP
ftp://ftp.wonew.org/
用戶名:liumeiti.upload
密  碼:liumeiti.upload

清華的FTP
ftp://166.111.66.184
用戶名:video
密  碼:smth

所有JM的測試模型
http://iphome.hhi.de/suehring/tml/

中國人的H.264--AVS
http://www.avs.org.cn/

視頻序列下載網址 
http://trace.eas.asu.edu/
http://ise.stanford.edu/video.html
http://www-mobile.ecs.soton.ac.uk/peter/links/work.html
http://eeweb.poly.edu/~yao/VideobookSampleData/doc/sample/sample.htm
http://www.tkn.tu-berlin.de/research/evalvid/
http://www.cipr.rpi.edu/resource/sequences/  (有D1尺寸)
http://kbs.cs.tu-berlin.de/~stewe/vceg/sequences.htm
http://standard.pictel.com/ftp/video-site/sequences
http://www.i3s.unice.fr/~garciav/goodies.php

H.264論壇
http://bbs.lmtw.com/index.asp?boardid=108
http://bbs.edw.com.cn/index.asp?boardid=47
http://www.newsmth.net/

H.264個人站點
http://lspbeyond.go1.icpcn.com/
http://spaces.msn.com/members/naiqa/
http://blog.chinaunix.net/index.php?blogId=2553
http://h263.blogchina.com/
http://blog.csdn.net/sunshine1314/category/123075.aspx

http://www.fastvdo.com/spie04/
     H.264/AVC綜述文章,包含了新的高精度拓展(Sullivan, Topiwala, and Luthra)
http://iphome.hhi.de/wiegand/pubs.htm
     一些有關H.264/AVC的文章(Wiegand)
http://iphome.hhi.de/marpe/pub.htm
     更多的關於H.264/AVC的文章(Marpe)
http://iphome.hhi.de/suehring/tml/


 H.264/AVC參考軟件
http://www.vcodex.com/h264.html
     H.264/MPEG-4 Part 10教程 (Richardson)
http://www.vcodex.com/h264mpeg4/
     書: H.264 and MPEG-4 Video Compression (Richardson)
http://internet.impress.co.jp/books/1983/
     H.264/AVC 教科書 (日文: Okubo, Kadono, Kikuchi, and Suzuki)
http://ftp3.itu.ch/av-arch/jvt-site
     JVT Experts Group 文檔
http://www.mpegla.com/news/n_03-11-17_avc.html
     MPEG LA 關於H.264/MPEG-4 AVC專利授權的條款
http://www.videolan.org/x264.html
     一個基於GPL的H.264編碼庫,支持大部分H.264的功能
http://www.m4if.org/
     MPEG工業論壇
http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-H.264
     ITU-T 官方網頁
http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=40890&ICS1=35&ICS2=40&ICS3= H.264
     ISO 官方網頁
http://www.wwcoms.com/technology/standard.htm
     W&W Communications H.264 概述和IEEE文章


http://www.apple.com/quicktime/hdgallery/
     蘋果公司H.264素材實例

 


轉載:http://www.aimlab.cn/article/TongXinTuXiangYaSuoJiShu/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章