私は正しい色の用語を使用していないかもしれませんが、基本的には添付されている画像に似た色をスケールすることができます。私はこれを行うために彩度を探していました。正しいバージョンが左の彩度の低いバージョンであるように見えます。色を不飽和化する方法は?
私は(私が見つけた)、これをしようとしていたが、それは全く正しい見ていない:
Public Shared Function GetDesaturatedColor(color As Color) As Color
Const kValue As Double = 0.01R
Dim greyLevel = (color.R * 0.299R) + _
(color.G * 0.587R) + _
(color.B * 0.144R)
Dim r = greyLevel * kValue + (color.R) * (1 - kValue)
Dim g = greyLevel * kValue + (color.G) * (1 - kValue)
Dim b = greyLevel * kValue + (color.B) * (1 - kValue)
' ColorUtils.ToByte converts the double value
' to a byte safely
Return color.FromArgb(255, _
ColorUtils.ToByte(r), _
ColorUtils.ToByte(g), _
ColorUtils.ToByte(b))
End Function
誰もがこれを行うことができますいくつかのアルゴリズムを知っていますか?
検索をして、トピックに関する多くの記事があります:(正しく1が「正しい」彩度画像が考えるものに依存していない場合)、これは合理的にうまく機能します。 – Brad