1

C#でrgb画像を同等のhsv画像に変換しようとしています。変換を行うアルゴリズムをいくつか見つけましたが、計算後に画像のこれらの値を保存する方法が見つかりませんでした。

たとえば、計算後 h = 287, s = 0.5, v = 0.34 . これらの値を画像ファイルのどこに保存して、同等の hsv 画像に変換する必要がありますか?

4

3 に答える 3

1

一般に、システムは RGB の画像を扱います。HSV 空間で何らかの処理を行うために HSV に変換する場合は、ピクセルを HSV に変換し、処理を行い、BACK を RGB に変換し、最終的な RGB 値を保存します。 .

イメージをまったく変更せずに RGB から HSV に変換すると、IMHO はかなり役に立たなくなります (まったく同じイメージになってしまいます)。

于 2009-11-06T22:18:17.660 に答える
0

画像を処理する必要があるたびに HSV 値を再利用したい場合は、それらを保持するバイナリ ファイルを作成できます。ただし、これには何らかの形での画像の複製が含まれますが、それらの値を必要とする複数のプロセスがあり、画像サイズが大きいために変換ステップを避けたい場合に役立つ場合があります。ただし、通常は、RGB 値を読み取り、HSV に変換して処理し、RGB に戻して、処理した画像を保存します。

HSV 値を画像ファイルに保存し、これらのチャネルの「マップ」として表示できるようにしたい場合は、HSV 値を RGB 間隔にマッピングするという観点から考えることができます。RGB 値はそれぞれ 0 ~ 255 の間隔ですが、HSV では色相は 0 ~ 360、S と V は 0.0 ~ 0.1 です。これは、S と V の値に 255 を掛けて G と B に格納できることを意味します。

G = S * 255;
B = V * 255;

H 値については、0 ~ 255 の空間にマッピングする必要があるため、(255 / 360) を掛けて R コンポーネントに格納します。では、最後のピースです。

R = H * 255 / 360;
于 2009-11-06T22:25:59.660 に答える