scikit-imageを使った画像の平行移動
scikit-imageという便利なライブラリーを見つけた。 画像の平行移動が2行で実装できたので、以下に示す。
import skimage as ski from skimage import io from skimage.transform import rescale def test(self): # Lennaさんの画像を読み込み img_raw = ski.io.imread(DIR+'lenna.jpg') # 512x512から32x32にリスケール img = ski.transform.rescale(img_raw, 32/512) # 左に3ピクセル、上に5ピクセルだけ平行移動 matrix_trans = ski.transform.AffineTransform(translation=(3,5)) img_trans = ski.transform.warp(img, matrix_trans) # 画像確認用の背景を白に fig = plt.figure() fig.patch.set_facecolor('white') # 元画像、リスケール画像、平行移動画像を横一列に標示 plt.subplot(331) plt.imshow(img_raw) plt.subplot(332) plt.imshow(img) plt.subplot(333) plt.imshow(img_trans) plt.show()
画像標示結果は以下の通り。
scikit-imageを使うためには、import skimage as ski
だけで済むはずなのだが、ioとかrescaleは別にimportしないとエラーが出るので、原因を調査中。
またWindows環境だと、PowerShellでコードを実行した際に、画像の表示にio.imshow()が使えないため、上記のようにmatplotlibを利用している。
ただ、画像の回転や拡大にも簡単に行えるようなので、OpenCVとNumPyの組み合わせよりも、Data Augmentationが簡単に実装できそうである。