本文へスキップ

色ヒストグラムとk-NNで画像分類を実装する【画像処理100本ノック】

2

目次

  1. 概要
  2. 色ヒストグラムを特徴量にするq84
  3. 最近傍のクラスを選ぶq85
  4. accuracyで評価するq86
  5. k-nnへ拡張するq87
  6. まとめ

概要

Q.84〜87では、画像を色ヒストグラムの特徴ベクトルへ変換し、距離にもとづくクラス分類、 Accuracyによる評価、k-NNへ発展させます。

色ヒストグラムを特徴量にする(Q.84)

RGB各チャンネルを4階調へ減色し、チャンネルごとに4ビンのヒストグラムを作ります。 画像1枚は合計12次元のベクトルになります。

[R0, R1, R2, R3, G0, G1, G2, G3, B0, B1, B2, B3]

画素をそのまま比較する場合と異なり、画像内で物体の位置が少し変わっても色の分布が近ければ 似た特徴になります。一方、空間的な配置は失われます。

最近傍のクラスを選ぶ(Q.85)

テスト画像と各学習画像の特徴ベクトル間で距離を計算し、最も近い学習画像のラベルを予測値に します。

const distance = Math.sqrt(
  feature.reduce((sum, value, i) => sum + (value - train[i]) ** 2, 0),
);

Accuracyで評価する(Q.86)

予測ラベルと正解ラベルを比較し、正解数をテスト画像数で割ります。分類器を作るだけでなく、 同じデータと指標で変更前後を比べられるようにします。

k-NNへ拡張する(Q.87)

最も近い1件だけでなく、距離が近いk件のラベルで多数決します。1つの学習画像のノイズや 外れ値に予測が左右されにくくなります。同数の場合の規則やkの選び方も結果へ影響します。

まとめ

この4問で、前処理、特徴抽出、距離計算、予測、評価という画像認識の最小構成を確認できます。 後続のk-meansでは正解ラベルを使わず、特徴ベクトル同士の距離からグループを作ります。

おすすめの記事

最新の記事

著者について

404

s-yoshiki

ただの備忘録です。

※外部送信に関する公表事項