メインコンテンツ

demosaic

Bayer イメージからトゥルーカラー イメージへの変換

説明

RGB = demosaic(bayer,sensorAlignment) は、Bayer イメージ bayer をトゥルーカラー イメージ RGB に変換します。sensorAlignment 引数は Bayer パターンを指定します。

Bayer フィルター モザイクはカラー フィルター アレイ (CFA) の一種で、シングルチップ デジタル カメラの光センサーにカラー フィルターを配置したものです。このカラー フィルターにより、各光センサーは赤、緑、青のデータのみを記録します。Bayer パターンは 4 つのカラー フィルター (2 つの緑フィルター、1 つの赤フィルター、および 1 つの青フィルター) を繰り返し配置したもので、これによって Bayer フィルター モザイクが構成されます。

Bayer パターン イメージ (Bayer イメージ) は、Bayer フィルター モザイクが付いたカメラで撮影されたイメージです。Bayer イメージのデモザイク処理では、光センサーからの信号を組み合わせ、単一チャネルの強度イメージではなく 3 チャネルのトゥルーカラー イメージを形成します。

RGB = demosaic(bayer,sensorAlignment,BitsPerSample=bitsPerSample) は、入力 Bayer イメージの実際のビット深度 bitsPerSample も指定します。データに含まれるビット数がデータ型 (R2025a 以降)のビット数より少ない場合は、この構文を使用します。

すべて折りたたむ

'bggr' のセンサー配置を使ったカメラで撮影された Bayer パターン エンコード イメージを変換します。

I = imread("mandi.tif");
J = demosaic(I,"bggr");
imshow(I)

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

imshow(J)

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

RAW ファイルから、カラー フィルター配列 (CFA) のイメージとメタデータを読み取ります。このデータは、12 ビットのセンサーを使用して取得され、データ型 uint16 を使用して保存されます。

file = "colorCheckerTestImage.NEF";
cfa = rawread(file);
info = rawinfo(file);

これが 12 ビットのデータであることを確認するには、最大のピクセル値を確認します。最大値は 12 ビット データの範囲 (2^12-1、つまり 4095) に収まっています。

maxValue = max(cfa(:))
maxValue = uint16

3366

このファイルに含まれている、白いピクセルの値に関する情報をもつメタデータも、12 ビットのデータであることを示しています。

whiteValue = info.ColorInfo.WhiteLevel
whiteValue = 1×4 uint16 row vector

   3827   3827   3827   3827

メタデータから Bayer パターンを取得します。サンプルあたり 12 ビットでイメージをデモザイク処理します。

sensorAlignment = info.CFALayout;
rgbout = demosaic(cfa,sensorAlignment,BitsPerSample=12);
imageshow(rgbout,DisplayRange=[0 2^12])

入力引数

すべて折りたたむ

Bayer パターンで符号化されたイメージ。MN 列の数値配列として指定します。bayer は 5 行以上かつ 5 列以上でなければなりません。

データ型: uint8 | uint16 | uint32

Bayer パターン。次の表のいずれかの値に指定します。各値はイメージの左上隅で 4 つのピクセルを記述することで、赤、緑、および青のセンサーの順序を表しています (左から右、上から下)。

パターン2 行 2 列のセンサー配置
"gbrg"

Top left pixel is green, top right pixel is blue, bottom left pixel is red, and bottom right pixel is green.

"grbg"

Top left pixel is green, top right pixel is red, bottom left pixel is blue, and bottom right pixel is green.

"bggr"

Top left pixel is blue, top right pixel is green, bottom left pixel is green, and bottom right pixel is red.

"rggb"

Top left pixel is red, top right pixel is green, bottom left pixel is green, and bottom right pixel is blue.

データ型: char | string

R2025a 以降

サンプルあたりのビット数。正の整数として指定します。デモザイク後のイメージ RGB の最大値は 2^bitsPerSample – 1 に等しくなります。

既定では、bitsPerSamplebayer のデータ型のビット数に等しくなります。つまり、uint8 イメージの場合は 8uint16 イメージの場合は 16uint32 イメージの場合は 32 になります。

例: 12 を指定すると、サンプルごとに 12 ビットが使用され、uint16 および uint32 の Bayer イメージの場合は RGB イメージの最大値が 2^12 – 1、つまり 4095 に設定されます。

出力引数

すべて折りたたむ

RGB イメージ。bayer と同じデータ型の M×N×3 の数値配列として返されます。

アルゴリズム

demosaic 関数は、勾配補正された線形内挿を使用して、2 次元 Bayer イメージをトゥルーカラー イメージに変換します。

参照

[1] Malvar, H.S., L. He, and R. Cutler, High quality linear interpolation for demosaicing of Bayer-patterned color images. ICASPP, Volume 34, Issue 11, pp. 2274-2282, May 2004.

拡張機能

すべて展開する

バージョン履歴

R2007b で導入

すべて展開する