image-light-freq-conv

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

commit 9c51f9edafded2729c4d0bc6cc3b791f28e8a0fb
parent 1a550ca6eac0693979b0327ca7c9f2c4f1295bb7
Author: Minerva_juppiter <94231606+minerva-jupiter@users.noreply.github.com>
Date:   Thu, 30 Oct 2025 19:56:56 +0900

Create README.md
Diffstat:
AREADME.md | 44++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+), 0 deletions(-)

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