boost::gil

トップページ > コンテナとイテレータ >

abstract

必要なヘッダ
<boost/gil/gil_all.hpp> (基本ルーチン),
<boost/gil/extension/io/*_io.hpp> (画像ファイル入出力)
出来ること
画像処理
リファレンス
en, jp (チュートリアル)

sample

#include <iostream>
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_io.hpp>
using namespace std;
using namespace boost::gil;

// RGB の G 成分だけ残してみる
rgb8_pixel_t g(rgb8_pixel_t p)
{
	return rgb8_pixel_t( 0, at_c<1>(p), 0 );
}

int main()
{
	// pngファイル読み込み
	rgb8_image_t src;
	png_read_image("graph.png", src);

	// (100,100)-(300,300)を取り出して g で変換
	rgb8_image_t dst( 200, 200 );
	transform_pixels( subimage_view(view(src),100,100,200,200), view(dst), &g );

	// pngファイル書き込み
	png_write_view("result.png", view(dst) );
}

出力例

入力(Boost.Graph の説明に使ったもの):

出力:

etc

Photoshop や Illustrator で有名な Adobe 社からオープンソースライブラリとしてリリースされ、 Boost に取り込まれたのがこの GIL (Generic Image Library) です。

GIL そのものは、 ピクセル形式を抽象化して汎用アルゴリズムを「書く」ための かなりローレベルなライブラリで、便利な出来合いのアルゴリズム詰め合わせ!といった類の ものではありません。プロ向けです。プロの解説が待たれるところです。 どなたかお願いします。

Adobe Open Source のダウンロードページ で公開されている numeric.zip には幾つか簡単なアルゴリズムが含まれています。 また、上記ダウンロードページに書かれているとおり、 画像の読み書き(jpeg, png, tiff に対応)にはそれぞれ libjpeg, libpng, libtiff が必要です。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0