2008-07-01から1ヶ月間の記事一覧

インデックスカラーに対応してみた

boost::gil::color_converted_view を使って、色を変換する代わりにインデックス値から目的の色に変換することでインデックスカラーを実現することができる。 #include <boost/gil/gil_all.hpp> #include <iterator> // 8-bit index struct index_color_t {}; typedef boost::mpl::vector1<index_color_t> ind</index_color_t></iterator></boost/gil/gil_all.hpp>…

ジェネリックイメージ・ライブラリのデザインガイド

英語のレベルが中学生以下の自分がエキサイト翻訳とスペースアルクを駆使して英語の勉強がてらに翻訳中。 http://melpon.tank.jp/pukiwiki147/index.php?Memo%2F%CB%DD%CC%F5%2FGeneric%20Image%20Library%20Design%20Guide 自分のレベルではこれが限界。英…

キーワード: Locator

イテレータを多次元化したもの。 これ自身はイテレータではない。 GIL から提供されている Locator には memory_based_2d_locator と virtual_2d_locator の2つがあって、メモリ上のピクセルを扱うなら interleaved だろうが planar だろうが memory_based_…

キーワード: Step Iterator

Pixel Iterator が定義したステップ数ではなく、任意のステップ数にすることが出来る。 例えば、 画像を左右反対に走査したい場合は、reverse_iterator のようなステップ数がマイナスのイテレータが必要になる。 画像を飛び飛びでサンプリングする場合は、N …

キーワード: Iterator Adaptor

他のイテレータをラップしたイテレータ。 例えば memory_based_step_iterator は、既存のイテレータのステップを変更することの出来る Iterator Adapter である。

キーワード: Pixel Iterator

Pixel 用のイテレータ。 interleave な画像のイテレータは Pixel へのポインタ(pixel* とか packed_pixel* とか)で、planer な画像のイテレータは planar_pixel_iterator を使う。 typedef planar_pixel_iterator<const bits8*, rgb_t> rgb8c_planar_ptr_t; typedef planar_pixe</const>…

キーワード: Pixel

Channel を Layout に従って配置した値。 例えばこんな感じ。 typedef pixel<bits8, rgb_layout_t> rgb8_pixel_t; typedef pixel<bits8, bgr_layout_t> bgr8_pixel_t; bits8 やら bits16s はただの typedef だけど、これも Channel の仲間。 RGB565 なんかも、packed_pixel を使えば定義できる。 typede</bits8,></bits8,>…

キーワード: Channel

RGB の Red とか、CMYK の Cyan とか、そういう色の値のこと。 RGB565 なんかの場合はビット単位に色が分けられるんだけど、その場合でも typedef packed_channel_reference<0,5,true> channel16_0_5_reference_t; typedef packed_channel_reference<5,6,tru…

キーワード: Layout

Color Space の、実メモリ上のレイアウト。 例えば RGBA の実メモリ上のレイアウトは、ARGB なこともあるだろうし BGRA なこともあるだろう。 Color Space に実メモリ上のレイアウトを持たせるのが Layout。 typedef layout<rgba_t> rgba_layout_t; // default order</rgba_t>…

キーワード: Color Space

色空間。gray scale とか RGB とか CMYK とかそういうやつ。 boost::mpl::vector で表現されている。 例えば RGBA は、 struct red_t{}; struct green_t{}; struct blue_t{}; struct alpha_t{}; typedef mpl::vector4<red_t,green_t,blue_t,alpha_t> rgba_t; こんな感じ。</red_t,green_t,blue_t,alpha_t>