グレースケール画像をRGB変換させて、特徴量の抽出をしたい
機械学習に興味を持ち、画像分類に手を出したのがはじまり。GIST特徴量をpythonで取得したいけど、画像データがグレースケールしかない!って場合におススメ。
動作確認環境
- Google Colaboratory(Python 3)
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
グレースケール画像をRGB変換する
OpenCVを入れる
!pip install opencv-python
必要なものをインポート
※筆者の場合は、numpyに格納しています
import cv2
import PIL
import numpy as np
グレースケール画像をRGB変換
# グレースケール画像を読み込む
grayImg = np.array(PIL.Image.open('画像のパス'))
print(grayImg.shape) # (height, width)
# RGB変換
rgbImg = cv2.cvtColor(grayImg,cv2.COLOR_GRAY2RGB)
print(rgbImg.shape) # (height, width, 3)
cvtColorはRGB変換を含め多くに対応しているらしいです。
リファレンスはこちら
http://opencv.jp/opencv-2svn/c/miscellaneous_image_transformations.html#cvtcolor
GIST特徴量の抽出
GISTについて詳しい説明はこちら
lear-gist-pythonのダウンロード
※pipではインストールできません。
!git clone https://github.com/tuttieee/lear-gist-python.git
作業ディレクトリの移動
cd ./lear-gist-python/
libfftw3-devのダウンロード
!sudo apt-get install libfftw3-dev
GISTのダウンロード
! ./download-lear.sh
GISTのセットアップ
!python setup.py build_ext
!python setup.py install
GIST特徴量の抽出
使い方はGitHubを見てください。
feature = gist.extract(rgbImg, 16)
GIST特徴量のメリット
- 特徴量が固定長で出力される
- グリッドにする際のセル数の指定が容易(APIがある)
さいごに
グレースケールをRGB変換する機会はあまりないと思います。筆者の場合は、マルウェア解析の精度比較のため、画像化した際に使用しました。
今後、マルウェアの分類について時間があったらどこかで書き残しておきます。