プロが教える店舗&オフィスのセキュリティ対策術

・RGBをHSLへ変換する際、小数点が発生することがあります
・とりあえず四捨五入したのですが、
・HSLからRGBへ再変換すると、上記端数処理の関係で微妙に結果がズレることがあります
(そのため何度も繰り返し処理すると段々おかしなことになっていくと思います)

・相互変換する場合、矛盾が生じないよう端数処理するためにはどうすれば良いでしょうか?
・必ず四捨五入する、という決まりを設定するのでしょうか?
・それとも、RGBをHSLへ変換する際は四捨五入で、逆は切り捨てという設定をするのでしょうか?


・端数が伴う(RGBからHSL)変換処理後に、再度逆変換(HSLからRGB)する際、必ず元の値へ戻すにはどうすればよいでしょうか?

A 回答 (1件)

> ・相互変換する場合、矛盾が生じないよう端数処理するためにはどうすれば良いでしょうか?



そんな都合のいい方法はありません。
前にも書きましたが、有限のコンピュータの世界で扱っている限り、避けられません。
どこまで誤差が許されるのか、どれだけの資源が使えるのか、等の条件に合せて、適切と思われる方法を使うだけです。


例えば。
> RGBをHSLへ変換する際は四捨五入

なぜ、誤差を増やす「四捨五入」をするのでしょうか?
計算するだけなら、計算で出た小数点以下の値をできるだけそのままにしておく方が、誤差は少なくなるはずです。


> ・端数が伴う(RGBからHSL)変換処理後に、再度逆変換(HSLからRGB)する際、必ず元の値へ戻すにはどうすればよいでしょうか?

普通「ただ元に戻すだけ」なんて処理はしません。
それなら最初から変更しなれけばいいのです。
    • good
    • 1
この回答へのお礼

・回答ありがとうございました

>そんな都合のいい方法はありません
>前にも書きましたが、有限のコンピュータの世界で扱っている限り、避けられません
・そうですよね
・もしかしたら何か良い方法があるのかと思ったのですが…

・大変参考になりました

お礼日時:2016/05/19 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!