生成 AI を使わず、iPhone の無料の部品だけで歯を見つけて色を変える
歯のホワイトニングを試せるアプリ(Shade Preview)は、生成 AI も外部のサービスも使わず、iPhone の Vision(顔の検出)と Lab 色空間の色の計算だけで歯を見つけて白くしています。速さを優先した理由と、「口の範囲が狭すぎる」問題の直し方です。

写真の歯を見つけて白くするだけなら、生成 AI は要りませんでした。iPhone に元からある Vision(画像から顔や唇の位置を見つける Apple の仕組み)で口の範囲を探し、Lab 色空間(明るさと色みを分けて扱う色の表し方)で色を計算すれば、速く、写真を外へ送らずに済みます。
歯のホワイトニングの仕上がりを、写真で試せる iPhone アプリ(Shade Preview)を作りました。写真から歯を自動で見つけ、施術後の白さや、放っておいた時の着色を、その場で見せます。
このアプリは、生成 AI を使っていません。外部のサービスにも写真を送りません。iPhone に元から入っている顔の検出の仕組みと、色の計算だけで動いています。この記事は、そう決めた理由と、作り方の記録です。


← 元の写真ホワイトニング後 →
前にクラウドのサービスで作ったものは、中身が分からなくなっていた
以前、同じようなものを、別の会社のクラウドのサービスの上で作ったことがありました。ところが、そのサービスにログインできなくなり、どういう構成で、どんな部品を使っていたのかも分からなくなってしまいました。

速さを優先して、生成 AI を使わなかった
写真の歯を白くするのに、生成 AI で画像を描き直す方法もあります。けれども、私たちは使いませんでした。


生成 AI を使わないので、通信を待つ時間も、使うたびの費用もかかりません。写真を撮ってすぐに結果が出ます。写真を外に送らないので、利用者の顔写真の扱いを心配する必要もありません。歯を見つけて色を変えるのに使う部品は、どれも iPhone に元から入っている無料のものです。
歯を見つける手順

唇の内側の位置を見つける
写真を長い辺1280ピクセルまで縮め、Vision で唇の内側の点を取り出します。点をなめらかにつないで「口の中の範囲」を囲み、唇を巻き込まないよう、少し内側に縮めます。
範囲の中で、歯でないところを外す
範囲の中の色を、人の見え方に近い Lab という色の表し方に変えます。赤みの強いところは歯ぐきや唇、暗いところは口の奥として外します。明るさの境目は、写真ごとに自動で決めます(大津の方法という、明暗を2つに分ける計算)。残ったところが歯です。
境目をぼかして、色を近づける
歯の部分の境目をぼかし、周りになじませます。スライダーの値に合わせて、歯の色を目標の白さ(または着色の色)に近づけます。

評価で分かった、口の範囲が狭すぎる問題
歯がきちんと取れているかを確かめるため、自由に使える顔写真を22枚集め、まとめて処理して結果を見比べる仕組みを作りました。
評価してみると、問題が見つかりました。Vision の唇の内側の点は少なく、口角まで届いていませんでした。そのため、真ん中の4〜6本の歯しか範囲に入っていませんでした。
白黒の写真や、口を大きく開けた写真、横顔では、まだうまくいかないことがあります。これらは、実際に撮った写真で確かめながら直していく課題として残しています。

まとめ

- 生成 AI も外部のサービスも使わず、iPhone の Vision と色の計算だけで歯を見つけて色を変える
- 通信も費用もかからず、すぐに結果が出る。写真は端末の外に出ない
- 歯が見つからない時は推測で塗らず、指で囲うモードにする
- 22枚の写真で評価し、狭すぎた口の範囲を広げて、全部の写真で歯が取れるようにした
カメラに映したまま歯が白くなる「ライブ表示」の作り方は、こちらに書いています。
アプリ開発カメラに映したまま歯が白くなる「ライブ表示」を、iPhone の中だけで動かすカメラに映したまま歯が白くなるライブ表示を、iPhone の中だけで動かしました。毎コマの色の変換は GPU で、歯の範囲(マスク)づくりは1秒に約10回に減らして、なめらかさを保っています。映像は外へ送りません。無料版は1日1回30秒です。
この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

