明度と彩度の違い

#概要
明度と彩度の違いが私はよくわかりません。
よって、本記事では彩度と明度の変化に対する画像の変化を見てみようと思います。
結論を先に書くと

**色相は色の種類、彩度は色の濃さ、明度は影の強さ**

**値　　0 ＞＞＞＞＞＞ 255
彩度　白＞＞＞＞＞＞ 原色
明度　黒＞＞＞＞＞＞ 原色**

というように感じます

#BGRとHSVの変換について
こちらに変換の際の数式
https://www.peko-step.com/tool/hsvrgb.html
があります。

#実際に変化させた結果---色相10度ずつ
![yellow_change.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/fd78a74b-b493-fed6-09c4-097fcb192ae9.jpeg)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/bade0eca-4c8d-25da-a18f-658338ce3b17.png)
色相環通りの変化をしています。但し、図の角度は0~360度なので1/2して、見てください

もう一つわかることは、
**彩度、明度が最大の色は、BGRはどれかが0となっている
どれかが255(254)**
という事です。255でないのは元画像の明度が254だからでしょう


#実際に変化させた結果---彩度10度ずつ
![yellow_change.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/c695c33e-48c8-270b-5a5e-e3eb105ffc4a.jpeg)
空色に対して行った結果
![sora_change.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/cc0bdb04-d75d-4c89-f82d-0891ece14b33.jpeg)

**彩度は0に近いほど白という事がわかります。**
また、明度を固定しているためBGR最大値は固定されています。
**彩度の変化では、空色と言うことは変わりません**

#実際に変化させた結果---明度10度ずつ
![sora_change.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/91863f2a-3194-5e3b-5a14-35e4d52d2b6a.jpeg)

明度は0だと黒だといえるでしょう。
明度は150の段階で既に黒が強く表れます。


明度は、その色のマットにあたる光の強さ
彩度は、その色のマットの下から透過してくる光の強さ
のように感じます。

値　　0 ＞＞＞＞＞＞ 255
彩度　白＞＞＞＞＞＞ 原色
明度  黒＞＞＞＞＞＞ 原色

こんな感じな気がします。では
白＞＞＞＞＞＞ 原色＞＞＞＞＞＞黒
っぽいので、彩度か明度はどちらかは最大で固定かというと、そんなことはなさそうです。

また、白と黒を混ぜるとどうなるかという話になりそうです。
混ぜると、グレーです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/3043507b-4c0f-ac82-813a-f03b8c4e6053.png)
グレーでは、明度のみが変化します。彩度は0固定です

では、グレーの彩度を変化させるとどうなるでしょうか
![sora_change.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/95419e97-09b8-5c10-4b1a-f81078670be8.jpeg)
色相はグレー時、色相の意味がないため0の赤となっている影響から赤が出てきます。
彩度が大きくなるほど、色が強く出てくるようになっています。

<!--
#実際に折り紙当てる光の強さで見え方がどう変わるか見てみる
次に、スマホのバックライトの強さに対する変化を見てみましょう。
-->


#プログラム
最後に使用したプログラムを載せます
anaconda-python2,opencv2環境で動作させました

```python
import sys
import cv2			#	OpenCVライブラリ
import numpy as np		#	Numpyライブラリ


img = cv2.imread('sora.jpg' ,cv2.IMREAD_COLOR)       #変化元画像
img_HSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)    

windowName = u'元画像'.encode('cp932')
cv2.namedWindow(windowName)
windowName2 = u'編集画像'.encode('cp932')
cv2.namedWindow(windowName2)

frame = img
height,width,alpha = frame.shape
height,width,channels = frame.shape
zeros = np.zeros((height,width),frame.dtype)
ones = np.ones((height,width),frame.dtype)
#hoge = cv2.bitwise_and(ones*255,ones*100,mask=ones*10)
#cv2.imshow(windowName,hoge)

cv2.putText(img,'BGR',(10,20),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
cv2.putText(img,'・'.join(map(str,img[100,100])),(10,50),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
cv2.putText(img,'HSV',(10,80),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
cv2.putText(img,'・'.join(map(str,img_HSV[100,100])),(10,110),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
cv2.imshow(windowName,img)


for i in range(26):    
    img_siki,img_kido,img_sai= cv2.split(img_HSV)
    hoge_HSV= cv2.merge((img_siki,img_kido,img_sai+ones*10*(i+1)))
    hoge= cv2.cvtColor(hoge_HSV,cv2.COLOR_HSV2BGR)   
    
    cv2.putText(hoge,'BGR',(10,20),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
    cv2.putText(hoge,'・'.join(map(str,hoge[100,100])),(10,50),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
    cv2.putText(hoge,'HSV',(10,80),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
    cv2.putText(hoge,'・'.join(map(str,hoge_HSV[100,100])),(10,110),cv2.FONT_HERSHEY_PLAIN,2.0,(255,0,0))
    
    frame = cv2.vconcat([frame,hoge])

cv2.imshow(windowName2,frame)
cv2.imwrite('sora_change.jpg',frame)
cv2.waitKey(0)
cv2.destroyAllWindows()



```