小ネタ:Albumentations の border_mode 早見表
最近ブログ書いてないので小ネタをば。本当は numpy ネタを書くつもりでしたが、こっちがすぐ書き終わったので。
PadIfNeeded
や Rotate
を使うときに border_mode
を指定する*1わけですが、毎回どれがどれかわからなくなって検索しているのでまとめることにしました。
Albumentations*2 の公式 docs に書かれているように、boder_mode
は OpenCV*3 に準拠しています。
対応表
以下の通りです。
適用例(※PCで見るの推奨)は OpenCV の "画像の境界領域を作る(パディング)" のページ*4のものをお借りしてます。
mode | 対応する番号 | 適用例 |
---|---|---|
元画像 | - | |abcdefgh| |
BORDER_CONSTANT |
0 | zzzzzz|abcdefgh|zzzzzz |
BORDER_REPLICATE |
1 | aaaaaa|abcdefgh|hhhhhh |
BORDER_REFLECT |
2 | fedcba|abcdefgh|hgfedcb |
BORDER_WRAP |
3 | cdefgh|abcdefgh|abcdefg |
BORDER_REFLECT_101 |
4 | gfedcb|abcdefgh|gfedcba |
BORDER_CONSTANT
:指定した値(例ではz
を指定)で埋めるBORDER_REPLICATE
:端の値(例では左端がa
, 右端がh
)で埋めるBORDER_REFLECT
:元の境界(例では|
で示す)について対称になるように埋めるBORDER_WRAP
:元の境界(例では|
で示す)で値がループするように埋めるBORDER_REFLECT_101
:一番端の値(a
とh
)について対称になるように埋める
自分で cv2 を import して番号を確認することもできます。
>>> import cv2 >>> print( ... cv2.BORDER_CONSTANT, ... cv2.BORDER_REPLICATE, ... cv2.BORDER_REFLECT, ... cv2.BORDER_WRAP, ... cv2.BORDER_REFLECT101 ... ) 0 1 2 3 4
おわりに
これで一々検索せずに済む...やったぜ。