画像バッファの矩形内の平均色のなるべく高速な求め方
こたろう 2013/7/14(Sun) 17:17:14|NO.55672
screenやbgscr上に描画した画像の中に置かれている、
任意のサイズの矩形範囲内に含まれる画素の色を平均化して、
モザイクの様に塗りつぶして加工する機能を作りたいと思っています。
色の平均値は、R、G、Bの成分の合計をそれぞれ足して画素数で割った数値です。
(それが適切かどうかはおいておいて)
なるべく高速に処理をしたいと思っているのですが、
pgetで1dotずつ取っているととても時間がかかって困っています。
何かよい方法は無いでしょうか。ご意見、サンプルなどあると大変有難いです。
よろしくおねがいいたします。
どこぞのだれか 2013/7/14(Sun) 18:17:04|NO.55673
gzoomでハーフトーンを使用して1x1のサイズにリサイズするとか
モザイクだけなら
小さくリサイズ(ハーフトーン使用) → 拡大
でもいいかもしれません。
KA 2013/7/14(Sun) 18:29:13|NO.55674
1:選択部分をBMPで保存(保存しなくても一括でバイナリになればOK)
2:ヘッダを無視して画像データ部分を配列に読み込み
3:各成分を合計して平均を取る
4:平均された各成分値で四角形を作る
5:元画像に上書き
3で、ほとんどの時間を潰すがドット毎に処理するより速い
(かもしれない)
test 2013/7/14(Sun) 20:05:44|NO.55677
ちなみにKAさんの方法は、 bmpを介さずに画像データを得る方法があります。
http://hspdev-wiki.net/?%BE%AE%A5%EF%A5%B6%2FVRAM%A4%F2%C4%BE%C0%DC%C1%E0%BA%EE%A4%B7%A4%C6%A4%DF%A4%EB
を参照してみましょう。
YSR 2013/7/14(Sun) 20:53:30|NO.55679
とりあえずモザイクにしたいならNO.55673、精度を求めるならVRAMを叩けばいいだろうね
SSIMを計算させたい時にこの計算をする必要があって、前者で近似したらあまりにSSIMの出力精度が悪くて諦めた記憶が……