人気のある映像の明るさは、画像の明るさレベル、デジタル画像であることを理解 F(X、Y)= I(X、Y)R&LT(X、Y) 、[0,255]の間のグレー値と、 Fの 値は、より0に近い低い輝度は、Fの 値が255より高い輝度に近くなります。そして、我々は、最高と最低階調グレーレベル差の間のコントラストを指す上述したように、明るさとコントラストを区別します。
彩度は、色の種類画像の数を指し、上記画像のグレーレベルが[値Lmin、Lmaxの]が、その後、複数の中間値Lminで、Lmaxとは、複数の色を表すことになる画像の種類は、それがさらに飽和であります高い、外観は彩度を調整することができる、より鮮明な画像を表示しますかオーバーは十分に露光画像を補正しません。画像がより自然に見えるように
デジタル画像を変換元の画素のグレーレベルが設定されて F(I、J)に、画素グレー G(I、J) 、線形変換は、一般的である G(i、j)はAF = (I、J )+ B、画像コントラスト、画像の明るさの影響係数Bへの影響係数、次のように:
(1)= 1のときの画像であり、
(2)A> 1コントラスト強調、画像はより明確に表示されたときに、
( 3)<1つのときにコントラスト低下、画像が暗く見える;
(4)B B(Bの増加に伴って、画像の明るさに影響>全体画像の階調値を、A(B> 0)B 0)および還元シフトアップまたはダウン、つまり、画像全体が明るくまたは暗くなり、画像のコントラストを変更しないであろう
共通コード:
OpenCVの画像データは、データのマット型に格納され、我々は、ピクセルのRGB構成が存在することを知って、それがマットは3次元配列であり、マット画像の画素を得ることが簡単です。
//三个循环ため、执行运算new_image(I、J)*の画像(I、J)+ bは= ため(INT Y = 0; Y <image.rows; Y ++) { (int型のx = 0であり、X <image.colsあり; x ++) { ため(INT C = 0; C <3; C ++) { new_image.at <Vec3b>(Y、X)[C] = saturate_cast <UCHAR>((g_nContrastValue * 0.01)*(画像.AT <Vec3b>(Y、X)[C])+ g_nBrightValue)。 } } }
上記コードimage.at <Vec3b>(Y、X )[C] 、YはXがCはR、G、B(0に対応する、1)であり、画素列であり、画素の列でありますA。
saturate_castセキュリティ変換動作の結果については、結果がsaturate_castを変換して、それが有効な値であることを確認するために、画素値範囲(オーバーフロー)(それはフローティングされている場合)、それはまた非整数であってもよいが超えてもよいです。
コードは以下の通りであります:
// ----------------------------------- [セクション]ヘッダが含まれてい------- -------------------------------- // 説明:プログラム・ファイルのヘッダーが依存含ま // ----- -------------------------------------------------- --------------------------------------- する#include <opencv2 /コア/ core.hpp> 書式#include <opencv2 /のHighGUI / highgui.hpp> の#include " opencv2 / imgproc / imgproc.hpp " の#include <iostreamの> // --------------------- -------------- [部] ------------------------------名前空間宣言--------- // 説明:名前空間が使用される手順が含まれています // ---------------------------- -------------------------------------------------- ----------------- 使用して名前空間 STD; 使用して 名前空間CV; // ----------------------------------- [グローバル]関数宣言の一部- ------------------------------------- // 説明:グローバル関数の宣言 // ---- -------------------------------------------------- ----------------------------------------- 静的 無効 ContrastAndBright(int型、無効 * ) ; // ----------------------------------- [セクション] ------グローバル変数宣言-------------------------------- // 説明:グローバル変数の宣言 // --------- -------------------------------------------------- ------------------------------------ int型 g_nContrastValue; // コントラスト値 INT g_nBrightValue; // 輝度値 マットg_srcImage、g_dstImage; // ----------------------------------- [ main()関数] -------------------------------------------- / / 説明:エントリ機能コンソールアプリケーション、私たちのプログラムは、ここから始まる // ------------------------------- -------------------------------------------------- -------------- INT メイン() { // 前景と背景色コンソール変更 システム(「色2F。」); //は、供給されたユーザの画像を読み取るを g_srcImage関数imread =(" E:\\ \\ vs2015 VS2015Opencvプロジェクト\\ \\ \\はcat.jpgピクチャー" ); IF(g_srcImage.data){のprintf(!" エラー画像g_srcImage〜\ N-を読む!"); 戻り falseに;} g_dstImage = マット::ゼロ(g_srcImage.size()、g_srcImage.type()); // 設定コントラストとの初期値明る g_nContrastValue = 80 ; g_nBrightValue = 80 ; // ウィンドウの作成 (namedWindowを" 【効果】図ウィンドウ"、1 ); //は、トラックバー作成 createTrackbar(" コントラスト:"、" [効果]図ウインドウ"、&g_nContrastValue、300 、ContrastAndBright)を、 createTrackbarを("明るさ:"、" [効果]図ウィンドウ"、&g_nBrightValue、200は、ContrastAndBright); //は、コールバック関数呼び出し ContrastAndBright(g_nContrastValue、0 ); ContrastAndBright(g_nBrightValue、0 ); // 出力いくつかのヘルプ情報 COUT << <<てendlは「\ tは成功し、画像効果を調整するためのスクロールバーがN- \ N- \観察走る」 << 「\ tのプレス」Q「キー、プログラムが終了するには、N- \ 」; // あなたは「Q」キーを押したときプログラムは終了します しばらく(CHAR(waitKey(1))!= ' Qを'){} 戻り 0 0; } // ----------------------------- [ContrastAndBright()関数] ----------- ------------------------- // 説明:コールバック関数は、画像のコントラストと明るさ値を変更 // ---------- -------------------------------------------------- ----------------------------------- 静的 無効 ContrastAndBright(int型、無効 * ) { // ウィンドウ作成 namedWindowを(" [オリジナル】図ウインドウ"、1 ); // 算術g_dstImageを行うための3つのループ(I、J)* g_srcImage(I、J)+ B = ため(INT = Y; Y <g_srcImage.rows。Y ++ ) { ため(int型のx = 0 ; X <g_srcImage.colsあり; x ++ ) { ため(INT C = 0 ; C < 3 ; C ++ ) { g_dstImage.at <Vec3b>(Y、X)[C] = saturate_cast < UCHAR>((g_nContrastValue * 0.01)*(g_srcImage.at <Vec3b>(Y、X)[C])+ g_nBrightValue)。 } } } // 显示图像 関数imshow(" 【原始图窗口】" 、g_srcImage)。 imshowを("[効果]図ウインドウ」、g_dstImage); }
レンダリング: