インポートCV2の インポートのNPとしてnumpyの IMG = cv2.imread(' 4.JPG ' ) DEF adjust_gamma(画像、ガンマ= 1.0 ): invGamma = 1.0 / ガンマ テーブル = [] のための I における範囲(256 ): table.append(( (I / 255.0)** invGamma)* 255 ) 表 = np.array(テーブル).astype(" UINT8 " ) 戻りcv2.LUT(画像、テーブル) img_gamma = adjust_gamma(IMG、2 ) cv2.imshow("IMG "IMG) cv2.imshow(" img_gamma 」、img_gamma) キー = cv2.waitKey() の場合、キー== 27 : cv2.destroyAllWindows()
上記LUTは、多くの人々は、おそらくこれは非常に専門的で非常に深い語彙だと思いますが、LUTが実際略語ルックアップテーブル(カラールックアップテーブル)で、理解の簡単な少しはこれです:LUTを通じ、我々は出力RGB値のセットをすることができますRGB値の別のセットは、それによって露光及びカラー画面を変更します。データ入力の行列が含まれているLUTファイルは、色情報を変更することができます。LUT動作自体はそう、単純に入力データと出力データの系列を含んでいる、実行データは、それに対応するルックアップの出力値に対する各入力値に対して、この対応関係、すなわちによる一人の関係、システムへの1つであったされていませんその理由は、変換を完了することができますが、また、LUTは基本的にCPUリソースを消費しません。
オリジナルリンクします。https://blog.csdn.net/weixin_42171170/article/details/94473176
上記LUTは、多くの人々は、おそらくこれは非常に専門的で非常に深い語彙だと思いますが、LUTが実際略語ルックアップテーブル(カラールックアップテーブル)で、理解の簡単な少しはこれです:LUTを通じて、あなたは出力RGB値のセットをすることができますRGB値の別のセットは、それによって露光及びカラー画面を変更します。単純なモデルを使用すると、私たちが理解するのに役立ちますこれです:
私たちは定めがある場合:
場合R 0、R 5の出力値の元の値。
場合R 1、6のR出力値の元の値。
場合R 2、R 8の出力値の元の値。
場合R 3、10のR出力値の元の値。
...
Rは255までです
G 0の元の値は、Gは、出力10である場合。
場合G 1、12のG出力値の元の値。
場合G 2、13のG出力値の元の値。
場合G 3、15のG出力値の元の値。
...
Gは255までです
場合B 0の元の値は、Bの出力値は0です。
B 1の元の値は、Bは0を出力するときです。
元Bが2である場合、出力値B 1。
3 B元の値が、出力Bが1です。
...
Bは255までです
次いで、ピクセルRGB(1,2,3)であれば、出力値の後には、このLUTは、RGB(6,13,1)で適用されるので、我々はRGB出力にすべての元のRGB値を置くことができ値。もちろん、はるかに複雑なものよりも、実際の3次元LUT変換アルゴリズムインチ
オリジナルリンクします。http://www.sohu.com/a/230989286_252971
参照記事があります。https://blog.csdn.net/Rothwale/article/details/79189032