画像における算術演算

OpenCVBeginner
オンラインで実践に進む

はじめに

OpenCV-Python を使った画像の算術演算に関するこのチュートリアルへようこそ!このチュートリアルでは、加算、減算、およびビット演算について学びます。このチュートリアルが終了するとき、これらの基本演算を使って画像を操作する方法をしっかりと理解しているでしょう。

画像の加算

画像の加算とは、2 つの画像の画素値を加算する処理です。OpenCV では、この目的のためにcv2.add()関数が使用されます。

Python シェルを開く

ターミナルで Python シェルを開く

python3

2 つの画像を読み込む

対象の画像を読み込むために.imreadを利用します。

import cv2 as cv2
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

画像を加算する

前のステップで読み込んだ 2 つの画像を加算するために.add()を使用します。

result = cv2.add(img1, img2)

結果を保存する

結果を書き出します。

cv2.imwrite('Image_Addition.jpg', result)

生成された画像Image_Addition.jpgは以下のようになります。

画像加算結果の例

画像の合成

これも画像の加算ですが、合成や透明度の感じを与えるために画像に異なる重みを与えます。画像は以下の式に従って加算されます。

画像合成の式の図

cv.addWeighted()はこの式を画像に適用します。

画像を加算する

前のステップで読み込んだ画像に式を適用するために.addWeighted()を使用します。

result = cv2.addWeighted(img1,0.7,img2,0.3,0)

結果を保存する

結果を書き出します。

cv2.imwrite('Image_Blending.jpg', result)

生成された画像Image_Blending.jpgは以下のようになります。

合成画像の結果

画像の減算

画像の減算は、2 つの画像の違いを見つけるために使用されます。ある画像の画素値を別の画像から減算します。OpenCV では、cv2.subtract()関数を使用できます。

画像を減算する

.subtract()を使用して、画像 2 から画像 1 の画素値を減算します。

result = cv2.subtract(img1, img2)

結果を保存する

結果を書き出します。

cv2.imwrite('Image_Subtraction.jpg', result)

生成された画像Image_Subtraction.jpgは以下のようになります。

画像減算結果の例

ビット演算

ビット演算は、画素値の個々のビットを操作するために使用されます。OpenCV は、ビット演算を行うためのcv2.bitwise_and()cv2.bitwise_or()cv2.bitwise_xor()、およびcv2.bitwise_not()のような関数を提供しています。

それぞれの演算の例を見てみましょう。

ビット AND

2 つの画像の画素値のビットのビット単位の AND を計算するために.bitwise_and()を使用します。

bitwise_and = cv2.bitwise_and(img1, img2)

ビット OR

2 つの画像の画素値のビットのビット単位の OR を計算するために.bitwise_or()を使用します。

bitwise_or = cv2.bitwise_or(img1, img2)

ビット XOR

2 つの画像の画素値のビットのビット単位の XOR を計算するために.bitwise_xor()を使用します。

bitwise_xor = cv2.bitwise_xor(img1, img2)

ビット NOT

2 つの画像の画素値のビットのビット単位の NOT を計算するために.bitwise_not()を使用します。

bitwise_not_img1 = cv2.bitwise_not(img1)

結果を保存する

結果を書き出します。

cv2.imwrite('Bitwise_AND.jpg', bitwise_and)
cv2.imwrite('Bitwise_OR.jpg', bitwise_or)
cv2.imwrite('Bitwise_XOR.jpg', bitwise_xor)
cv2.imwrite('Bitwise_NOT_Image1.jpg', bitwise_not_img1)

生成された画像は以下のようになります。

  • AND Bitwise_AND.jpg
ビット AND 演算の結果
  • OR Bitwise_OR.jpg
ビット OR 演算の結果
  • XOR Bitwise_XOR.jpg
ビット XOR 演算の結果
  • NOT Bitwise_NOT_Image1.jpg
ビット NOT 演算の結果

まとめ

おめでとうございます!これで OpenCV-Python を使って画像に対して算術演算を行う方法を学びました。画像の加算、減算、およびビット演算を学びました。これらの基本演算は、画像の合成、変化の検出、画像の特定領域のマスキングなど、画像処理タスクにとても役立ちます。

これらの演算がどのように機能するかをより深く理解するために、さまざまな画像を使って練習して実験し続けてください。ご成功をお祈りしております。楽しいコーディングをお過ごしください!