Wie bekomme ich Farbtemperatur aus Farbkorrektur

Ich versuche, die Farbtemperatur eines von der Kamera aufgenommenen Fotos herauszufinden.

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 } 

IOS scheint eine leicht verfügbare Methode zu haben, um diese TemperaturAndTintValues zu tun

  • Cordova-Plugins aus dem Projekt entfernen
  • So entfernen Sie bestimmte Berechtigung beim Erstellen von Android App mit Gradle?
  • Testen Sie die localhost in android emulator
  • Adb-Shell-Befehle, um Einstellungen zu ändern oder Aufgaben auf einem Telefon auszuführen
  • Android-Fehler - Öffnen Failed ENOENT
  • Wie zeichne ich einen Kreis mit radialem Steigung in einer Leinwand?
  • Bei der Suche nach etwas Ähnlichem (in Java oder einer anderen Sprache, die ich annehmen kann), erwarten fast alle diese Methoden einen RGB-Wert mit [0, 255] Bereich.

    Es gibt nur wenige Methoden, um XYZ in CCT umzuwandeln (Correlated Color Temperature), aber auch um den XYZ-Wert richtig zu bekommen, brauche ich RGB-Werte mit in [0, 255]

    Wie Sie sehen können, sind die Werte von COLOR_CORRECTION_GAINS >1 dh größer als 255, was nicht ungewöhnlich ist, weil seine Verstärkung und iOS ähnliche Werte (größer als 1) zurückgibt.

  • stoppe nicht die animation in listview
  • Wie man Toast benutzt, wenn ich das nicht als Kontext verwenden kann
  • Wie kann man HomeButton ändern?
  • Die Symbolleiste erweitert sich
  • Stellen Sie die beschreibbare Größe programmgesteuert ein
  • Android Studio sagt "kann nicht beheben Symbol", sondern Projekt kompiliert
  • One Solution collect form web for “Wie bekomme ich Farbtemperatur aus Farbkorrektur”

    Da haben Sie über Apfel gegeben Methode zur Erreichung der gleichen erwähnt.

    Ich fange mit Apple Dokumentation über die Methode

    Von Apple Dokumentation

    Apfelunterlagen bezüglich temperatureAndTintValues ist wie folgt

    Konvertiert gerätespezifische Weißabgleich RGB-Verstärkungswerte auf geräteunabhängige Temperatur- und Farbwerte.

    Referenz: Dokumentation von Apple

    Gleiche Funktionalität können wir in Android auch durch die folgenden Methoden implementieren.

    Finden Sie die RGB-Komponenten in Position

     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); 

    Correlated Color Temperature (CCT), die in Grad Kelvin (K) auf einer Skala von 1.000 bis 10.000 gemessen wird.

    Das folgende Bild zeigt die Beziehung zwischen CCT und einigen Farben Bildbeschreibung hier eingeben


    Berechnung der Farbtemperatur vom RGB-Wert

    Nach dem SO Post kann die Farbtemperatur leicht mit den folgenden Formeln berechnet werden

    1. CIE tristimulus Werte (XYZ) wie folgt herausfinden:

     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. Berechnen Sie die normierten Farbwerte:

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

    3. Berechnen Sie den CCT-Wert aus:

     CCT=449n3+3525n2+6823.3n+5520.33 where n=(x−0.3320)/(0.1858−y) 

    Konsolidierte Formel (CCT von RGB)

     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) 

    Android

    Implementiere die gleiche Gleichung mit Java.

    Hinweis: Referenzpapier

    Berechnung der Farbtemperatur und Beleuchtungsstärke mit dem digitalen Farbsensor TAOS TCS3414CS


    Ähnliche Implementierungen in anderen Plattformen

    PHP – SO Post

    Python – SO Post

    Hinweis:

    Das Problem bei der Umwandlung von RGB in Farbtempo ist, dass es etwa 16 Millionen RGB-Farben gibt, aber nur eine sehr kleine Untermenge dieser Farben entspricht tatsächlich einer Farbtemperatur.

    Zum Beispiel Eine grüne Farbe entspricht keiner Temperatur – es ist unmöglich, wie das menschliche Gehirn Licht wahrnimmt. Denken Sie daran, dass die Demo oben wirklich nur eine Annäherung ist, wäre es theoretisch möglich, die Temperatur mit einer gegebenen Farbe zu betrachten, aber es würde nicht für die meisten Farben funktionieren.

    Warum ist Grün ausgeschlossen? Lesen: Warum gibt es keine lila oder grünen Sterne?


    Viele der Erklärungen werden von anderen Seiten genommen,

    Hoffe alles, was bis zu deiner Notwendigkeit!

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.