俵言

しがない社会人が書く、勉強とかのこと。最近は機械学習や kaggle 関連がメイン。

小ネタ:Albumentations の border_mode 早見表

最近ブログ書いてないので小ネタをば。本当は numpy ネタを書くつもりでしたが、こっちがすぐ書き終わったので。

PadIfNeededRotate を使うときに border_mode を指定する*1わけですが、毎回どれがどれかわからなくなって検索しているのでまとめることにしました。
Albumentations*2 の公式 docs に書かれているように、boder_modeOpenCV*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一番端の値(ah)について対称になるように埋める

自分で 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

 おわりに

これで一々検索せずに済む...やったぜ。