照明ムラのバランスをとるためのガンマ補正

 

ガンマ補正ガンマ補正とも呼ば)ガンマ非線形ガンマiinearity )、ガンマ符号化ガンマ符号化)、または単にガンマ(ガンマ)と呼ばれることができます。これは、映像や光システムのために使用される輝度非線形または抗演算実行(輝度)又は三刺激値(三刺激値)。

ウィキペディア

1、公式

 

 

Aは定数であり、入力と出力の値が負でない実数値です。一般にA = 1の一般的に言えば、入力値と出力値の範囲は0と1の間です。ガンマ値γを時々呼ば<1の値γ(ガンマをコードする)符号化され、上記符号化処理を用いて行われるべき乗則プロセスのも呼ばれるガンマ圧縮(圧縮ガンマ)、コントラスト、ガンマ値γを> 1は時々も呼ばれる復号化されたガンマ値(復号ガンマ)、使用して実行され、上述した復号動作べき乗則プロセスのは、「拡張ガンマ(ガンマ拡張)」と呼ばれています。

2、通訳

ガンマ符号化対象画像がそれによって光の人間の知覚、または黒と白、最大使用に基づく白黒のデータビットまたは帯域幅を示す、人間の視覚の特性を補償するために使用されます。通常照明(いずれも暗いも眩しい明るい)の下で、人間の視覚特性は、一般的に持っているか、またはガンマパワー関数。画像は、ガンマ符号化されていない場合、帯域幅またはデータビットの使用が偏在する - またはヒトを表すために使用されるデータビットのすぎる帯域幅を有する差を知覚できず、非常に敏感な人間を示しますデータビットまたは帯域幅の視覚範囲、不十分であろう。ガンマ符号化されたイメージに必要な(そして時には逆)ではない、浮動小数点形式のカラー値は、曲線の直線部分の数の推定値を提供しています。γ補正(ガンマ補正、ガンマ補正):ガンマカーブのためのいわゆるガンマ補正は非線形トーン画像編集部明暗部を検出する画像信号の方式に画像編集であり、両方の割合は、それによって画像のコントラスト効果を向上させる、増加させました。

3.詳細

1.ガンマカーブ補正とは何ですか?

ガンマ補正曲線それは何を意味するのでしょうか?ガンマカーブは、1に等しいガンマ値、曲線が同一の入力及び出力密度を参照する。このとき、45°の直線と座標軸である場合、特別なトーンカーブです。1より大きいガンマ値は、暗出力の原因となる照明の出力、ガンマ値が1未満になります。結論として、我々の要求が近い可能な限り1への入力と出力の比率です。モニタ、スキャナ、プリンタ、入出力デバイスでは、これはかなり一般的で重要な概念です。コンピュータシステムにおいて、原因実際の出力の表示にグラフィックス又は画像は明るさにずれてしまう、ガンマカーブの補正方法は、何らかの方法でこの画像のずれを補正することです。ガンマ補正の値が1よりも小さい場合にガンマ補正の値が1より大きい場合、一般に、画像のハイライト部分が圧縮され、暗い部分が拡張され、画像のハイライト部分が、展開され、暗い部分が圧縮されます一般的な詳細スムーズな拡張暗いトーンのためのガンマ補正。

2、ガンマ補正コード
1の#include <opencv2 /コア/ core.hpp>
 2の#include <opencv2 / imgproc / imgproc.hpp>    
 3の#include <opencv2 / imgproc / types_c.h>
 4の#include <opencv2 /のHighGUI / highgui.hpp>
 5# <opencv2 /のHighGUI / highgui_c.h>含む
 6の#include <opencv2 / highgui.hpp>
 7の#include <opencv2 / calib3d.hpp>
 8の#include <iostreamの>
 9  10 使って名前空間品種;
11 使って名前空間はstdを、
12 13 ボイドガンマ補正(マット&SRC、マット&DST、       {
 15      符号なしチャー LUT [ 256 ]。
16      のためには、int型 iは= 0 ; iは< 256 ; iは++ 17      {
 18          LUT [I] = saturate_cast <UCHAR>(POW((フロート)(I / 255.0)、fGamma)* 255.0f )。
19      }
 20  21      DST = src.clone()。
22 のconst int型のチャネル= dst.channels()。
23 スイッチ(チャネル)
 24     {
 25                     ケース 1 26          {
 27  28              MatIterator_ <UCHAR> こと、エンド。
29 のためには、(それが= dst.begin <UCHAR>()、終了= dst.end <UCHAR>();!それ= END;それ++ 30                  がLUTの= * [する(* IT)]。
31 32 休憩33         }
 34 ケース3 35         {
 36 37              MatIterator_ <Vec3b> こと、エンド。
38 については、(それが= dst.begin <Vec3b>()、終了= dst.end <Vec3b>();!それ=終わり、それ++                                                      39              {
 40                  (※)[ 0 ] LUT [((※)[= 0 ])]。
41                  (※)[ 1 ] LUTを= [((※)[ 1 ])]。
42                  (※)[ 2 ] LUTを= [((※)[ 2 ])]。
43              }
 44  45 ブレーク46 47         }
 48 デフォルト49 休憩50     }
 51 }
 52 53 INT メイン()
                                         54  {
 55      マット画像=関数imread(" D://Images/wrong/2.jpg " )。
56      であれば(image.empty())
 57      {
 58          COUT << " エラー:イメージをロードできませんでした" << ENDL。
59          リターン 0 ;
60      }
 61      マットDST。
62      フロート fGamma = 1 / 1.8 63      ガンマ補正(画像、DST、fGamma)。
64      関数imwrite(" D://Images/wrong/24.jpg " 、DST)。
65      waitKey()。
66  67 リターン0 ;
68 }      

 

 

1  パッケージorg.jaiken.tools。
2  3 インポートorg.opencv.core.Core。
4 インポートorg.opencv.core.CvType。
5 輸入org.opencv.core.Mat。
6 インポートorg.opencv.imgcodecs.Imgcodecs。
7 8 パブリッククラスガンマ補正{
 9 // 伽马校正10 公衆マットガンマ(マットSRC){
 11          マットX = 新しいマット()。
12         src.convertTo(X、CvType.CV_32FC3)。
13          マットI = 新しいマット()。
            
      14          
15          Core.pow(X、1 / 1.8 、I)。
16          マットDST = 新しいマット()。
17          // 归一化
18          Core.normalize(I、DST、0、255、Core.NORM_MINMAX、0 );
19          Imgcodecs.imwrite( "D://Images/wrong/22.jpg" 、DST)。
20          リターンDST。
21      }
 22  23 公共静的ボイドメイン(文字列[]引数){
 24          は、System.load( "D://Export/opencv_java320.dll" )。
25          マットSRC = Imgcodecs.imread( "D://Images/wrong/2.jpg"、0 );
       26          であれば(src.empty()){
 27              System.err.println( "ピクチャが存在しません" )。
28              リターン;
29          }
 30          ガンマ補正ガンマ補正= 新しいガンマ補正()。
31          gammaCorrection.gamma(SRC)。
32      }
 33  34 }

 


 

レンダリング

 


これはまたのみ、画像の明るさの変化を参照して詳細に変更を経験していない、閾値と、このような方法と二つの像ブロブ分析、図の以下の結果を検出することができます。

 

明らかにかなりの結果より、より明確に4列、画像の細部の5行目の結果が、画像上の干渉「ライン」は存在しません。

おすすめ

転載: www.cnblogs.com/Jaiken/p/10943312.html