• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Dict.CN 在線詞典, 英語學習, 在線翻譯

            學海苦作舟,書山勤為徑

            留下點回憶

            常用鏈接

            統計

            積分與排名

            Denoise

            English study

            Web技術

            數據壓縮

            一些連接

            最新評論

            Jasper-JPEG2000的實現(Jasper庫)

            1.  Jasper

            1.1. 介紹

            JasPer軟件的核心是Jasper庫。實際上,大部分Jasper的代碼都和這個庫有關系。Jasper庫提供表現圖像、色彩(色彩空間定義)和其他相關的入口類。這些類都有很好的接口,通過這些接口程序可以和類對象交互。可以使用這個餓庫來操作圖像、導入/導出各種格式的圖像并執行基本的色彩管理操作。

            理論上,Jasper庫的結構在3.1中顯示。庫由兩個不同的類型代碼組成:

            1.  核心代碼

            2.  編碼驅動

            核心代碼提供在庫上的基本框架,而編碼驅動僅僅提供編碼和解碼各種格式圖像數據的方式。所有的應用程序接口都通過核心代碼;編碼驅動僅僅被核心代碼直接調用,其他應用程序從來不需要。

            Jasper庫中支持的編碼既是模塊的也是可擴展的。在核心代碼和編碼驅動之間有定義良好的接口;而且,對于新圖像格式的支持能在不修改庫的情況下很容易添加。為了這樣,新格式的編碼驅動要提供。而且,應用程序僅僅需要包含它要使用的圖像格式的編碼驅動。在這種情況下,應用程序能避免將內存花在從來都不使用的編碼驅動上。

            1.2. 核心代碼

            核心代碼提供下面這些關鍵的代碼。(為了避免名字沖突,所有核心代碼使用的的標識符都以jas_JAS_前綴)。

            1.2.1.    圖像類

            圖像類以jas_image_t開始。這些類用來表示一個圖形。提供了下面這些方法:

            1.  圖像創建/銷毀

            2.  查詢通用的圖像屬性(例如:引用grid的寬度和高度,色彩)

            3.  查詢組件屬性(例如:寬度、高度、grid的偏移、grid的空間、組件類型、采樣精度)

            4.  設置各種圖像屬性

            5.  裝載和保存圖像(例如:編碼/解碼)

            6.  復制圖像

            7.  添加和刪除組件

            8.  讀寫組件數據

            1.2.2.    色彩類

            這些類以jas_cmprof_t開始。這個類用來定義色彩空間。這樣的一個定義被重定向為相關的色彩空間,例如CIE XYZCIE LAB

            1.2.3.    色彩轉換類

            色彩轉換類以jas_cmxform_t開始。這個類用來在一個圖像數據上進行色彩空間轉換。一個色彩空間被轉換自兩個或更多的色彩。

            1.2.4.    流類

            jas_stream_t開始,這個類提供類似與標準C庫的I/O流輸出;其還額外提供了Jasper庫中要求的其他代碼。這些功能包括:

            1.  使用一個流(例如內存緩沖區)來關聯一個對象而不是一個文件描述符。

            2.  多個字符的獲取

            1.2.5.    固定點數字類

            這是一個模板類(一系列的宏)提供定點數字類。用來支持基本的算法操作、類型轉換。

            1.2.6.    Tag值解析類

            這個類以jas_tvp_t開始;這個類用來解析包含一個或多個tag的字符串。一個tag值對是一個“tag=value”形式的字符串。Tag值在Jasper的一些接口使用來傳遞參數。例如:這個對用在傳遞給編碼驅動的編碼和解碼操作的選項。

             

             

            除了上面的類,還有一些其他的功能:命令行解析程序(和UNIXgetopt相似)。

            1.3. 編碼驅動

            核心編碼提供一個框架來house編碼驅動。一個編碼驅動提供某特殊格式圖象的編碼和解碼。每個驅動提供三個方法:

            1.  一個編碼

            2.  解碼

            3.  驗證方法

            編碼方法將某圖像(一個jas_image_t_object)版本的轉換到一個流(一個jas_stream_t_object)。解碼方法從流中的數據來創建一個圖像。驗證方法用來測試流中的數據是否符合指定的格式;這個特殊的方法一般用來自動檢測圖像特使。

            Jasper發布中提供的編碼驅動是為了適應流數據;換句話說,圖像數據流一直在單個的pass中處理。這個設計理念去掉可尋找的流對象的需要。因此,寫接受和發送數據的應用程序、管道和其他不支持隨機訪問的是可能的。

            1.4. 圖像模型

            圖像是由一個到多個部分組成;每個部分都是由采樣的矩形數組組成。這個結構在圖3.2中描述。

            每個組件的采樣值是整數值并且是有符號或無符號的116bit/sample。采樣數據的符號和精度按照顏色來指定的。所有這些組件和圖像中相同的空間擴展相關聯,但表示不同類型的信息。

            在詮釋組件時有相當大的彈性。一個組件可以表達光譜信息(例如:彩色空間)或輔助信息(例如:一個不透明平面)。例如:一個RGB圖像有三個組件,三個組件分別和紅、綠、藍顏色面相關聯;一個RGBA(例如:帶有透明度的RGB)圖像有四個顏色面,分別和紅、綠、藍以及alpha平面相關聯。各種組件不需要以相同的分辨率來采樣;換句話說,不同組件可能有不同的采樣周期。例如:以亮度和色調表示的彩色圖像,亮度信息比色度信息更好采樣并不罕見。

            由于一個圖像可以由很多組件組成,因此必須有一個描述怎么樣用這些組件來組成一個符合圖形的方法。為了這個目的,我們使用一個整數格子叫做引用網格。引用網格為一個圖像的各個組件提供一個點,并建立他們之間相對對齊的方式。

            每個組件和一個矩形的采樣網格相關聯,這樣的網格通過四個參數來指定:水平偏移量、垂直偏移量、水平空間、垂直空間。一個組件的采樣被映射到采樣網格和引用網格交叉的點;這種情況下:采樣(i , j)被 映射到引用網格的(HO + iHS, VO+ jVS)

            為了澄清上面的文字,我們現在介紹一個范例。考慮一個有三個組件的圖形。對于第k個組件來說,讓我們指示水平網格偏移、垂直網格偏移、水平網格空間和垂直網格空間,分別對應于HOkVOkHSkVSk。假定這些參數有下面的值:

            K

            (HOk, VOk)

            (HSk, VSk)

            0

            (0,0)

            (2,2)

            1

            (2,3)

            (3,4)

            2

            (3,2)

            (4,3)

            這種情況下,各組件采樣值將對齊到引用網格上,圖3.3描述。

            圖中,顏色面0的坐標原點是(0,0);水平間隔是2個引用網格,垂直間隔是2個引用網格。其他同上解釋。

            從上面的內容,我們可以看到Jasper的圖形模式是很普通的。使用這個模型的主要約束在于使用矩形采樣。不過大多數的應用程序都使用這個采樣。同樣使用Jasper的應用程序能夠很容易的適應灰度、彩色和其他多帶數據(使用或不使用不透明信息)。

            1.5. JasPer頭文件

            為了使用Jasper庫,C文件通常必須包含主要的Jasper庫的頭文件jasper/japser.h。使用下面的預編譯指令:

            #include <jasper/japser.h>

            主要的頭文件包含了所有其他庫的頭文件。因此,為了是應用程序隔離其他庫文件名稱的改變,應用程序僅僅應該包含主頭文件。

            1.6. 初始化庫

            第一次使用庫總是初始化庫。這通過調用jas_init來完成。如果在調用該函數之前調用任何其他庫函數,結構是未知的。

            1.7. 內存分配

            所有libjasper中的內存分配都是通過jas_mallocjas_reallocjas_callocjas_free來完成的。如果有人想要將Jasper代碼導入到嵌入式平臺,應該需要將這些函數改為指定平臺的內存分配方式,而不是malloc等。

            1.8. 為新的圖形格式添加支持

            支持新圖象格式的編碼引擎能很容易被添加到Jasper中,為了能夠對新文件格式的支持,必須提供下面三個函數:

            1.  一個編碼函數

            2.  一個解碼函數

            3.  一個驗證函數

            編碼函數發布一個圖像的編碼版本到流(一個jas_image_t對象到jas_stream_t對象)。解碼函數從流(jas_stream_t對象)中的編碼數據創建一個圖像(一個jas_image_t對象)。驗證函數用來快速的測試數據流是不是正確格式的圖像數據(這個函數通常用來自動檢查圖像格式)。

            在編碼、解碼和驗證函數中的具體類型和參數可以通過檢查Jasper中已經存在的PNMBMPJPEG函數。一旦上面的函數寫好了,可以通過調用jas_image_addfmt來通知Jasper新的圖形格式引擎已經安裝。當然這個調用必須在Jasper被初始化之后調用;jas_init函數代碼給出了幾個關于如何調用jas_image_addfmt函數的例子。

            posted on 2005-12-30 15:22 笨笨 閱讀(2043) 評論(0)  編輯 收藏 引用

            久久99国产综合精品免费| 久久精品国产亚洲AV无码娇色 | 久久国产精品一区| 亚洲国产一成久久精品国产成人综合 | 中文无码久久精品| 久久久青草青青亚洲国产免观| 久久国产精品一区| 久久久久久久人妻无码中文字幕爆 | 久久国产热精品波多野结衣AV| 91精品国产91久久久久久蜜臀| 伊人 久久 精品| 99久久伊人精品综合观看| 日韩欧美亚洲综合久久| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲精品国产字幕久久不卡| 久久精品这里只有精99品| 99久久久精品免费观看国产| 久久无码中文字幕东京热| 久久精品无码av| 国产精品一区二区久久国产| 偷窥少妇久久久久久久久| 精品无码久久久久久久动漫| 国产精品福利一区二区久久| 中文字幕日本人妻久久久免费| 久久久久亚洲?V成人无码| 四虎国产精品免费久久5151| 色综合久久无码五十路人妻| 伊人久久大香线蕉无码麻豆| 久久精品国产一区二区三区不卡| 国产精品一区二区久久精品| 久久一日本道色综合久久| 久久亚洲精品国产精品| 无码伊人66久久大杳蕉网站谷歌| 国产精品久久久久a影院| 久久综合九色综合久99| 久久免费看黄a级毛片| 欧美粉嫩小泬久久久久久久 | 久久婷婷五月综合成人D啪| 久久狠狠一本精品综合网| 亚洲狠狠综合久久| 久久播电影网|