durch die Formel auf dieser Seite anzupassen: http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html, ich glaube dir dies eine Kombination aus CIColorMatrix
, CIGammaAdjust
und anderen CIColorMatrix
mit tun können.
der die Eingangspegel inBlack
, inGamma
und inWhite
bzw. zurückgerufen, und die Ausgangspegel outBlack
und outWhite
. Beachten Sie, dass Photoshop-Farben zwischen 0 und 255 liegen, während CI-Farben zwischen 0 und 1 liegen. Daher müssen Sie die Photoshop-Werte (außer inGamma
!) Durch 255 teilen, bevor Sie sie in die folgenden Formeln einfügen.
Die Eingangs Mapping pixel = (inPixel-inBlack)/(inWhite-inBlack)
ist, was bedeutet, dass Ihre erste Matrix
red = [1/(inWhite-inBlack) 0 0 0]
green = [0 1/(inWhite-inBlack) 0 0]
blue = [0 0 1/(inWhite-inBlack) 0]
alpha = [0 0 0 1]
bias = [-inBlack/(inWhite-inBlack), -inBlack/(inWhite-inBlack),-inBlack/(inWhite-inBlack), 0]
Dann Sie Korrektur anwenden Gamma wird CIGammaAdjust
und die inGamma
Nummer (I die inverse 1/inGamma
verwenden musste, wenn meine Berechnungen zu tun, versuchen Sie, dass auch!).
Schließlich ist die Ausgangsabbildungs Pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack
, können Sie die letzte Matrix
red = [(outWhite - outBlack) 0 0 0]
green = [0 (outWhite - outBlack) 0 0]
blue = [0 0 (outWhite - outBlack) 0]
alpha = [0 0 0 1]
bias = [outBlack outBlack outBlack 0]
ich nicht wirklich diese Coreimage mit versucht haben, zu geben, aber die Berechnungen arbeiten gut aus!
Können Sie diesen Teil erklären? pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack – Eric
Die Formel aus dem Link war 'outPixel = (pow ((inPixel * 255.0) - inBlack)/(inWhite - inBlack), inGamma) * (outWhite - outBlack) + outBlack)/255.0 'so dass der Teil außerhalb des 'pow' ist (die Formel wird in eine Matrixmultiplikation vor dem' pow' dekonstruiert, das 'pow' selbst als Gammakorrektur und dann eine Matrix für alles was nach dem' 'auftritt pow). – jakber
also, inBlack = 31, inGamma = 1,25 und inWhite = 255? Dann müssen wir diese Werte durch 255 teilen? –