# 入出力仕様 (Input/Output Specification)

DeepTIAS が読み込むファイルと書き出すファイルの場所・形式を定める．本書は v2.7 時点の動作を記録したものである．

## フォルダの基準 (Base Directory)

入出力のパスは，アプリの作業ディレクトリ（通常は `DeepTIAS2.7.exe` のあるフォルダ）を基準にした相対パスで決まっている．

```text
（作業ディレクトリの 1 つ上）
├── Input\
│   ├── TongueImage\             # 舌画像
│   └── CalibrationColorChart\   # カラーチャート画像（Image&Calib のみ）
├── Output\
│   └── <yyyyMMddhhmmss>\        # 実行ごとの出力フォルダ
└── （作業ディレクトリ）\
    ├── DeepTIAS2.7.exe
    ├── models\                  # 学習済みモデル
    ├── python\                  # TongueFeatures.exe
    ├── rgb2lab\                 # TongueAnalysis.exe と色補正データ
    ├── template_outputDir\              # 出力フォルダの雛形（Image）
    └── template_outputDir_withCalib\    # 出力フォルダの雛形（Image&Calib）
```

## 入力 (Input)

| モード | フォルダ | 内容 |
| --- | --- | --- |
| 共通 | `..\Input\TongueImage\` | 舌画像．フォルダ内のファイルをすべて処理対象にする（実運用では `.bmp`） |
| Image&Calib | `..\Input\CalibrationColorChart\` | カラーチャート画像．舌画像と拡張子を除いたファイル名が同じものを対応させる |

- ※ Image&Calib で対応するカラーチャート画像が無いと，エラーダイアログを出して解析を終了する（残りの画像は処理しない）．

## 出力フォルダ (Output Folder)

実行ごとに `..\Output\<yyyyMMddhhmmss>\` を作り，雛形フォルダ（`template_outputDir` など）の中身をコピーしてから結果を書き込む．

- ※ 日時の時は 12 時間表記（`hh`）のため，午前と午後で同じ名前になりうる．

```text
<yyyyMMddhhmmss>\
├── analysis.csv                     # 全画像の特徴量（1 画像 1 行）
├── 1-detection\
│   ├── 1-drawBox\                   # 検出した矩形を描いた画像
│   ├── 2-cropped\                   # 矩形で切り出した画像
│   └── 3-resized\                   # 256×256 に縮小した画像
├── 2-segmentation\
│   ├── 1-modelOutput\               # モデルの出力
│   ├── 2-binOutput\                 # 二値化した画像
│   ├── 2-binOutput(refined)\        # 小領域除去後の画像（必要な場合のみ）
│   ├── 3-resized\                   # 検出矩形の大きさに戻した画像
│   ├── 4-mask\                      # 元画像サイズのマスク
│   └── 5-extraction\                # 切り出した舌
├── 3-imgProc\
│   ├── cvtColor\                    # Image&Calib のみ
│   │   ├── LabCsv\                  # 画素ごとの L*a*b* 値
│   │   └── LabImg\                  # L*a*b* から作った画像
│   └── devideRegion\
│       ├── chiu\                    # 領域分割の結果（方法ごと）
│       ├── exChiu\
│       └── fiveClick\
└── 4-featureExtraction\
    ├── shape\                       # 形状特徴（画像ごとの CSV）
    └── region\
        └── <chiu | exChiu | fiveClick>\
            ├── colorStats\          # 色統計量（画像ごとの CSV）
            └── GLCM\                # GLCM 特徴量（画像ごとの CSV）
```

## analysis.csv

1 行目は雛形に書かれた見出し行．2 行目以降に画像 1 枚につき 1 行を追記する．列は全 305 列．

| 順 | 列 | 列数 | 列名の形式 |
| --- | --- | --- | --- |
| 1 | 画像名 | 1 | `name` |
| 2 | 形状特徴 | 7 | `shape-<特徴量>`（width，height，area，topLeftX，topLeftY，bottomRightX，bottomRightY） |
| 3 | GLCM 特徴量 | 66 | `<方法>-<領域>-<特徴量>`．方法は chiu（3 領域）→ exChiu（4 領域）→ fiveClick（4 領域）の順，特徴量は 6 種 |
| 4 | 色統計量 | 231 | `<方法>-<領域>-<チャネル>-<統計量>`．方法・領域の順は GLCM と同じ，チャネルは 3 種，統計量は 7 種 |

- チャネルは Image では `B`・`G`・`R`，Image&Calib では `L`・`a`・`b`．それ以外の列構成は両モードで同じ
- 失敗した画像は `<画像名>,Tongue detection error` または `<画像名>,Tongue segmentation error` の 2 列だけの行になる
- 従来の 5 点法による L\*a\*b\* 値に相当するのは `fiveClick-<領域>-<L|a|b>-mean` の列
