Version 5 (modified by 14 years ago) ( diff ) | ,
---|
Boost.勉強会 #2 ノート
Boost 世界一周の旅
- Property Tree
木構造を持つデータプロパティ管理。 XML (RapidXml), JSON, INI ファイルパーサ提供
boost::property_tree::ptree型
- Uuid
ユニークID生成。乱数生成器のデフォルトは mt19937
- Range2.0
Rangeアルゴリズム (イテレータの組ではなく範囲を渡す)、 Rangeアダプタ (遅延評価) が追加された。
要チェック→Oven
- Filesystem v3
path 日本語対応等
string と wstrint の両方を使用するためにオーバーロードが必要なくなった?
- Polygon
平面多角形 (2D) のアルゴリズム。
- Meta State Machine (MSM)
新たな状態マシンライブラリ。状態遷移表を直接記述。
まとめ
- 1.44.0 はかなり充実。特に Range 2.0 はオススメ
Boost.Graph 入門
グラフ
- 頂点 vertex と辺 edge からなる
- 配列・線形リンクリスト (直線、木)
有向グラフ・無向グラフ
- 辺に向きがあるか否か
操作
頂点と線を作ったり、できたグラフの中を辿ったり…
JR 最長片道切符
とにかく遠回りして一番長い距離の切符 (のルート) を求める
- →挫折した。データ入力が大変 (そりゃそーだw)
- でも北海道だけは全部入力したよ。
- プログラムは作ったよ。
- 長万部駅を検索の起点にしたよ (青函トンネル超えた最初の駅)
- 実際動かしてみたよ
なぜ Boost.Graph?
- イテレータでのアクセスがある
- 辺・頂点
- 一部は pair<iter, iter> で Range !
- malloc/for → STL(コンテナ/アルゴリズム)
質疑応答
- 直線、木もグラフだよね?
- →正確にはサブセット?
- テンプレート引数の書く順番間違えたら MS-VS だとエラー箇所の赤線表示でる?
- でた。 VS2010パネェ
Boost.GIL 画像処理入門
Generic Image Library
目標
(初歩的な) 動体検出ができるようになる!
GIL とな?
- 画像データ保持用コンテナとイテレータ。
前提知識
- 色空間
- RGB/RGBA ... o
- HSV ... x
- YCbCr ... x
- CMY/CMYK ... o
- L*a*b* ... x
- Grayscale ... o
- etc...
- 種類
- ベクタ ... x
- ラスタ ... o
- 画像の構造
- ピクセルの集まり
- データ構造
- データの持ち方は多様。配列を色別に分けたり分けなかったり…
- 動画像の構造
- コマ送り
基礎の基礎
- 画像の入出力
- JPEG, PNG, TIFF をサポート
rgb8_image_t img; jpeg_read_image("hoge.jpg", img); // 入力 jpeg_write_view("fuga.jpg", view(img)); // 出力
- JPEG, PNG, TIFF をサポート
- 型宣言は ColorSpace, BitDepth, ClassType の組み合わせで表現
- ColorSpace: rgb, bgr, cmyk, ...
- BitDepth: 8, 8s, 16, 16s, 32f, ...
- ClassType: image, view, loc, pixcel, ptr, ...
- 画像へのアクセス
- 直接 Image は操作しない。 Image View を使用
jpeg_read_image("hoge.jpg", img); // 読み込み step1 = view(img); // View を取得 step2 = subimage_view(step1, 200, 300, 150, 150); // 切り取り step3 = color_converted_view<rgb8_view_t, gray8_pixel_t>(step2); // グレースケール化 step4 = rotated180_view(step3); // 回転 step5 = subsampled_view(step4, 2, 1); jpeg_write_view("hoge_transform.jpg", step5);
- 直接 Image は操作しない。 Image View を使用
- ピクセルへのアクセス
- image_view::operator()
- Iterator
- 画像の上から下に向かって水平行ごとに走査する。
動体検出アルゴリズム作成
フレーム間の差分を引くところ
- グレースケール化した画像の同位置ピクセルを引き算するだけ
参考情報
- http://sites.google.com/site/twinkleofsilence/
- http://sssm.sakura.ne.jp/dev/gil.html
- http://sourceforge.net/projects/stllcv/
質疑応答
- ビューを 1 から作ることは可能?
- 作れるけど簡単じゃないかも…
- ビューへの操作をイメージに固定することは可能?
- イメージへコピーするメソッドがある
- 色空間の独自実装は可能?
- 比較的簡単らしい
- 型名が Boost っぽくない
- 実は typedef 。裏ではすんげー長いテンプレート引数が…
- ビューのフィルタ操作による変換コストは?
- 色空間の変換を除けばコストは 0 のハズ
- 中身が const な image を作るには
- rgb8c_image_t のように BitDepth のうしろに "c" が入った型名を使う
- 関数が view を受け取るときは const 参照で受け取ることが推奨されている。この const は view の設定が const なのであって、画像自体が const になるわけではない。
Note:
See TracWiki
for help on using the wiki.