2012-12-07 10 views
6

ich Abbilden mehrere Photoshop Elemente CIFilter, der einzige Fehler, bin ich mit ist diese Einstellmöglichkeiten:Wie kann ich die Pegelanpassung von Photoshop einem Core Image-Filter zuordnen?

screen shot from current version of photoshop

Welche CI Filter (oder eine Kombination von Filtern) Würde lassen Sie mich die oben genannten 16, 1.73, 239 & 39/245 im ersten Beispiel oder die 31, 1.25, 255 30/255 im zweiten Beispiel verwenden. Ich glaube, das ist eine Art Schatten/Schwarz-Weiß-Pegelanpassung.

Jede Hilfe wird geschätzt.

Antwort

8

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!

+0

Können Sie diesen Teil erklären? pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack – Eric

+0

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

+0

also, inBlack = 31, inGamma = 1,25 und inWhite = 255? Dann müssen wir diese Werte durch 255 teilen? –