Whatsapp Telegram Telegram Call Anrufen

Bildverbesserung


1. Histogrammausgleich (Histogram Equalization)

Der Histogrammausgleich ist eine Technik zur Verbesserung des Kontrasts in Bildern. Diese Methode passt die Helligkeitswerte an, sodass das Histogramm des Bildes gleichmäßiger verteilt wird.

Beispiel: Histogrammausgleich in einem Graustufenbild

import cv2
# Installieren Sie Matplotlib, falls es noch nicht installiert ist. (pip install matplotlib)
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg', 0)  # 0 für Graustufen

# Histogrammausgleich anwenden
bild_eq = cv2.equalizeHist(bild)

# Originales und verbessertes Bild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild, cmap='gray')
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_eq, cmap='gray')
plt.title('Histogrammausgeglichens Bild')
plt.axis('off')

plt.show()


Ausgabe: 

equalizehist OpenCV

2. Bildglättung (Image Smoothing)

Bildglättungstechniken werden verwendet, um Rauschen in Bildern zu reduzieren. Häufig verwendete Methoden sind einfache Unschärfe, Gaußsche Unschärfe und Medianfilter.

2.1. Einfache Unschärfe

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Einfache Unschärfe anwenden
bild_blur = cv2.blur(bild, (5, 5))

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_blur_rgb = cv2.cvtColor(bild_blur, cv2.COLOR_BGR2RGB)

# Originales und geglättetes Bild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_blur_rgb)
plt.title('Einfach geglättetes Bild')
plt.axis('off')

plt.show()


Ausgabe:

Einfach schärfe OpenCV

2.2. Gaußsche Unschärfe

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Gaußsche Unschärfe anwenden
bild_gaussian = cv2.GaussianBlur(bild, (5, 5), 0)

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_gaussian_rgb = cv2.cvtColor(bild_gaussian, cv2.COLOR_BGR2RGB)

# Originales und geglättetes Bild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_gaussian_rgb)
plt.title('Gaußsche geglättetes Bild')
plt.axis('off')

plt.show()


2.3. Medianfilter

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Medianfilter anwenden
bild_median = cv2.medianBlur(bild, 5)

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_median_rgb = cv2.cvtColor(bild_median, cv2.COLOR_BGR2RGB)

# Originales und geglättetes Bild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_median_rgb)
plt.title('Median-geglättetes Bild')
plt.axis('off')

plt.show()


Medianfilter OpenCV

3. Schärfen und Kantendetektion

Schärfungstechniken betonen die Kanten und Details in einem Bild. Die Kantendetektion wird häufig verwendet, um die Konturen von Objekten im Bild zu erkennen.

3.1. Bildschärfung

import cv2
from matplotlib import pyplot as plt
import numpy as np

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Schärfungsfilter anwenden
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
bild_sharp = cv2.filter2D(bild, -1, kernel)

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_sharp_rgb = cv2.cvtColor(bild_sharp, cv2.COLOR_BGR2RGB)

# Originales und geschärftes Bild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_sharp_rgb)
plt.title('Geschärftes Bild')
plt.axis('off')

plt.show()


Bildschärfung OpenCV

3.2. Kantendetektion mit Canny


import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg', 0)  # 0 für Graustufen

# Canny-Kantendetektion anwenden
edges = cv2.Canny(bild, 100, 200)

# Originales und Kantendetektionsbild anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild, cmap='gray')
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(edges, cmap='gray')
plt.title('Canny-Kantendetektion')
plt.axis('off')

plt.show()

Ausgabe:

Kantendetektion mit Canny opencv


Diese Techniken zur Bildverbesserung können verwendet werden, um den Kontrast zu erhöhen, Rauschen zu reduzieren, Details zu betonen und Kanten zu erkennen. Jede Methode hat ihre eigenen Anwendungen und kann auf unterschiedliche Arten von Bildern angewendet werden, um die gewünschte Verbesserung zu erzielen.




CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!