इस पेज से सूत्र अनुकूल द्वारा: http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html, मैं तुम्हें CIColorMatrix
, CIGammaAdjust
और एक अन्य CIColorMatrix
के संयोजन का उपयोग कर ऐसा कर सकते विश्वास करते हैं।
के इनपुट स्तर inBlack
, inGamma
और inWhite
क्रमशः, और उत्पादन का स्तर outBlack
और outWhite
कहते हैं। ध्यान दें कि फ़ोटोशॉप रंग 0 और 255 के बीच है जबकि सीआई रंग 0 और 1 के बीच हैं, इसलिए आपको फ़ोटोशॉप मानों को विभाजित करने की आवश्यकता है (inGamma
!) को 255 तक निम्नलिखित सूत्रों में डालने से पहले।
इनपुट मानचित्रण pixel = (inPixel-inBlack)/(inWhite-inBlack)
है, जिसका अर्थ है अपने पहले मैट्रिक्स
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]
तो फिर तुम CIGammaAdjust
और inGamma
नंबर का उपयोग कर गामा सुधार लागू हो जाएगा (मैं जब मेरी गणना कर उलटा 1/inGamma
का इस्तेमाल किया था, कि कोशिश भी!)।
अंत में उत्पादन मानचित्रण आप अंतिम मैट्रिक्स
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]
मैं वास्तव में इस प्रयास नहीं किया है CoreImage का उपयोग कर दे रही है, पिक्सेल = gammaCorrectedPixel * (outWhite - outBlack) + outBlack
है, लेकिन गणना अच्छी तरह से काम करते हैं!
क्या आप इस भाग को समझा सकते हैं? pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack – Eric
लिंक से सूत्र 'आउट पिक्सेल = (पाउ (((पिक्सेल * 255.0) - इनब्लैक)/(inWhite - inBlack), गामा में) * (आउटहाइट - आउटब्लैक) + आउटब्लैक)/255.0' तो यह 'पाउ' के बाहर का हिस्सा है (सूत्र को 'पाउ' से पहले लागू एक मैट्रिक्स गुणा में विघटित किया गया है, 'पाउ' स्वयं गामा सुधार के रूप में लागू होता है और फिर ' pow')। – jakber
तो, inBlack = 31, ingma = 1.25 और inWhite = 255? फिर, हमें इन मूल्यों को 255 तक विभाजित करना होगा? –