画像のリサイズを行うときに陥りがちな罠

罠シリーズ2回目。(べつにシリーズ化はしないけどね。たまたま)まず、リサイズについておさらい。リサイズとは、その名のとおり画像データの拡大または縮小のこと。 アルゴリズムとしてはどうなっているかというと、 近傍画素の情報から、画素を「補間」…

画像のアルファブレンドを行うときに陥りがちな罠

まず、アルファブレンドについておさらい。アルファブレンドは以下の式で行う。 dst = a * src1 + (1 - a) * src2 a:重み[0..1]2枚の入力画像に対応する画素値src1とsrc2に対する単純な重み付き平均の式だが、 重みaをsrc1のアルファ値にすることで、src1…

構造化『並列』プログラミング

構造化プログラミング。 といえば、順次、分岐、ループのパターンからなる、シリアルプログラミングにおける基本スタイルですね。(これらだけしか使わなくてもシリアルプログラムは書けますっていうね) C++にはあらかじめこれらのパターンを簡単に使えるよ…

画像データへの簡易文字描画

デバッグ時に画像データにお手軽に文字情報を出力したいときなどが たまにあったりなかったり。ちゃっちゃと出力したときは、GDI+を使ってます。int channel; int width; int height; unsigned char* data = new unsigned char[width * height * channel];//…

画像処理の高速化・番外編

昨日のEffectiveC++読書会#4で、 動的に確保する配列データもdeleteを使わんですむように、vector使えばいいじゃん。 vector使ってもパフォーマンスは変わらないよ。という話があがったのでそれじゃってことで、やってみました。int channel; int width; int…

Boost.勉強会 #10 のディスカッションのまとめメモ

テーブルキーパーになったので、まとめときます。 メモは写メしたけど落書きすぎて読めない。初期テーマは、「よく使うBoostライブラリを出し合おう」でしたが、 なんだかしらないうちに、C++1yだのC++2xだの話が広がっていったかんじです。まず、よく使うBo…

画像処理の高速化1

何回かに分けて画像処理の高速化について書こうと思います。画像処理の基本は、ピクセル走査。 素直に書くと、int channel; int width; int height; unsigned char* data = new unsigned char[width * height * channel];for ( int y = 0; y { for ( int x =…

C++Now! 2013 に行きたい

先日のBoost.勉強会#10 でアキラさんが C++Now!2012 のレポを紹介していたのを聞いていて なんだかモチベーションのあがるカンファレンスだなーと。英語はほとんどしゃべれない。単語ではしゃべれるので前に海外に行ったときは そこまで不便を感じた記憶はな…