OpenCV Arithmetische Bildoperationen

In der Bildverarbeitung sind arithmetische Operationen und bitweise Operationen sehr grundlegende und wichtige Operationen.

Dieser Artikel beschreibt detailliert, wie man OpenCV für Bildaddition, -subtraktion, -multiplikation, -division, bitweise Operationen und Bildüberblendung verwendet.

1. Grundlegende Operationen

Bildaddition

Bildaddition ist der Prozess des Addierens der entsprechenden Pixelwerte zweier Bilder, um ein neues Bild zu erzeugen.

In OpenCV können Sie diecv2.add()Funktion zur Implementierung der Bildaddition.

Beispiel

import cv2
import numpy as np

# Zwei Bilder einlesen
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

# Bildaddition
result = cv2.add(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Hinweis: Wenn der Pixelwert nach der Addition 255 überschreitet, schneidet OpenCV ihn automatisch auf 255 ab.

Bildsubtraktion

Bildsubtraktion ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder subtrahiert werden, um ein neues Bild zu erzeugen.

In OpenCV können Sie diecv2.subtract()Funktion zur Implementierung der Bildsubtraktion.

Beispiel

# Bildsubtraktion
result = cv2.subtract(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Hinweis: Wenn der Pixelwert nach der Subtraktion kleiner als 0 ist, schneidet OpenCV ihn automatisch auf 0 ab.

Bildmultiplikation

Die Bildmultiplikation ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder multipliziert werden, um ein neues Bild zu erzeugen.

In OpenCV können Sie diecv2.multiply()Funktion zur Implementierung der Bildmultiplikation.

Beispiel

# Bildmultiplikation
result = cv2.multiply(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Hinweis: Wenn der Pixelwert nach der Multiplikation 255 überschreitet, schneidet OpenCV ihn automatisch auf 255 ab.

Bilddivision

Die Bilddivision ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder dividiert werden, um ein neues Bild zu erzeugen. In OpenCV kannst du diecv2.divide()Funktion zur Implementierung der Bilddivision.

Beispiel

# Bilddivision
result = cv2.divide(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Hinweis: Wenn der Divisor 0 ist, setzt OpenCV das Ergebnis automatisch auf 0.

2. Bitweise Bildoperationen (AND, OR, NOT, XOR)

Bitweise Operationen führen binäre Bitoperationen an jedem Pixel des Bildes durch.

OpenCV bietetcv2.bitwise_and()、cv2.bitwise_or()、cv2.bitwise_not()undcv2.bitwise_xor()Funktionen zur Implementierung bitweiser Operationen auf Bildern.

FunktionFunktionalitätAnwendungsszenarien
cv2.bitwise_and()Bitweise AND-OperationMaskierung, Bildsegmentierung
cv2.bitwise_or()Bitweise OR-OperationBildüberlagerung
cv2.bitwise_not()Bitweise NOT-OperationBildinvertierung
cv2.bitwise_xor()Bitweise XOR-OperationBilddifferenzerkennung

Bitweise AND-Operation (AND)

Die bitweise AND-Operation wendet eine bitweise AND-Verknüpfung auf jedes Pixel zweier Bilder an.

Beispiel

# Bitweise AND-Operation
result = cv2.bitwise_and(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Bitweise OR-Operation (OR)

Die bitweise OR-Operation wendet eine bitweise OR-Verknüpfung auf jedes Pixel zweier Bilder an.

Beispiel

# Bitweise OR-Operation
result = cv2.bitwise_or(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Bitweise NOT-Operation (NOT)

Die bitweise NOT-Operation wendet eine bitweise Inversion auf jedes Pixel eines Bildes an.

Beispiel

# Bitweise NOT-Operation
result = cv2.bitwise_not(img1)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Bitweise XOR-Operation (XOR)

Die bitweise XOR-Operation führt bei jedem Pixel zweier Bilder ein bitweises XOR durch.

Beispiel

# Bitweise XOR-Operation
result = cv2.bitwise_xor(img1, img2)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. Bildüberblendung (cv2.addWeighted())

Bildüberblendung ist der Prozess, zwei Bilder gemäß bestimmten Gewichten linear zu kombinieren, um ein neues Bild zu erzeugen.

In OpenCV können Sie diecv2.addWeighted()Funktion zur Implementierung der Bildüberblendung.

Beispiel

# Bildüberblendung
alpha = 0.7  # Gewicht des ersten Bildes
beta = 0.3   # Gewicht des zweiten Bildes
gamma = 0    # Optionaler Skalarwert

result = cv2.addWeighted(img1, alpha, img2, beta, gamma)

# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Parameterbeschreibung:

  • alpha: Gewichtung des ersten Bildes.
  • beta: Gewichtung des zweiten Bildes.
  • gamma: Optionaler Skalarwert, normalerweise auf 0 gesetzt.

Formel:

result = img1 * alpha + img2 * beta + gamma

Zusammenfassung

Dieser Artikel beschrieb ausführlich die arithmetischen Bildoperationen, bitweisen Operationen und die Bildüberblendung in OpenCV. Diese Operationen sind die Grundlage der Bildverarbeitung, und ihre Beherrschung ist entscheidend für nachfolgende, komplexere Bildverarbeitungsaufgaben. Durch Üben dieser Operationen können Sie die Grundprinzipien der Bildverarbeitung besser verstehen und ein solides Fundament für zukünftige Computer-Vision-Aufgaben legen.

Weitere Erweiterungen