すべての記事

【TECH】指が本当にカメラを覆っているかを判定する

色比率、明るさ、赤の優位性、連続フレームの平滑化で、MonoPump が測定開始を判断する方法です。

コンピュータビジョンPPGカメラ信号品質
【TECH】指が本当にカメラを覆っているかを判定する

最初の指検出は単純に見えました。画面が赤ければ指がある。机の上ではしばらく動きましたが、角度を変えた瞬間に崩れました。赤い物体、暗い部屋、横から漏れる光でも、単一の条件は簡単にだまされます。

指先で覆われたスマートフォンカメラと半透明のサンプリンググリッド
BPM を計算する前に、軽いフレーム指標で覆い状態を確認します。

そこで問いを変えました。測定に使える指先フレームはどんな特徴を持つのか。そして、ただ赤っぽいだけのフレームをどう拒否するのか。

ひとつの数字に頼らない

指で覆われたフレームには複数の条件があります。赤いだけでは足りません。明るさが適切で、赤チャンネルが緑や青より強く、赤が優位な画素が十分にある必要があります。

Flow diagram Preparing diagram
View diagram source
flowchart TD
    A[中央領域をサンプリング] --> B[平均 RGB を計算]
    B --> C[明るさは有効範囲か]
    C -- no --> D[暗すぎる/明るすぎる]
    C -- yes --> E[赤比率は十分か]
    E -- no --> F[指なし]
    E -- yes --> G[赤の優位性は安定か]
    G -- weak --> H[覆いが弱い]
    G -- strong --> I[良好]

中央を使うのは理由があります。端は光漏れ、指の曲面、動きの影響を受けやすい場所です。

brightness = (avgRed + avgGreen + avgBlue) / 3
redRatio = avgRed / max((avgGreen + avgBlue) / 2, 1)
redDominance = avgRed / max(avgGreen, avgBlue)
dominantRedPixelFraction = redDominantPixels / sampledPixels

明るさは明らかな失敗を拾います。赤比率は指先らしさを見ます。赤優位の画素割合は、少数の赤い点だけで合格しないための保険です。

State diagram Preparing diagram
View diagram source
stateDiagram-v2
    [*] --> none
    none --> weakCoverage: 赤は見えるが弱い
    weakCoverage --> good: 赤の優位性が安定
    good --> weakCoverage: 圧力や位置が変わる
    weakCoverage --> none: 赤比率が下がる
    none --> tooDark: 明るさが下限未満
    none --> tooBright: 明るさが上限超過

悪い 1 フレームで測定をリセットすべきではないし、良い 1 フレームで開始すべきでもありません。MonoPump の境界は、赤いものを全部検出することではなく、次の数秒で使える波形が取れそうなときだけ始めることです。

MonoWare より

MonoPump にはこのノートの背景があります。

製品サイトを開くか、MonoPump のノートを続けて読めます。

ニュースレター

プライバシーと製品技術ノートを、ときどき送信します。