android महत कैसे रंग सुधार लाभ से रंग तापमान प्राप्त करने के लिए



लाल+हरा (1)

चूंकि आपने एप्पल के बारे में उल्लेख किया है, वही प्राप्त करने के लिए विधि प्रदान की गई है।

मैं विधि पर एप्पल प्रलेखन के साथ शुरू कर रहा हूँ

एप्पल दस्तावेज़ीकरण से

temperatureAndTintValues बारे में एप्पल प्रलेखन एंड टिंट वैल्यू इस प्रकार है:

उपकरण-विशिष्ट सफेद संतुलन आरजीबी लाभ मूल्यों को डिवाइस-स्वतंत्र तापमान और टिंट मूल्यों में परिवर्तित करता है।

संदर्भ: एप्पल द्वारा दस्तावेज़ीकरण

एक ही कार्यक्षमता हम नीचे तरीकों का पालन करके एंड्रॉइड में भी लागू कर सकते हैं।

स्थिति में आरजीबी घटकों को खोजें

int x = (int)event.getX();
int y = (int)event.getY();
int pixel = bitmap.getPixel(x,y);

int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel); 

सहसंबद्ध रंग तापमान (सीसीटी), जिसे किल्विन (के) में 1,000 से 10,000 तक पैमाने पर मापा जाता है।

निम्नलिखित चित्र सीसीटी और कुछ रंगों के बीच संबंध को दर्शाता है

आरजीबी मूल्य से रंग तापमान की गणना

एसओ पोस्ट के अनुसार रंग के तापमान को आसानी से निम्नलिखित सूत्रों का उपयोग करके गणना की जा सकती है

1. सीआईई ट्रिस्टिमुलस वैल्यू (एक्सवाईजेड) को निम्न प्रकार से खोजें:

X=(−0.14282)(R)+(1.54924)(G)+(−0.95641)(B)
Y=(−0.32466)(R)+(1.57837)(G)+(−0.73191)(B)=Illuminance
Z=(−0.68202)(R)+(0.77073)(G)+(0.56332)(B)

2. सामान्यीकृत क्रोमैटिटाइटी मानों की गणना करें:

x=X/(X+Y+Z)
y=Y/(X+Y+Z)

3. से सीसीटी मूल्य की गणना:

CCT=449n3+3525n2+6823.3n+5520.33

where n=(x0.3320)/(0.1858y)

समेकित फॉर्मूला (आरजीबी से सीसीटी)

CCT=449n3+3525n2+6823.3n+5520.33
where n=((0.23881)R+(0.25499)G+(−0.58291)B)/((0.11109)R+(−0.85406)G+(0.52289)B)

एंड्रॉयड

जावा का उपयोग करके समान समीकरण लागू करें

नोट: संदर्भ पत्र

TAOS TCS3414CS डिजिटल रंग सेंसर का उपयोग करते हुए रंग तापमान और इल्यूमिनेंस की गणना करना

अन्य प्लेटफार्मों में समान लागूकरण

PHP - SO पोस्ट

पायथन - SO पोस्ट

ध्यान दें:

आरजीबी से रंग तापमान को परिवर्तित करने की समस्या यह है कि लगभग 16 मिलियन आरजीबी रंग हैं, लेकिन इन रंगों का केवल एक बहुत छोटा समूह वास्तव में एक रंग तापमान के अनुरूप है

उदाहरण के लिए एक हरे रंग का रंग किसी भी तापमान के अनुरूप नहीं है - यह असंभव है कि मानव मस्तिष्क कैसे प्रकाश समझती है यह याद रखना कि ऊपर का डेमो वास्तव में सिर्फ एक सन्निकटन है, यह सैद्धांतिक रूप से किसी भी रंग से संबंधित तापमान को देखने के लिए संभव होगा, लेकिन यह अधिकांश रंगों के लिए काम नहीं करेगा।

क्यों ग्रीन बाहर रखा गया है? पढ़ें: क्यों कोई बैंगनी या ग्रीन सितारे हैं?

कई स्पष्टीकरण अन्य साइटों से लिए गए हैं,

आशा है कि सब कुछ अपनी जरूरत के लिए योग!

https://code.i-harness.com

मैं कैमरे द्वारा कब्जा कर लिया गया फोटो के रंग तापमान का पता लगाने की कोशिश कर रहा हूं।

final CameraCaptureSession.CaptureCallback previewSSession = new CameraCaptureSession.CaptureCallback() {
    @Override
    public void onCaptureStarted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, long timestamp, long frameNumber) {
        super.onCaptureStarted(session, request, timestamp, frameNumber);
    }

    @Override
    public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, TotalCaptureResult result) {
        super.onCaptureCompleted(session, request, result);
        RggbChannelVector rggbChannelVector = result.get(CaptureResult.COLOR_CORRECTION_GAINS);
        getColorTemperature(rggbChannelVector);

        startCamera();
    }
};

private void getColorTemperature(RggbChannelVector rggbChannelVector) {
    //rggbChannelVector.getRed() = 2.192929
    //rggbChannelVector.getGreenEven() = 1.0
    //rggbChannelVector.getGreenOdd() = 1.0
    //rggbChannelVector.getBlue() = 1.832323
}

ऐसा लगता है कि आईओएस को तापमान और टिंटवैल्यू करने के लिए आसानी से उपलब्ध विधि है

कुछ इसी तरह की खोज करते समय (जावा में या किसी अन्य भाषा में जिसे मैं अपनाना चाहूंगा), लगभग सभी तरह के तरीकों से [0, 255] सीमा के साथ आरजीबी मूल्य की उम्मीद है

XYZ को सीसीटी (सहसंबद्ध रंग तापमान) में कनवर्ट करने के कुछ तरीक़े हैं, लेकिन यहां तक ​​कि XYZ मान सही होने के लिए मुझे [0, 255] में आरजीबी मूल्यों की आवश्यकता है I

जैसा कि आप COLOR_CORRECTION_GAINS से मान देख सकते हैं >1 या 255 से अधिक है जो असामान्य नहीं है क्योंकि इसकी लाभ और आईओएस समान मूल्य (1 से अधिक) लौटे हैं।





android-camera2