閉じる

boost::gil::resample_subimageのバグなのかな?

boost::gil::resize_viewを使ってビューのリサイズを行った際、リサイズ前後のサイズの組み合わせなのか前後どちらかのサイズに依存するのか、左端に黒いラインが入ることがある。
調べてゆくと、正確には左端の 1ピクセルが描画されない結果だと言うことがわかる。*1
さらに詳しく調べてみると、resize_view – resample_subimage – resample_pixels – sampleと呼び出されていって、リサイズ後の左端に対応するリサイズ前の位置を調べようとして範囲外になり、描画スキップとなっている。
なぜ範囲外になるかと調べてゆくと、resample_subimageで作成しているマトリクスによる計算結果*2 に行き着くのだけど、計算の誤差っぽいんだよな。
とりあえず、今回の件では描画されないかもしれない部分に対してあらかじめ固定色で塗りつぶすことで用は足りるのだけど、根本的な対処がしたいよなぁ


*1 リサイズ先として新規に作成したイメージが真っ黒なため、黒いラインが入っているように見える

*2 回転の軸の画像中央へのシフト、拡大/縮小、回転が含まれている。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)