一種jpeg圖片快速拼接方法及裝置制造方法
【專利摘要】本申請?zhí)峁┮环NJPEG圖片快速拼接方法及裝置,應用于圖像處理設備,該方法包括:提取已編碼為JPEG格式的第一圖片的量化表;其中所述第一圖片包括頭部區(qū)域以及包括第一編碼數據的數據區(qū)域;根據所述量化表對第二圖片進行JPEG編碼以及拼接預處理,獲得第二編碼數據;將第二編碼數據拼接到第一圖片的數據區(qū)域。本申請可以減少對圖像處理性能的消耗,并且需要使用的內存空間也很合理。
【專利說明】一種JPEG圖片快速拼接方法及裝置
【技術領域】
[0001] 本申請涉及圖片處理技術,尤其涉及一種JPEG圖片快速拼接方法及裝置。
【背景技術】
[0002] 圖片處理技術被廣泛使用于普通民用市場以及專業(yè)市場;這些技術有些是用戶能 夠直觀感知的,比如目前智能手機支持的美顏技術,全景照相技術等等。也有一些用戶難以 感知的,比如圖片的編碼以及解碼技術等。在視頻監(jiān)控這樣的專業(yè)級市場中所涉及的圖片 處理技術往往對應著用戶極其嚴苛的需求標準,比如圖片處理的準確度或者及時性。視頻 監(jiān)控等專業(yè)領域處理的圖片數據是海量的,普通民用圖片處理技術往往難以滿足系統(tǒng)對于 及時性以及性能指標的要求而無法被借用。
【發(fā)明內容】
[0003] 有鑒于此,本申請?zhí)峁┮环NJPEG圖片快速拼接方法,應用于圖像處理設備,該方 法包括:
[0004] 提取已編碼為JPEG格式的第一圖片的量化表;其中所述第一圖片包括頭部區(qū)域 以及包括第一編碼數據的數據區(qū)域;
[0005] 根據所述量化表對第二圖片進行JPEG編碼以及拼接預處理,獲得第二編碼數據;
[0006] 將第二編碼數據拼接到第一圖片的數據區(qū)域。
[0007] 本申請還提供一種快速圖片處理裝置,應用于圖像處理設備上,該裝置包括:
[0008] 量化處理單元,用于提取已編碼為JPEG格式的第一圖片的量化表;其中所述第一 圖片包括頭部區(qū)域以及包括第一編碼數據的數據區(qū)域;
[0009] 編碼處理單元,用于根據所述量化表對第二圖片進行JPEG編碼以及拼接預處理 后獲得第二編碼數據;
[0010] 數據拼接單元,用于將第二編碼數據拼接到第一圖片的數據區(qū)域。
[0011] 相較于現有技術,本申請可以降低圖片拼接過程中的計算消耗,避免了現有技術 中先解碼,再拼接,最終再編碼引發(fā)的性能消耗巨大的問題,同時避免了拼接前不編碼導致 圖片占用的內存空間過大的問題。
【專利附圖】
【附圖說明】
[0012] 圖1A和圖1B是本申請一個例子中計算機設備的結構圖。
[0013] 圖2是本申請一個例子中JPEG圖片快速拼接的流程圖。
[0014] 圖3是本申請一個例子中編碼數據拼接的格式示意圖。
[0015] 圖4是本申請一個例子中圖片內部數據的示意圖。
[0016] 圖5是本申請一個例子中圖片合成的效果圖。
【具體實施方式】
[0017] 智能交通系統(tǒng)的電子警察相機是一種典型的視頻監(jiān)控應用。部署在系統(tǒng)中的前端 相機可以實現包括圖片編碼以及各種快速智能業(yè)務,比如車輛檢測業(yè)務、車輛違章行為分 析等智能業(yè)務。在相機檢測到車輛時,會形成一張卡口圖片,編碼格式為JPEG。但關于該 車輛的一些其它信息,比如車牌號碼、車身顏色、車標、車速等等,需要通過智能算法進行計 算,這個計算過程需要時間,因此通常多少會存在著信息滯后問題。進一步來說,在車輛違 章行為分析時,車輛在行進過程中會形成多張的違章過程證據圖片,編碼格式也為JPEG,但 是該車最終的違章行為信息必須要等到車輛行駛到遠處才可以確定,如果想在每一張違章 過程證據圖片上都疊加違章信息的0SD,也面臨信息滯后的問題。
[0018] 從以上的描述中可以看出,0SD的滯后包括0SD信息的計算時間以及0SD疊加到 圖片上的時間。為了縮短0SD疊加到圖片上的時間,可以有兩種處理方法:
[0019] 第一種方法是開辟足夠大的內存空間,將卡口圖片的原始圖片保存在內存中,此 時圖片沒有進行編碼處理,等待以上0SD信息都完整識別之后再在原始圖片上疊加0SD信 息,最后進行JPEG編碼通過網絡傳輸出去,這種方法的典型缺點是內存消耗巨大。以500萬 像素(2592x2048)分辨率為例,單張未編碼圖片的緩存空間需要2592*2048*3/2 = 7962624 字節(jié)。一種簡單的設想是增加內存,但這種設想實現難度很大,一方面如果增加內存會增加 相機的硬件成本,另一方面,由于相機的內部空間通常比較小,內部的電路板可以提供的元 器件空間非常小,增加更多的內存可能導致電路板的設計難度增加。
[0020] 第二種方法是先將原始圖片編碼為JPEG格式的圖片,可以大幅度減少圖片對內 存空間的占用,待獲得完整的需要疊加到該圖片的0SD信息,重新將JPEG圖片解碼成YUV 格式,然后疊加0SD信息再次進行JPEG編碼。該種方法所需的內存較小,但是對一副JPEG 圖片進行了額外的一次解碼和編碼,存在兩個缺點:首先,額外的解碼和編碼消耗了芯片的 計算資源,增加了相機的性能負擔;其次,圖片經過二次編碼會導致圖片質量的顯著下降。
[0021] 本申請?zhí)峁┮环NJPEG圖片快速拼接技術。在一個例子中,該技術通過計算機軟件 實現,比如視頻監(jiān)控系統(tǒng)中的前端相機可以通過運行該計算機軟件來實現該技術,當然本 申請并不排除其他諸如專用硬件ASIC,邏輯器件(FPGA)乃至固件等其他實現方式。
[0022] 請參考圖1,在本例子中,前端相機10作為一個廣義的圖像處理設備,其結構被簡 化抽象,包括處理器組合11、內存12、非易失性存儲介質13以及其他硬件14(比如傳感器 以及網絡相關組件等),其中處理器組合11可以包括單個ARM處理器或者單個DSP,當然很 多時候相機內部可以同時包括ARM處理器以及DSP,ARM處理器以及DSP都是可編程的,因 此也可以利用兩者的配合實現本申請,也就是分別在ARM處理器以及DSP上進行協(xié)調開發(fā) 來實現快速圖片處理技術。
[0023] 請參考圖2,所述處理器組合運行JPEG圖片快速拼接邏輯(上述計算機軟件)在 邏輯意義形成所述JPEG圖片快速拼接裝置,該裝置在邏輯上包括:量化處理單元、編碼處 理單元、數據拼接單元以及頭部處理單元,該裝置運行過程中執(zhí)行如下處理步驟:
[0024] 步驟201,量化處理單元提取已編碼為JPEG格式的第一圖片的量化表;其中該第 一圖片包括頭部區(qū)域以及包括第一編碼數據的數據區(qū)域
[0025] 步驟202,編碼處理單元根據所述量化表對第二圖片進行JPEG編碼以及拼接預處 理,獲得第二編碼數據;
[0026] 步驟203,數據拼接單元將第二編碼數據拼接到第一圖片的數據區(qū)域。
[0027] 專業(yè)領域的相機通常會承擔更為繁重的圖片采集以及處理工作。以視頻監(jiān)控系統(tǒng) 的前端相機為例,其不僅僅需要采集圖片,還需要通過網絡將圖片傳遞到后臺(監(jiān)控中心) 或者后端的客戶端,而且很多時候相機還可能并發(fā)對外發(fā)送多個視頻流。由于原始圖片通 常比較大,考慮到網絡帶寬的限制,因此在傳輸之前還需要對視頻流中的每一幀圖片進行 編碼。因此,在步驟201之前,相機采集到的圖片(也就是第一圖片)通常會被編碼單元編 碼為JPEG格式的圖片,編碼后的第一圖片的大小可以大大降低。
[0028] 在一個例子中,第一圖片編碼完成后并不是立刻傳輸,此時可以等待該第一圖片 對應的第二圖片的到來。假設第一圖片是相機采集到的車輛圖片,那么第二圖片可以是0SD 圖片,在一個優(yōu)選的例子中,本申請使用的0SD圖片的寬度與車輛圖片的寬度可以是相同 的。一般來說0SD信息(也簡稱0SD)可以用0SD圖片的方式來表征。0SD圖片中可以包括 各種0SD信息,比如車輛的車牌號、車輛速度、車標(品牌)、車身顏色等等。0SD信息通常 是通過智能分析等方式獲得,該計算分析過程以及生成對應0SD圖片的過程可以參考各種 較為成熟的技術加以實現。而0SD圖片(第二圖片)與車輛圖片(第一圖片)的對應關系 的建立和使用也屬于現有技術,此處不再一一詳述。
[0029] 獲得原始的0SD圖片之后需要將這個圖片與車輛圖片進行拼接,與現有技術不同 的是,本申請操作的車輛圖片是已經被編碼為JPEG格式的圖片,但本申請并不需要將JPEG 格式的圖片解碼之后再進行兩個圖片的拼接。相反,在本申請一個例子中,首先提取已編碼 為JPEG格式的車輛圖片的DQT段,DQT段的主要內容是量化表的信息。
[0030] 在JPEG文件中,YUV分量代表了亮度以及色差信息,其中Y分量代表了亮度信息, UV分量代表了色差信息(也稱為色度信息)。一般來說人眼對于Y分量更為敏感。量化表 的作用就是對于一些不需要的量進行去除,這也是JPEG編碼(事實上是有損壓縮)的重要 依據。由于后續(xù)要將0SD圖片"拼接到"車輛圖片中來,因此0SD圖片的編碼過程使用的量 化表與車輛圖片(已編碼)的量化表保持一致,這可以確保拼接后的圖片可以被正確地解 碼。
[0031] 請參考圖3以及圖4,在步驟202對0SD進行編碼,此時并不需要將0SD圖片完整 地轉變?yōu)镴PEG格式圖片,只需要獲得編碼數據以及一些后續(xù)處理所需要的信息,比如高度 信息等。0SD圖片被編碼之后所獲得的第二編碼數據會被拼接到第一圖片的數據區(qū)域中。 在這個例子中,第二編碼數據位于第一編碼數據之前。一般來說,在一個已經編碼為JPEG 格式的圖片中,編碼數據通常位于S0S(Start of Scan)以及Ε0Ι (End of Image)這兩個標 志位之間。在具體實現上,步驟202中將第二編碼數據拼接到第一圖片的數據區(qū)域具體包 括:在第一圖片查找SOS Start Of Scan標記,把所述第二編碼數據插入到所述第一圖片 S0S標記與第一編碼數據之間,以實現JPEG圖片拼接。
[0032] 在實現上,可以先找到第一圖片頭部區(qū)域S0S(Start of Scan)標志值FFDA,該 SOS字段的長度是000C(12),從而可以確定數據區(qū)域的開始位置,請參考圖4的示例,在開 始位置上插入第二編碼數據,保持第二編碼數據在第一編碼數據之前。第二編碼數據插入 進來之后,相當于整個圖片的數據區(qū)域變長。在解碼展示的時候,整個圖片中包括了 0SD圖 片以及車輛圖片,而0SD圖片將位于車輛圖片的上方。
[0033] 以上是從宏觀上描述了第二圖片編碼數據的插入拼接過程。為了確保插入的第 二編碼數據能夠完美的與第一編碼數據拼接在一起,使得拼接過程對于解碼端而言是透明 的,在步驟202中還需要進行拼接預處理。在一個例子中,拼接預處理包括DC預測數值調 整以及對齊處理。
[0034] 在一個例子中,上述DC預測數值調整過程具體包括:對第二圖片進行編碼時,將 最后一個Y、U、V子宏塊的DC預測數值設置為固定的1024。在JPEG編碼過程中前一個子 宏塊的DC預測數值是下一個子宏塊編碼的參考。相應地,解碼過程也需要參考前一個子宏 塊的DC預測數值進行解碼。在沒有拼接之前,第一編碼數據的第一個8X8的Y、U、V子宏 塊顯然并不存在前一個子宏塊,因此使用固定數值1024作為參考進行編碼和解碼。
[0035] 此時由于需要將第二編碼數據拼接進來,那么第二編碼數據的最后一個Y、U、V子 宏塊將分別成為第一編碼數據的第一個Y、U、V子宏塊的前一子宏塊。此處將第二編碼數據 的最后一個Y、U、V子宏塊的DC預測數值強制為1024可以確保第一編碼數據的第一個Y、 U、V子宏塊在解碼過程的參考DC預測數值不變以確保第一編碼數據在解碼過程中能夠被 正確解碼,若不進行強制1024的設置,則可能會造成第一編碼數據的解碼錯誤。
[0036] 值得注意的是,第二編碼數據的最后一個Y、U、V子宏塊的DC預測數值被強制為 1024,通常意味著數據被修改(原值均為1024的情況非常少見),在理論上會影響到0SD 圖片的解碼展示效果,也就是失真。然而由于修改僅僅涉及最后的子宏塊,影響的區(qū)域只有 8X8 = 64個像素的區(qū)域,因此在正常展示的過程中,幾乎很難被人眼所察覺到。也就是說 圖片失真只是理論上的代價,但圖片失真的現實代價微乎其微,甚至可以理解為零代價,但 這可以換來兩個編碼數據的準確銜接。
[0037] 在另一方面,上述對齊處理過程包括:根據第二編碼數據長度從預設BH對應關系 表中獲得對應的BitLen與HuffCodeLen的組合,并根據該組合對第二編碼數據進行8bit 對齊。一般來說為了傳輸等處理的需要,若整個編碼數據不是8bit的整數倍,則需要進行 8bit對齊處理。在一般的處理過程中,若不考慮拼接問題,正常情況,第二編碼數據可以按 照正常操作進行對齊處理,假設最后差3個bit才能對齊,則正常的編碼可能補上對齊數 據,比如"010"或其他3bit數據,這個補齊操作對于僅僅解碼第二編碼數據而言并無實質 影響。然而由于此時第二編碼數據并不是拼接后圖片的結尾,后續(xù)還有第一編碼數據需要 繼續(xù)解碼。貝IJ "〇1〇"這樣的對齊數據會對后續(xù)第一編碼數據的解碼造成影響,可能使得后 續(xù)第一編碼數據的解碼出錯。
[0038] 針對這種情況,使用反向推算huff表BitLen長度的方式找到合適的BitLen與 HuffCodeLen組合,據此針對第二編碼數據的末尾進行8bit對齊可以很好地規(guī)避該問題。 請參考表1,使用正確的BitLen與HuffCodeLen的組合,可以使得補上的對齊數據不會對 第一編碼數據的解碼造成影響。其基本原則是:最終實際補齊的總長度為8n+m,其中η為 大于或等于〇的整數,m為理論最小補齊長度,也就是8與第二編碼數據長度除以8的余 數q,即m = 8-q。假設m = 1,查詢表1可以發(fā)現第4個表項滿足該條件,此時Bitlen與 HuffCodeLen分別為4和5。同樣的道理,假設m = 3,則查詢表1可以發(fā)現第一個表項滿足 條件。
[0039]
【權利要求】
1. 一種JPEG圖片快速拼接方法,應用于圖像處理設備,其特征在于:該方法包括: 提取已編碼為JPEG格式的第一圖片的量化表;其中所述第一圖片包括頭部區(qū)域以及 包括第一編碼數據的數據區(qū)域; 根據所述量化表對第二圖片進行JPEG編碼以及拼接預處理,獲得第二編碼數據; 將第二編碼數據拼接到第一圖片的數據區(qū)域。
2. 根據權利要求1所述的方法,其特征在于:還包括: 在所述第一圖片中查找SOF Start Of Frame標記,以獲得所述第一圖片高度信息,修 改所述第一圖片高度信息使得修改后的第一圖片高度為修改前的第一圖片高度與所述第 二圖片高度之和。
3. 根據權利要求1所述的方法,其特征在于: 其中將第二編碼數據拼接到第一圖片的數據區(qū)域具體包括: 在第一圖片中查找SOS Start Of Scan標記,以確定所述第一圖片的數據區(qū)域的開始 位置; 把所述第二編碼數據插入到所述第一圖片SOS標記與第一編碼數據之間,以實現JPEG 圖片拼接。
4. 根據權利要求1所述的方法,其特征在于: 所述拼接預處理包括DC預測數值調整,其中該DC預測數值調整具體包括: 對第二圖片進行編碼時,將最后一個Y、U、V子宏塊的DC預測數值設置為固定的1024。
5. 根據權利要求1所述的方法,其特征在于: 拼接預處理還包括對齊處理,其中該對齊處理具體包括: 根據第二編碼數據長度從預設BH對應關系表中獲得對應的BitLen與HuffCodeLen的 組合,并根據該組合對第二編碼數據進行8bit對齊。
6. 根據權利要求1所述的方法,其特征在于: 所述圖像處理設備為視頻監(jiān)控系統(tǒng)的前端相機,所述第一圖片為車輛圖片,第二圖片 為0SD圖片。
7. -種快速圖片處理裝置,應用于圖像處理設備上,其特征在于:該裝置包括: 量化處理單元,用于提取已編碼為JPEG格式的第一圖片的量化表;其中所述第一圖片 包括頭部區(qū)域以及包括第一編碼數據的數據區(qū)域; 編碼處理單元,用于根據所述量化表對第二圖片進行JPEG編碼以及拼接預處理,獲得 第二編碼數據; 數據拼接單元,用于將第二編碼數據拼接到第一圖片的數據區(qū)域。
8. 根據權利要求7所述的裝置,其特征在于:還包括 頭部處理單元,用于在所述第一圖片中查找SOF Start Of Frame標記,以獲得所述第 一圖片高度信息,修改所述第一圖片高度信息使得修改后的第一圖片高度為修改前的第一 圖片高度與所述第二圖片高度之和。
9. 根據權利要求7所述的裝置,其特征在于: 其中數據拼接單元將第二編碼數據拼接到第一圖片的數據區(qū)域具體包括: 在第一圖片查找SOS Start Of Scan標記,以確定所述第一圖片的數據區(qū)域的開始位 置;把所述第二編碼數據插入到所述第一圖片SOS標記與第一編碼數據之間,以實現JPEG 圖片拼接。
10. 根據權利要求7所述的裝置,其特征在于: 所述拼接預處理包括DC預測數值調整,其中該DC預測數值調整具體包括: 對第二圖片進行編碼時,將最后一個Y、U、V子宏塊的DC預測數值設置為固定的1024。
11. 根據權利要求7所述的裝置,其特征在于: 拼接預處理還包括對齊處理,其中該對齊處理具體包括: 根據第二編碼數據長度從預設BH對應關系表中獲得對應的BitLen與HuffCodeLen的 組合,并根據該組合對第二編碼數據進行8bit對齊。
12. 根據權利要求7所述的裝置,其特征在于: 所述圖像處理設備為視頻監(jiān)控系統(tǒng)的前端相機,所述第一圖片為車輛圖片,第二圖片 為0SD圖片。
【文檔編號】H04N19/124GK104244000SQ201410483654
【公開日】2014年12月24日 申請日期:2014年9月19日 優(yōu)先權日:2014年9月19日
【發(fā)明者】陳航鋒 申請人:浙江宇視科技有限公司