1. 程式人生 > >Boost.GIL:通用影象庫

Boost.GIL:通用影象庫

在任何包含圖表、影象處理和視訊,還有畫素資料可變性表徵(色域、位深度、頻道預定、平面/隔行、平衡政策)的專案中,影象都是一個基本結構。很難寫出和影象相關的即通用又高效的程式碼。GIL是一個C++通用庫,可以使用它寫出一般的影象演算法,其效能和手寫處理特定型別影象的演算法相似。

主要特性

  • 通用性:使用影象相關演算法提取影象特徵。使用GIL可以立刻寫出程式碼,適用於任何影象型別。
  • 執行性:速度在GIL庫的設計中起主要作用,一般演算法在速度上和手工編寫處理特定影象型別的程式碼類似。
  • 靈活性:編譯型別引數解決方案可以使程式碼快速執行,但是嚴重限制了程式碼的靈活性。GIL庫可以在執行時指定任何影象型別(只需要消耗和虛擬呼叫差不多的極少的效能)。
  • 延展性:GIL是一個基於概念的庫,幾乎允許每一個部分被替代,包括頻道、色域、畫素、畫素迭代器、定位器、視角、影象和演算法。
  • 相容性:GIL庫被設計成一個STL和Boost的補充庫。通用STL演算法經過專門優化,可以用於畫素操作,而GIL庫本身就可以處理現有的未經加工的畫素資料。

最新版本

  • 版本:2.1.1
  • 釋出日期:2007年9月15日

安裝

GIL只包含標頭檔案,不需要連結任何庫,也不需要編譯Boost。網站中的標頭檔案足夠用於大多數專案。

示例

介面和程式碼

示例為GIL在程式中的用法,實現功能為輸入8位無符號灰度影象輸出8位有符號灰度影象。其中gray8c_view_t是GIL定義的型別,表示8位灰度源影象(用符號“c”表示);同理,gray8s_view_t表示8位有符號整型型別(用符號“s”表示)。

C++

#include <boost/gil/gil_all.hpp> using namespace boost::gil; void x_gradient(const gray8c_view_t& src, const gray8s_view_t& dst) { assert(src.dimensions() == dst.dimensions()); ... // compute the gradient }

1

2

3

4

5

6

#include <boost/gil/gil_all.hpp>

using namespace boost::gil;

void x_gradient(const gray8c_view_t& src, const gray8s_view_t& dst) {

    assert(src.dimensions() == dst.dimensions());

    ...    // compute the gradient

}

資源連結