HSVカラートラッキングとマスク処理をCanvasで実装する【画像処理100本ノック】
約 2 分
目次
概要
Q.70〜72では、HSVの色相を使って対象色を抽出し、二値マスクとして画像へ適用します。 最後にモルフォロジー処理でマスクのノイズと穴を整えます。
色相によるカラートラッキング(Q.70)
RGBをHSVへ変換し、青に対応する色相範囲の画素を255、それ以外を0にします。RGB値は明るさで 3成分とも変わりますが、HSVの色相は「何色か」を分離して扱えます。
const [h] = rgbToHsv(r, g, b);
mask[index] = lowerHue <= h && h <= upperHue ? 255 : 0;
色相は0度と360度が連続するため、赤のように境界をまたぐ色を抽出する場合は範囲判定を 2つに分ける必要があります。
マスクを画像へ適用する(Q.71)
マスクが前景の画素だけ元画像を残し、背景画素を0にします。RGB各成分へ同じマスク条件を 使うことで、対象色の領域だけを表示できます。
マスクを形態学的変換で整える(Q.72)
色の閾値だけでは、小さな孤立ノイズや前景内部の穴が残ります。クロージングで穴を埋め、 オープニングで孤立した前景を除去してから元画像へ適用します。
色相による二値化
↓
クロージング(穴を埋める)
↓
オープニング(孤立ノイズを消す)
↓
元画像へマスクを適用
まとめ
カラートラッキングは色空間による領域抽出、マスキングは抽出結果の利用、モルフォロジー処理は 二値マスクの品質改善という役割です。複数の基本処理をパイプラインとして組み合わせる例に なっています。
おすすめの記事
最新の記事
よく読まれている記事
タグから探す
- javascript129
- typescript66
- node.js54
- linux54
- 画像処理48
- amazon-aws47
- アルゴリズム37
- canvas35
- html529
- 画像処理100本ノック27
- php24
- centos24
- python22
- 競技プログラミング21
- mac21
- mysql20
- opencv17
- 雑談16
- 機械学習16
- docker16
- wordpress15
- atcoder14
- apache12
- データベース12
- amazon-s312
- red-hat12
- prisma12
- ubuntu11
- github10
- git10
- react10
- mariadb10
- vue.js9
- aws-cdk9
- css38
- 可視化8
- 小ネタ8
- next.js8
- nestjs8
- amazon-lightsail7
- ブログ6
- cms6
- oracle6
- perl6
- gitlab6
- iam5
- amazon-ec25
- 資格試験5
- aws-amplify5
- curl4