diff --git "a/docs/03_PLAN/PLAN_01_\350\246\201\344\273\266\345\256\232\347\276\251\346\233\270.md" "b/docs/03_PLAN/PLAN_01_\350\246\201\344\273\266\345\256\232\347\276\251\346\233\270.md" new file mode 100644 index 0000000..cda1124 --- /dev/null +++ "b/docs/03_PLAN/PLAN_01_\350\246\201\344\273\266\345\256\232\347\276\251\346\233\270.md" @@ -0,0 +1,77 @@ +# 要件定義書 (Requirements Definition) + +## 背景 (Background) + +- DeepTIAS は,TIAS(舌画像撮影システム)で撮影した舌画像を一括解析し,舌の形状・色・テクスチャの特徴量を CSV に出力する Windows デスクトップアプリである. +- 前任者が開発した v2.7(C# WinForms,2021 年 12 月版)を引き継いだ.ソースコードは本リポジトリに,実行に必要なバイナリ一式は旧ビルド出力フォルダ(`DeepTIAS2.7.1-Latest`)にのみ存在する. +- 現状,リポジトリ単体ではビルド・実行できない(NuGet パッケージ未復元,ネイティブ DLL・外部 exe・雛形フォルダの欠落,csproj のリポジトリ外参照).また配布済み exe は現行ソースと一致しない(旧ソースは OpenCvSharp3 / .NET 4.7.1,現行ソースは OpenCvSharp4 / .NET 4.8). + +## 目的 (Goals) + +1. リポジトリを clone して手順どおりに進めれば,誰でもビルド・実行できる状態にする. +2. 解析結果を変えずに,コードを保守しやすい形に整理する. + +## 対象ユーザー (Target Users) + +- 研究室で舌画像の解析を行う研究者・学生(アプリの利用者) +- DeepTIAS を今後保守・改良する開発者(引き継ぎ先を含む) + +## 現行機能 (Current Features) + +### 解析モード (Analysis Modes) + +| モード | 入力 | 概要 | +| --- | --- | --- | +| Image(画像のみ) | `..\Input\TongueImage\` の画像 | RGB で解析する(1 枚あたり約 15〜30 秒) | +| Image&Calib(画像とカラーチャート) | 上記+`..\Input\CalibrationColorChart\` の同名画像 | カラーチャートで色補正し,L\*a\*b\* で解析する(1 枚あたり約 5 分) | + +### 処理の流れ (Pipeline) + +1. 舌検出: TensorFlow モデル(`Detection_Normal.pb`)で舌の矩形を検出する +2. 舌領域抽出: ONNX モデル(`ResUNet.onnx`)でセグメンテーションし,二値化・小領域除去(`RemoveSmallRegionDLL.dll`)でマスクを作る +3. 形状特徴: 幅・高さ・面積・外接矩形を算出する +4. 領域分割: Chiu 法(3 領域),拡張 Chiu 法(4 領域),5 点法の自動版(4 領域)でマスクを分割する +5. 色・テクスチャ特徴: 領域ごとに色統計量(最小・中央値・平均・最大・分散・歪度・尖度)と GLCM 特徴量を算出する(`python\TongueFeatures.exe`) +6. 出力: `..\Output\<日時>\` に中間画像と,全画像を 1 行ずつまとめた `analysis.csv`(305 列)を書き出す +7. 色補正(Image&Calib のみ): 解析前に `rgb2lab\TongueAnalysis.exe` でカラーチャートから L\*a\*b\* 画像を作る + +## スコープ (Scope) + +### やること (In Scope) + +- ビルド・実行環境の整備 + - 実行に必要なバイナリ(ネイティブ DLL・外部 exe・色補正データ・出力雛形)をリポジトリに取り込み,Git LFS で管理する + - csproj の壊れた参照(リポジトリ外パス,存在しないファイル,絶対パス)を直し,NuGet 復元だけでビルドできるようにする + - ビルド出力フォルダに実行ファイル一式が揃うようにする +- 実行を妨げる不具合の修正 + - デバッグ用の残骸(`Cv2.ImShow` / `WaitKey` で処理が止まる,Calib モードの出力先が `Output\debug` 固定) + - Start を 2 回押すと処理が重複して走る,例外が握りつぶされて操作不能になる +- コード整理 + - 未使用コード・ファイル(`Form1 - backups.cs`,未使用の Settings,未使用メソッド,未使用 NuGet 参照)の削除 + - 2 つの解析モードでほぼ重複している処理(約 420 行)の共通化 + - 解析結果(`analysis.csv`)が整理前後で変わらないことを確かめるテストの整備 + +### やらないこと (Out of Scope) + +- 新しい解析機能の追加,解析手法・パラメータの変更 +- モデルの再学習・差し替え +- ソースの無い外部バイナリ(`TongueFeatures.exe`,`TongueAnalysis.exe`,`TongueAnalysisDLL.dll`,`RemoveSmallRegionDLL.dll`)の作り直し +- `ColorSubdivision`(ソリューション外の試作プロジェクト)の保守 + +## 非機能要件 (Non-functional Requirements) + +- 動作環境: Windows 10 / 11(x64),.NET Framework 4.8,メモリ 8 GB 以上 +- 互換性: 整理の前後で,同じ入力に対する `analysis.csv` の列構成と値が一致すること +- 性能: 1 枚あたりの処理時間を現状より悪化させないこと + +## 制約・リスク (Constraints & Risks) + +- 外部バイナリにはソースが無く,不具合があっても修正できない. +- `rgb2lab\TongueAnalysis.exe` と `TongueAnalysisDLL.dll` はデバッグビルドで,Visual Studio のデバッグ用ランタイム(`ucrtbased.dll` 等)が入った PC でしか動かない可能性がある. +- 入出力のパスが作業ディレクトリ基準(`..\Input`,`..\Output`)で固定されている. +- 解析の正しさを確かめる基準は,旧ビルドでの実行結果しか無い. + +## 未決事項 (Open Questions) + +- Calib モードの出力先を `Output\debug` に固定しているのは意図的か(現行ソースだけにあり,配布済み exe には無い) +- .NET Framework 4.8 から新しい .NET への移行を将来の対象にするか