Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

低光量イメージの強調

屋外シーンで取られたイメージは、ライティング条件が十分ではないため、非常に画質が悪い場合があります。これらのイメージはノイズ レベルが高く、ダイナミック レンジが低くなることがあります。これはコンピューター ビジョン アルゴリズムの全体のパフォーマンスに影響します。光量が少ない条件でコンピューター ビジョン アルゴリズムをロバストにするには、低光量イメージ強調を使用して、イメージの可視化状態を改良します。低光量イメージまたは HDR イメージをピクセル単位で反転したヒストグラムは、かすんだイメージのヒストグラムとよく似ています。したがって、かすみ低減法を使用して、低光量イメージを強調できます。

かすみ低減法を使用した低光量イメージの強調は次の 3 つの手順で構成されます。

  • 手順 1: 低光量イメージを反転します。

  • 手順 2: かすみ低減アルゴリズムを反転した低光量イメージに適用します。

  • 手順 3: 強調イメージを反転します。

かすみ低減アルゴリズムを使用した低光量イメージの強調

低光量の下で撮影した RGB イメージをインポートします。

A = imread('lowlight_11.jpg');
imshow(A);

Figure contains an axes object. The axes object contains an object of type image.

イメージを反転します。元のイメージの低光量領域がどのようにかすむのかを確認してください。

AInv = imcomplement(A);
imshow(AInv);

Figure contains an axes object. The axes object contains an object of type image.

関数 imreducehaze を使用してかすみを低減します。

BInv = imreducehaze(AInv);
imshow(BInv);

Figure contains an axes object. The axes object contains an object of type image.

結果を反転して、強調したイメージを取得します。

B = imcomplement(BInv);

元のイメージと強調されたイメージを並べて表示します。

montage({A,B});

Figure contains an axes object. The axes object contains an object of type image.

imreducehaze オプション パラメーターを使用した結果の改良

さらに良い結果を得るためには、反転したイメージで再び imreducehaze を呼び出します。このとき一部のオプション パラメーターを指定します。

BInv = imreducehaze(AInv, 'Method','approx','ContrastEnhancement','boost');
BImp = imcomplement(BInv);
figure, montage({A, BImp});

Figure contains an axes object. The axes object contains an object of type image.

低光量イメージを改良するための別の例

低光量の下で撮影した RGB イメージをインポートします。

A = imread('lowlight_21.jpg');

イメージを反転します。

AInv = imcomplement(A);

かすみ低減アルゴリズムを適用します。

BInv = imreducehaze(AInv,'ContrastEnhancement','none');

結果を反転します。

B = imcomplement(BInv);

元のイメージと強調されたイメージを並べて表示します。

montage({A,B});

Figure contains an axes object. The axes object contains an object of type image.

異なる色空間を使用した色の歪みの低減

入力イメージを RGB 色空間から L*a*b* 色空間に変換します。

Lab = rgb2lab(A);

L*a*b* イメージを反転します。

LInv = imcomplement(Lab(:,:,1) ./ 100);

関数 imreducehaze を使用して反転イメージのかすみを低減します。

LEnh = imcomplement(imreducehaze(LInv,'ContrastEnhancement','none'));

彩度を増やします。

LabEnh(:,:,1)   = LEnh .* 100;
LabEnh(:,:,2:3) = Lab(:,:,2:3) * 2; % Increase saturation

イメージを RGB イメージに変換し直して、元のイメージと強調されたイメージを並べて表示します。

AEnh = lab2rgb(LabEnh);
montage({A,AEnh});

Figure contains an axes object. The axes object contains an object of type image.

ノイズ除去の使用による結果の改善

低光量イメージはノイズ レベルが高い可能性があります。低光量イメージを強調すると、このノイズ レベルも高くなります。ノイズ除去を、後処理ステップで利用することができます。

関数 imguidedfilter を使用して、強調イメージからノイズを除去します。

B = imguidedfilter(BImp);
montage({BImp,B});

Figure contains an axes object. The axes object contains an object of type image.

照度マップの推定

低光量の下で撮影した RGB イメージをインポートします。

A = imread('lowlight_21.jpg');

イメージを反転します。

AInv = imcomplement(A);

イメージにかすみ低減アルゴリズムを適用します。

[BInv,TInv] = imreducehaze(AInv,'Method','approxdcp','ContrastEnhancement', 'none');

強調イメージを反転します。

T = imcomplement(TInv);

推定された照度マップの横に元のイメージをフォールス カラーで表示します。

tiledlayout(1,2)
nexttile
imshow(A)
title('Lowlight Image')
nexttile
imshow(T)
title('Illumination Map')
colormap(hot)

Figure contains 2 axes objects. Axes object 1 with title Lowlight Image contains an object of type image. Axes object 2 with title Illumination Map contains an object of type image.

制限

この手法では細部の特徴が失われる、つまり低光量条件で暗いチャネルの適応が十分ではないため過度に強調されることがあります。

参考文献

Dong, Xuan, et al. "Fast efficient algorithm for enhancement of low lighting video." Multimedia and Expo (ICME), 2011 IEEE International Conference on.IEEE, 2011.

参照

[1] Dong, X., G. Wang, Y. Pang, W. Li, J. Wen, W. Meng, and Y. Lu. "Fast efficient algorithm for enhancement of low lighting video." Proceedings of IEEE® International Conference on Multimedia and Expo (ICME). 2011, pp. 1–6.

参考

| | | |