postprocess関数の引数のuser flipに関して、値を動かしながらその効果を確認していきます。
postprocessに関しての詳細はこちら。
リファレンスの説明書きにある回転の動きだけでなく、反転も含めた仕様になっているようなので、短いですが、一応記事にしようと思います。
user_flip
リファレンスにある説明を訳すと、
0=none, 3=180, 5=90CCW, 6=90CW, デフォルトは可能であればRaw画像の向きを使用する。
な感じ。ちなみに90CWは時計回りに90度回転、90CCWは反時計回りに90度回転。
だいぶ値が飛んだ回転のパラメータです。となると気になるのは欠番がどんな動きをするのか、試してみました。
こんな感じ。ちゃんと意味がありました。説明では歯抜けで値の説明がされており、反転系はアンオフィシャルなようです。左右上下の反転を組み合わせた8通りの動きをするようです。ちなみに、8番以降は0に戻って、繰り返しされました。8と0が同じ、9と1が同じ。な感じにループします。
設定値の下位3bitを見ている。ってとこですかね。
この反転と回転のルールですが、一応それっぽいルールはありそうです。
1番下のビットが1であれば左右反転
2番目のビットが1であれば上下反転
3番目のビットが1であれば転置
このルールに従うと、変換結果に合点がいきます。転置はいわゆる転置行列の転置です。転置ってなんだっけ?以下の変換ですね。
$$ A = \left(\begin{array}{c}a & b & c \\ d & e & f\end{array}\right)\
A^{\top} = \left(\begin{array}{c}a & d \\ b & e \\ c & f\end{array}\right) $$
このビットの組み合わせで図を書き直すと、
上の写真に対して下の写真はすべて転置されていることがわかります。組み合わせですね。回転のマジックナンバーではなく、こう覚えればわかりやすい。
まとめ
user_flipの動きは、設定値の下位3bitの値を、左右反転、上下反転、転置の意味に割り当て、それらを組み合わせた結果が出力される。
回転だけじゃないですねぇ。
コメント