# Remove Huadian

> AI生成の古代中国女性画像に強制付加される「花鈿（かでん/huadian）」＝眉間の赤い点を 画像処理で除去する。ユーザーが「花鈿除去」「赤点消して」「眉間の赤い点取って」「huadian」 または /remove-huadian を呼んだ時にトリガー。画質・表情を維持したまま点だけ消す。

- Skill: `fukukei23/remove-huadian` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fukukei23/remove-huadian`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fukukei23/remove-huadian/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: fukukei23 (https://skillmd.com/u/fukukei23)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/fukukei23/remove-huadian

---


# remove-huadian スキル

## 概要

MiniMax image-01 等の画像生成AIは「古代中国女性」と判定すると唐代の**花鈿**（眉間の赤い装飾）を強制付加する。三国志（漢末）時代考証では不適切で、ユーザーは全カット除去を希望。

### 3アプローチの実証結果（前提知識）

| アプローチ | 結果 | 備考 |
|---|---|---|
| ① プロンプト `NO red dot / NO forehead mark` | ❌ 無効 | image-01 はネガティブ指示を無視 |
| ② 前髪で物理隠蔽 | △ 点は消えるが画質・可愛さ低下 | ユーザー却下 |
| **③ 画像処理で点だけ除去** | ✅ **最適解** | **本スキル**。元の良い画質を維持 |

---

## フェーズ1: 対象画像の特定

会話文脈から花鈿除去対象の画像パスを特定。複数ある場合は1枚ずつ処理。

- 指定がなければ「直近に表示・生成した画像」を対象
- 出力先は `<元ファイル名>_no-huadian.jpeg`（デフォルト）か、ユーザー指定名

---

## フェーズ2: 花鈿除去の実行

同梱スクリプトを実行:

```bash
python3 /home/yn4416/.claude/skills/remove-huadian/remove_huadian.py "<input.jpeg>" "<output.jpeg>"
```

スクリプトが自動で行うこと:
1. **OpenCV Haar cascade** で顔検出 → 眉間ROI（顔上1/3中央）を推定
2. ROI内の「赤みスコア = min(R-G, R-B)」上位を花鈿マスク化（閾値は動的・最低55）
3. マスク膨張 → 各ピクセルを周囲肌色の**中央値**で heal
4. 境界をガウスぼかしで自然になじませる
5. 修正後の残赤pxを検証出力

### 顔検出失敗時（横顔・複数顔等）

フォールバックで画像中央上半分をスキャンするが、精度が落ちる。その場合は:
- 眉間の正確な座標をユーザーに確認、または
- `_debug_grid.jpeg`（100pxグリッド付き）を生成して位置を目視把握し、
  スクリプトの `detect_forehead_center` を該当座標で上書き実行

---

## フェーズ3: 結果確認

修正版を表示してユーザー承認を得る。眉間2xクロップで before/after 比較を出すと分かりやすい:

```python
from PIL import Image
orig = Image.open("<input.jpeg>")
fixed = Image.open("<output.jpeg>")
# 眉間ROI座標をスクリプト出力から取得してクロップ
```

残赤px が 0 なら除去成功。承認後、元ファイル置換は**ユーザー確認を必ず取る**（CLAUDE.md制約）。

---

## ノウハウ（トラブルシュート）

- **座標が全然違う場所を処理した**: 顔検出の座標を疑え。私の想定（画像中心）と実際の顔位置がずれることが多い。必ずグリッド/クロップで実座標を確認すること。
- **肌色まで消えてしまう**: 赤み閾値（55）が低すぎる。`build_huadian_mask` の `threshold` を上げる。
- **花鈿が残る**: 閾値が高すぎるか、花鈿が墨画でくすんで彩度低。`min(R-G, R-B)` ではなく HSV の hue/sat を試す。
- **水墨画の花鈿はくすむ**: 鮮赤ではなく暗赤褐（RGB 170,43,24 等）。「最も赤い点」アプローチ（reddiff上位）が確実。

---

## 関連

- 実証ログ: `01_DECISIONS/ai-music/2026-06-14_銅雀台花鈿除去スキル化.md`（SSOT）
- プロンプト集: 各楽曲ディレクトリの `prompts.md` に花鈿問題の教訓を記録

