画像における算術演算

OpenCVOpenCVBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL opencv(("OpenCV")) -.-> opencv/BasicOperationsGroup(["Basic Operations"]) opencv/BasicOperationsGroup -.-> opencv/add("Image Addition") opencv/BasicOperationsGroup -.-> opencv/add_weighted("Image Blending") opencv/BasicOperationsGroup -.-> opencv/bitwise_and("Bitwise AND") opencv/BasicOperationsGroup -.-> opencv/bitwise_not("Bitwise NOT") opencv/BasicOperationsGroup -.-> opencv/bitwise_or("Bitwise OR") opencv/BasicOperationsGroup -.-> opencv/bitwise_xor("Bitwise XOR") opencv/BasicOperationsGroup -.-> opencv/imread("Image Read") opencv/BasicOperationsGroup -.-> opencv/imwrite("Image Write") opencv/BasicOperationsGroup -.-> opencv/subtract("Image Subtraction") subgraph Lab Skills opencv/add -.-> lab-38502{{"画像における算術演算"}} opencv/add_weighted -.-> lab-38502{{"画像における算術演算"}} opencv/bitwise_and -.-> lab-38502{{"画像における算術演算"}} opencv/bitwise_not -.-> lab-38502{{"画像における算術演算"}} opencv/bitwise_or -.-> lab-38502{{"画像における算術演算"}} opencv/bitwise_xor -.-> lab-38502{{"画像における算術演算"}} opencv/imread -.-> lab-38502{{"画像における算術演算"}} opencv/imwrite -.-> lab-38502{{"画像における算術演算"}} opencv/subtract -.-> lab-38502{{"画像における算術演算"}} end

画像の加算

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

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