OpenCV を使用して画像を YUV に変換する

Sahil Bhosale 2023年6月21日
  1. OpenCV を使用した画像の YUV カラー モデル
  2. まとめ
OpenCV を使用して画像を YUV に変換する

YUV は、RGB および BGR イメージ形式と同様のカラー モデルです。 YUV では、コンポーネント (Y) は画像の輝度 (明るさ) を定義し、クロミナンス コンポーネント (U) および (V) としても知られる他の 2つのコンポーネントは、青の投影を定義し、 赤の投影、それぞれ。

この記事では、YUV とは何か、および OpenCV を使用して画像に YUV カラー モデルを実装する方法について説明します。

OpenCV を使用した画像の YUV カラー モデル

YUV は、人間の知覚に関するカラー画像またはビデオをエンコードし、直接RGB 表現と比較してクロミナンス コンポーネントの帯域幅を削減します。 これは、カラー イメージ パイプラインの一部として一般的に使用されるモデルです。

歴史的に、YUV および Y’UV という用語は、テレビ システムにおける色情報の特定のアナログ エンコーディングに使用されていました。

初期段階では、アナログ テレビは YUV 色空間を使用してグレースケールの画像/ビデオを生成していました。 これらのアナログ TV は、YUV の U および V コンポーネントを除去して、画面上に白黒の画像/ビデオを生成するために使用されます。

U と V の値は -128 から +127 (符号付き整数の場合) と 0 から +255 (符号なし整数の場合) の範囲です。

U および V コンポーネントを削除すると、グレースケール イメージが得られます。 U と V はカラー マトリックスです。

それでは、構文に飛び込んで、いくつかの例を見てみましょう。

構文:

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

パラメーター:

  1. img - 画像は変数 img に格納されて変換されます。
  2. cv2.COLOR_BGR2RGB - BGR 画像を RGB 画像に変換します。
  3. cv2.COLOR_RGB2YUV - RGB 画像を YUV 画像に変換します。

構文を確認したので、それがどのように機能し、OpenCV で実装されるかを見てみましょう。

OpenCV を使用することの良い点は、コンピューター ビジョンおよび画像処理アプリケーション用に特別に設計されているため、画像に対してさまざまな処理を実行するのに適していることです。

以下の例で、OpenCV で YUV を使用する方法を理解しましょう。

最初に、OpenCV モジュールをインポートし、imread() 関数を使用して画像をロードし、img という変数内に格納する必要があります。 この例では、車の画像を jpg 形式で撮影しました。

コードスニペット:

# Import opencv library
import cv2 as cv

# Load the image into a variable using the imread function.
img = cv.imread("car.png")

# Converting the image from BGR to RGB since OpenCV generally uses BGR image format.
img_rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)

# Now converting the image from RGB to YUV
img_yuv = cv.cvtColor(img_rgb, cv.COLOR_RGB2YUV)

# Showing all the images
cv.imshow("RGB Image", img_rgb)
cv.imshow("YUV Image", img_yuv)
cv.imshow("Original Image", img)
cv.waitKey(0)
cv.destroyAllWindows()

次に、cv.cvtcolor() メソッドを使用して画像を変換し、画像の色をいくつかのパラメーターに変更します。 OpenCV は画像に BGR 形式を使用するため、この形式を別の形式に変換する必要があります。

そこで、cv.COLOR_BGR2RGBcv.cvtcolor() メソッドの 2 番目のパラメータに渡すことで、元の画像を BGR から RGB 形式に変換します。 画像を YUV に変換したいので、cv.COLOR_RGB2YUV パラメータを cv.cvtcolor() メソッドに渡すことで、画像を RGB フォーマットから YUV に変更します。

ここで、cv.COLOR_BGR2YUV パラメータを渡して、BGR 画像から YUV への変換を直接実行することもできます。 RGB と YUV をよりよく理解するために、私たちは長い道のりを歩んでいます。

詳細については、公式ドキュメント を参照してください。

最後に、imshow() 関数を使用して、すべての画像を画面に表示します。

出力:

yuv opencv

まとめ

前述のように、RGB の問題は、視覚認識のマッピングがひどいことですが、YUV はこの目的では RGB よりも効率的です。 そのため、重要なコンポーネントである輝度のために YUV を使用します。

したがって、上記の方法を使用して、画像を YUV に変換し、OpenCV を使用して、または使用せずに元に戻すことができます。

著者: Sahil Bhosale
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn