# 要件定義書 (Requirements Definition)

## プロジェクト概要 (Project Overview)

### プロジェクト名

SmTIAS-Capture（SmTIAS 撮影アプリ）

### 背景 (Background)

千葉大学フロンティア医工学センター 中口俊哉教授の研究グループでは，舌画像撮影・解析システム TIAS（Tongue Image Analyzing System）を用いた舌診の客観化研究を行っている．既存の TIAS は積分球を用いた大型装置であり，社会への広い普及が困難である．

### 目的 (Objective)

TIAS のスマートフォン版（SmTIAS-Capture）を開発し，舌画像撮影の小型化・簡便化を実現する．研究の初期段階として，既存 TIAS と SmTIAS-Capture で同一対象を撮影し，画像品質の差を定量的に検証する．その結果をもとに差を埋める改善を行う．

### 対象ユーザー (Target Users)

研究メンバー（初期段階）

### 位置づけ (Positioning)

研究をスムーズに進めるための援助用ソフトウェア．画像の解析・キャリブレーションは PC 側で行い，スマホアプリは撮影・保存に特化する．

## スコープ (Scope)

### やること (In Scope)

- スマートフォンのインカメラを用いた舌画像の撮影
- 撮影画像の DNG（RAW_SENSOR 10-bit Bayer）定量モード保存（メタデータ JSON・プレビュー JPEG を併せて出力）
- 撮影済み画像の一覧表示・確認・削除
- USB 経由で PC へのデータ転送を前提としたファイル管理

### やらないこと (Out of Scope)

- 画像のキャリブレーション（PC 側で実施）
- 色変換・解析（L\*a\*b\* 変換等，PC 側で実施）
- AR マーカー検出（将来対応）
- サーバー連携・クラウドストレージ
- 一般ユーザー向け UI/UX

## 撮影システム構成 (System Configuration)

### ハードウェア

| 要素 | 内容 |
| --- | --- |
| スマートフォン | AQUOS sense3（試験端末） |
| カメラ | インカメラ（フロントカメラ） |
| アタッチメント | 専用小型ケース（SmTIAS） |
| 照明 | LED ライト |
| キャリブレーション | 4 つの AR マーカー + カラーバー（PC 側で処理） |

### 撮影方法

- スマートフォンを**逆さ**にしてアタッチメントの上に置く
- インカメラが下を向き，アタッチメント内の対象物（舌模型・白板等）を撮影する
- 画面が上を向くため，撮影者はプレビューを見ながら操作できる

### 初期検証の対象物

- **白板** — 照明の均一性を評価するため
- **舌模型** — 色再現性を評価するため

※ 被験者の舌ではなく，模型と白板を使って既存 TIAS との比較検証を行う．

## ソフトウェア要件 (Software Requirements)

### 技術スタック

| 要素 | 選定 |
| --- | --- |
| フレームワーク | Flutter |
| 対象 OS | Android |
| 開発言語 | Dart |

※ 撮影の中核を Android ネイティブ（Camera2 / `DngCreator`）で実装しているため，当面は Android 専用とする．iOS 等へ展開する場合は撮影パイプラインの再実装が必要になる．

### 画面構成 (Screen Layout)

#### 撮影画面 (Capture Screen)

- インカメラの**ライブプレビュー**を表示する
- 画面の向きを固定し，**UI を上下反転表示**する（スマホを逆さに置いた状態で撮影者から正しく見えるようにする）
- シャッターボタンをタップして撮影する
- 撮影後はライブプレビューに戻り，**連続撮影が可能**（確認画面への遷移なし）

#### 一覧画面 (Gallery Screen)

- 撮影済み画像を**サムネイル一覧**で表示する
- 画像を選択して**拡大確認**できる
- 不要な画像を**削除**できる

### ファイル管理 (File Management)

| 項目 | 仕様 |
| --- | --- |
| 保存形式（定量モード） | DNG（RAW_SENSOR 10-bit BGGR Bayer）＋ メタデータ JSON ＋ プレビュー JPEG |
| 保存先 | `Pictures/MiniTIAS/` （共有ストレージ） |
| RAW 画像ファイル名 | `MiniTIAS_QM_YYYYMMDD_HHmmss.dng`（解析用本体，約 16 MB） |
| メタデータファイル名 | `MiniTIAS_QM_YYYYMMDD_HHmmss.meta.json`（撮影設定・実適用値・LSC マップ・センサ特性を内包） |
| プレビュー画像ファイル名 | `MiniTIAS_QM_YYYYMMDD_HHmmss.preview.jpg`（シャッター時のライブプレビュー JPEG をそのまま保存．アプリ内表示・確認用，解像度はプレビューストリーム依存） |
| 同秒重複時 | `MiniTIAS_QM_YYYYMMDD_HHmmss_1.dng`/`.meta.json`/`.preview.jpg`，`_2.*` ... と連番を付与 |
| データ転送 | USB 接続で PC からフォルダを直接参照・コピー．大きい DNG は `adb pull` を推奨（MTP は不安定なことあり） |
| 削除 | `.preview.jpg` 削除時は同 baseName の `.dng` / `.meta.json` も連動削除 |
| 旧 PNG 形式 | `MiniTIAS_YYYYMMDD_HHmmss.png`（コードは温存，現状の `takePicture` からは呼ばれない） |

### 実装済みの主な追加機能 (Implemented Beyond Initial Scope)

初期スコープ（撮影・保存・一覧）以降に追加された主な機能．

- 定量モード撮影（Camera2 マニュアル制御・DNG・LSC マップ・画素統計・Hot pixel map）
- タイマー撮影（3 秒カウントダウン）
- シャッター音・保存完了音の ON/OFF 切替
- カメラ診断（実機 Camera2 能力の取得．インフラのみ・UI 非表示）

### 将来的な拡張 (Future Enhancements)

- 連射撮影と再現性検証（フェーズ B）
- AR マーカー検出（撮影時のリアルタイムバリデーション）
