Algorithm & UI/UX
AIが描くアニメの境界線:セグメンテーションとポスタリゼーションの融合
現実の写真をアニメ映画のような情緒的な背景に変える。このプロセスの核心は、AIによる「被写体の完全な保護」と、背景の「色彩の単純化」にあります。ブラウザ完結でこれを実現するための技術的アプローチを解説します。
1. MediaPipeによる高精度セグメンテーション
このツールの最大の特徴は、人物を一切加工せず、背景のみをアニメ化する点にあります。これを可能にしているのが、Googleの「MediaPipe Image Segmenter」を用いたリアルタイムセグメンテーションです。
WASM(WebAssembly)とGPUを活用することで、ブラウザ上でピクセル単位の「カテゴリマスク」を生成。これにより、複雑な髪の毛の境界なども高い精度で判別し、人物の質感を守りながら背景だけを操作する「レイヤー分離」と同等の処理を単一の画像に対して実行しています。
// AIによるセグメンテーションの実行イメージ
const results = imageSegmenter.segment(imageSource);
const maskArray = results.categoryMask.getAsUint8Array();
// マスク情報(人物か背景か)をループ内で参照し、背景ピクセルのみを抽出
for (let i = 0; i < maskArray.length; i++) {
if (maskArray[i] === BACKGROUND_CATEGORY) {
// ここに背景ピクセルに対するアニメ化処理が入ります
}
} 2. iOSの安定性を支える「ImageData」直接操作アルゴリズム
アニメ風の「ベタ塗り感」を作るには階調を減らす必要がありますが、Canvasの ctx.filter (CSSフィルタ)を高解像度画像に適用すると、特にiOS Safariなどのモバイル環境では処理が重くなり、最悪の場合ブラウザがクラッシュします。
本ツールではこの問題を回避するため、標準フィルタを一切使わず、 getImageData で取得した生ピクセルデータを直接バイナリ操作しています。独自のポスタリゼーション(階調化)と、アニメ特有の青み・彩度を足す数式を1ピクセルずつ適用することで、デバイスを問わない安定した動作と、狙い通りの「アニメ的色彩」を両立させました。
// 背景ピクセルに対するアニメ化アルゴリズム(簡略版)
const satBoost = // 独自の彩度ブースト値;
const qFactor = // 独自の階調化係数;
for (let i = 0; i < maskArray.length; i++) {
if (isBackground(maskArray[i])) {
let r = data[idx]; g = data[idx+1]; b = data[idx+2];
// 1. 輝度(Luma)ベースの彩度調整
let luma = calculateLuma(r, g, b); // ここに輝度計算の処理が入ります
// 2. 彩度のブーストと色彩オフセットの追加
r = luma + (r - luma) * satBoost + OFFSET_R; // 独自のチューニング値
b = luma + (b - luma) * satBoost + OFFSET_B; // 独自のチューニング値
// 3. ポスタリゼーション(階調をまるめてベタ塗りに近づける)
r = Math.round(r / qFactor) * qFactor;
// ...g, bも同様に処理
}
} 3. `requestAnimationFrame` による動的プレビュー最適化
「アニメ化の強さ」スライダーを動かす際、膨大なピクセル計算が走ります。UIの反応を損なわないよう、描画処理は requestAnimationFrame (RAF) を用いてブラウザの更新サイクルと同期させています。
先行する描画リクエストが完了していない場合は新しいリクエストをスキップ(またはキャンセル)するデバウンス制御を組み込むことで、モバイル端末でも操作に合わせて背景が滑らかにアニメ化される、心地よいUI/UXを実現しています。
Developer's Note
「サーバーに送信しない」というプライバシーポリシーを守るため、すべての重い処理をクライアントサイドに押し込みました。特に苦労したのは、アニメらしい「空の青さ」や「夕暮れの赤み」を、単純なポスタリゼーションだけでいかに表現するかというパラメータ調整です。
単に色数を減らすだけでは画像が汚くなるため、輝度を保ったまま彩度を上げ、さらに青成分をわずかにバイアスさせることで、日本の夏のアニメ映画のような空気感を目指しました。散らかった部屋の写真も、このツールを通せば情緒ある「アニメの一コマ」に変わります。クリエイティブな用途だけでなく、プライバシー保護の新しい形としても活用していただければ幸いです。