生成 AI を使わず、iPhone の無料の部品だけで歯を見つけて色を変える

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

「生成 AI を使わずに歯を白くする」の文字と、Vision・Lab の色・端末の中だけの札

写真の歯を見つけて白くするだけなら、生成 AI は要りませんでした。iPhone に元からある Vision(画像から顔や唇の位置を見つける Apple の仕組み)で口の範囲を探し、Lab 色空間(明るさと色みを分けて扱う色の表し方)で色を計算すれば、速く、写真を外へ送らずに済みます。

歯のホワイトニングの仕上がりを、写真で試せる iPhone アプリ(Shade Preview)を作りました。写真から歯を自動で見つけ、施術後の白さや、放っておいた時の着色を、その場で見せます。

このアプリは、生成 AI を使っていません。外部のサービスにも写真を送りません。iPhone に元から入っている顔の検出の仕組みと、色の計算だけで動いています。この記事は、そう決めた理由と、作り方の記録です。

アプリで処理した写真の口元(元の写真)アプリで処理した写真の口元(ホワイトニング後)

← 元の写真ホワイトニング後 →

つまみを左右に動かして見比べられる。写真は商用利用できる無料の写真素材(Pexels)

前にクラウドのサービスで作ったものは、中身が分からなくなっていた

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

以前、別の会社のクラウドのサービスで作ったものは、ログインできなくなり構成も使っていた部品も分からなくなった。今回は自分たちのリポジトリの中で、使う部品と計算がすべて追える形で作り直した
中身の分からない仕組みは、止まった時に直せない

速さを優先して、生成 AI を使わなかった

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

夜の道路を走る車の光が、長い線になって写った写真
速さを優先して、生成 AI を使わなかった(イメージ写真)
写真の歯を白くするのに生成 AI で描き直す方法もあるが、iPhone の Vision と色の計算だけを選んだ。通信を待つ時間も使うたびの費用も無く、写真は端末の外に出ない
iPhone の中の部品と、色の計算だけで作る

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

歯を見つける手順

白い砂の丘に、足あとが続いている写真
歯を見つける手順は、順番に1歩ずつ(イメージ写真)
  1. 唇の内側の位置を見つける

    写真を長い辺1280ピクセルまで縮め、Vision で唇の内側の点を取り出します。点をなめらかにつないで「口の中の範囲」を囲み、唇を巻き込まないよう、少し内側に縮めます。

  2. 範囲の中で、歯でないところを外す

    範囲の中の色を、人の見え方に近い Lab という色の表し方に変えます。赤みの強いところは歯ぐきや唇、暗いところは口の奥として外します。明るさの境目は、写真ごとに自動で決めます(大津の方法という、明暗を2つに分ける計算)。残ったところが歯です。

  3. 境目をぼかして、色を近づける

    歯の部分の境目をぼかし、周りになじませます。スライダーの値に合わせて、歯の色を目標の白さ(または着色の色)に近づけます。

歯を見つけて色を変える3つの手順の図。口の中の範囲を決め、歯だけを残し、境目をなじませて目標の白さに近づける
歯を見つけて色を変える3つの手順

評価で分かった、口の範囲が狭すぎる問題

歯がきちんと取れているかを確かめるため、自由に使える顔写真を22枚集め、まとめて処理して結果を見比べる仕組みを作りました。

評価してみると、問題が見つかりました。Vision の唇の内側の点は少なく、口角まで届いていませんでした。そのため、真ん中の4〜6本の歯しか範囲に入っていませんでした。

白黒の写真や、口を大きく開けた写真、横顔では、まだうまくいかないことがあります。これらは、実際に撮った写真で確かめながら直していく課題として残しています。

口の範囲を広げる前と後の図。内側の唇の範囲は真ん中の4〜6本だけだったが、外側の唇の幅の88%まで広げると全部の歯が入る
範囲を広げて、全部の写真で歯が取れるようにした

まとめ

生成 AI を使わず、iPhone の無料の部品だけで歯を見つけて色を変える:要点のまとめ。生成 AI も外部のサービスも使わず、iPhone の Vision と色の計算だけで歯を見つけて色を変える
この記事の要点
  • 生成 AI も外部のサービスも使わず、iPhone の Vision と色の計算だけで歯を見つけて色を変える
  • 通信も費用もかからず、すぐに結果が出る。写真は端末の外に出ない
  • 歯が見つからない時は推測で塗らず、指で囲うモードにする
  • 22枚の写真で評価し、狭すぎた口の範囲を広げて、全部の写真で歯が取れるようにした

カメラに映したまま歯が白くなる「ライブ表示」の作り方は、こちらに書いています。

「カメラに映したまま歯が白くなる」の文字と、ARKit・Vision・GPU・端末の中だけの札アプリ開発カメラに映したまま歯が白くなる「ライブ表示」を、iPhone の中だけで動かすカメラに映したまま歯が白くなるライブ表示を、iPhone の中だけで動かしました。毎コマの色の変換は GPU で、歯の範囲(マスク)づくりは1秒に約10回に減らして、なめらかさを保っています。映像は外へ送りません。無料版は1日1回30秒です。

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • Vision
  • iOS
  • 画像処理
  • ホワイトニング
  • Lab色空間
  • Swift

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ