Einfache Arithmetik in numpy Arrays ist die schnellste, wie Abid Rahaman K kommentierte.
Verwenden Sie dieses Bild zum Beispiel: http://i.imgur.com/Yjo276D.png
Hier ist ein Bit der Bildverarbeitung, die Helligkeit/Kontrast Manipulation ähnelt:
'''
Simple and fast image transforms to mimic:
- brightness
- contrast
- erosion
- dilation
'''
import cv2
from pylab import array, plot, show, axis, arange, figure, uint8
# Image data
image = cv2.imread('imgur.png',0) # load as 1-channel 8bit grayscale
cv2.imshow('image',image)
maxIntensity = 255.0 # depends on dtype of image data
x = arange(maxIntensity)
# Parameters for manipulating image data
phi = 1
theta = 1
# Increase intensity such that
# dark pixels become much brighter,
# bright pixels become slightly bright
newImage0 = (maxIntensity/phi)*(image/(maxIntensity/theta))**0.5
newImage0 = array(newImage0,dtype=uint8)
cv2.imshow('newImage0',newImage0)
cv2.imwrite('newImage0.jpg',newImage0)
y = (maxIntensity/phi)*(x/(maxIntensity/theta))**0.5
# Decrease intensity such that
# dark pixels become much darker,
# bright pixels become slightly dark
newImage1 = (maxIntensity/phi)*(image/(maxIntensity/theta))**2
newImage1 = array(newImage1,dtype=uint8)
cv2.imshow('newImage1',newImage1)
z = (maxIntensity/phi)*(x/(maxIntensity/theta))**2
# Plot the figures
figure()
plot(x,y,'r-') # Increased brightness
plot(x,x,'k:') # Original image
plot(x,z, 'b-') # Decreased brightness
#axis('off')
axis('tight')
show()
# Close figure window and click on other window
# Then press any keyboard key to close all windows
closeWindow = -1
while closeWindow<0:
closeWindow = cv2.waitKey(1)
cv2.destroyAllWindows()
Originalbild in Graustufen:

Erhelltes Bild, das erweitert zu sein scheint:

abgedunkelte Bild, das erodiert zu sein scheint, geschärft, mit besserem Kontrast:

Wie die Pixelintensitäten transformiert werden: Wenn Sie

Spielen Sie mit den Werten phi
und theta
können Sie wirklich interessant ou bekommen wird. Sie können diesen Trick auch für Mehrkanal-Bilddaten implementieren.
--- EDIT ---
haben einen Blick auf die Begriffe 'Ebenen' und 'Kurven' auf this youtube video zeigt die Bildbearbeitung in Photoshop. Die Gleichung für die lineare Transformation erzeugt den gleichen Betrag, d. H. "Pegel" der Änderung für jedes Pixel. Wenn Sie eine Gleichung schreiben, die zwischen Pixeltypen unterscheiden kann (z. B. solchen, die bereits einen bestimmten Wert haben), können Sie die Pixel auf der Grundlage der von dieser Gleichung beschriebenen "Kurve" ändern.
Es wäre schon schneller. Es ist nur eine Addition und Multiplikation. –
Die Additions- und Multiplikationsoperationen können gleichzeitig ausgeführt werden, um interessante Effekte zu erhalten. Grundsätzlich kann jedes Pixel als 'X = aY + b' transformiert werden, wobei' a' und 'b' Skalare sind. Dies ist eine lineare Transformation.Ich habe eine quadratische Transformation in den Antworten gezeigt, die viel interessantere Ergebnisse hervorbringt;) – samkhan13