Pythonは画像処理と特徴抽出に広く用いられています。特に、エッジ検出、HoG特徴、SIFT特徴などの局所的特徴の抽出が可能です。
エッジ検出
エッジ検出は画像の明るさが鋭敏に変化している箇所を検出します。Pythonでは、Sobelフィルタを用いた実装が可能です。
from skimage.filters import sobel
sobel_img_gray = sobel(img_gray)
sobel_img_gray = sobel_img_gray.astype(np.uint8)
HoG特徴
HoG特徴は輝度の勾配を角度ごとにヒストグラム化したもので、物体の形状を捉えるのに用いられる特徴量です。
from skimage import feature
fd, hog_image = feature.hog(img_gray, orientations = 8, pixels_per_cell = (8, 8), cells_per_block = (2, 2), visualize = True, multichannel = False, feature_vector = False)
hog_image = hog_image*100
hog_image = hog_image.astype(np.uint8)
SIFT特徴
SIFT特徴は特徴点の検出と特徴量の記述の2段階の処理を行います。
import cv2
sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(img, None)
img_sift = cv2.drawKeypoints(img_gray, keypoints, None, flags=4)
以上のように、Pythonを用いて画像から特徴を抽出することが可能です。これらの特徴は、機械学習の学習データとして利用することができます。