image-light-freq-conv

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 形式で保存します。