2012-12-07 28 views
6

मैं CIFilter करने के लिए कई फ़ोटोशॉप तत्वों मानचित्रण रहा हूँ, केवल एक ही मैं कुछ समस्या आ रही इस स्तर समायोजन है:मैं कोर छवि फ़िल्टर में फ़ोटोशॉप के स्तर समायोजन को कैसे मैप कर सकता हूं?

screen shot from current version of photoshop

कौन सा सीआई फ़िल्टर (या फिल्टर के संयोजन) होगा मुझे पहले उदाहरण में 16, 1.73, 23 9 & 39/245 ऊपर या दूसरे उदाहरण में 31, 1.25, 255 30/255 का उपयोग करने दें। मेरा मानना ​​है कि यह एक प्रकार का छाया/काला और सफेद स्तर समायोजन है।

किसी भी मदद की सराहना की।

उत्तर

8

इस पेज से सूत्र अनुकूल द्वारा: 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 है, लेकिन गणना अच्छी तरह से काम करते हैं!

+0

क्या आप इस भाग को समझा सकते हैं? pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack – Eric

+0

लिंक से सूत्र 'आउट पिक्सेल = (पाउ (((पिक्सेल * 255.0) - इनब्लैक)/(inWhite - inBlack), गामा में) * (आउटहाइट - आउटब्लैक) + आउटब्लैक)/255.0' तो यह 'पाउ' के बाहर का हिस्सा है (सूत्र को 'पाउ' से पहले लागू एक मैट्रिक्स गुणा में विघटित किया गया है, 'पाउ' स्वयं गामा सुधार के रूप में लागू होता है और फिर ' pow')। – jakber

+0

तो, inBlack = 31, ingma = 1.25 और inWhite = 255? फिर, हमें इन मूल्यों को 255 तक विभाजित करना होगा? –