README.md (2290B)
1 # image-light-freq-con: 画像の波長グレースケール変換 2 3 ## 概要 4 5 `image-light-freq-con` は、入力された画像ファイルの色情報(RGBA)を**光の波長(nm)**に概算でマッピングし、その波長に基づいて画像をグレースケールに変換して出力する Rust プログラムです。 6 7 ### 変換ロジックの要点 8 9 1. **RGBA → 波長 (nm)**: ピクセルの色相(Hue)に基づき、可視光スペクトル(400 nm $\sim$ 700 nm)上の波長に概算マッピングされます。 10 2. **波長 → グレースケール**: 11 * **400 nm**(紫の端)は **黒 (0)** に変換されます。 12 * **700 nm**(赤の端)は **白 (255)** に変換されます。 13 14 ## ビルドと実行 15 16 ### 1. ビルド 17 18 プロジェクトのルートディレクトリで以下のコマンドを実行します。 19 20 cargo build --release 21 22 ### 2. 実行方法 23 24 実行時には、**入力ファイルパス**と**出力ファイルパス**の2つの引数が必要です。 25 26 # 実行形式: プログラム名 <入力ファイルパス> <出力ファイルパス> 27 ./target/release/image-light-freq-con input.png output_grayscale.png 28 29 #### 実行例 30 31 `input_color.jpg`を処理し、`output_gray.png`として保存する場合: 32 33 ./target/release/image-light-freq-con input_color.jpg output_gray.png 34 35 ## 処理フロー 36 37 プログラムは以下の主要な手順で動作します。 38 39 1. **引数チェック**: コマンドライン引数が2つ(入力パスと出力パス)あるかを確認します。 40 2. **画像読み込み**: `load_image` 関数で入力画像を $\text{RGB}$ ピクセルデータ(2次元配列)としてロードします。 41 3. **グレースケール変換**: 42 * 2重ループで、全ピクセルに対して `rgba_to_approx_wavelength` を実行し、波長を推定します。 43 * 推定された波長を `wavelength_to_grayscale` でグレースケール値に変換し、2次元配列 (`grascale_img`) に格納します。 44 4. **画像保存**: 2次元配列を1次元配列にフラット化し、`image::ImageBuffer::<Luma<u8>, _>::from_raw` でグレースケール画像オブジェクトを作成後、指定されたパスに PNG 形式で保存します。