2012-12-13 3 views
3

Comment je calcule le lux ou l'éclairement lumineux par l'iPhone Camera.I ont calculé toutes les données exif qui est aussi:illuminance calculate de données EXIF ​​

key = FocalLength, value = 3.85 
key = MeteringMode, value = 5 
key = ShutterSpeedValue, value = 4.591759434012097 
key = ExposureProgram, value = 2 
key = FocalLenIn35mmFilm, value = 32 
key = SceneType, value = 1 
key = FNumber, value = 2.4 
key = PixelXDimension, value = 480 
key = ExposureTime, value = 0.04166666666666666 
key = BrightnessValue, value = -0.2005493394308445 
key = ApertureValue, value = 2.526068811667588 
key = Flash, value = 32 
key = ExposureMode, value = 0 
key = PixelYDimension, value = 360 
key = SensingMethod, value = 2 
key = ISOSpeedRatings, value = (
     1250 
    ) 
key = WhiteBalance, value = 0 

Je lis http://en.wikipedia.org/wiki/Light_meter aussi et je suis venu pour savoir que Lux est calculé par (N*N*C)/tS

Where N is the relative aperture (f-number) 
t is the exposure time (“shutter speed”) in seconds 
S is the ISO arithmetic speed 
C is the incident-light meter calibration constant 

Je ne comprends pas ce que cette valeur se référer à, par exemple. N est ApertureValue ou FNumber à partir de Key Value Data et t est le temps d'exposition ou la vitesse d'obturation. Et Quelle est la valeur de C (320-540 ou 250). J'ai appliqué toutes les valeurs similaires dans une combinaison différente à cette formule, mais j'ai obtenu un mauvais résultat car je compare avec une application qui calcule les valeurs lux. J'ai également besoin de calibrer l'éclairement de l'éclairement.

En outre, j'ai calculé la Luminance de l'image capturée aussi par:

UIImage* image = [UIImage imageNamed:@"image.png"]; 
unsigned char* pixels = [image rgbaPixels]; 
double totalLuminance = 0.0; 
for(int p=0;p<image.size.width*image.size.height*4;p+=4) { 
    totalLuminance += pixels[p]*0.299 + pixels[p+1]*0.587 + pixels[p+2]*0.114; 
} 
totalLuminance /= (image.size.width*image.size.height); 
totalLuminance /= 255.0; 
NSLog(@"Image.png = %f",totalLuminance); 

par http://b2cloud.com.au/tutorial/obtaining-luminosity-from-an-ios-camera

Merci d'aide advance.Any sera apprécié.

Répondre

1

Avez-vous vraiment besoin de la valeur absolue de l'éclairement? Ou pouvez-vous sortir avec des valeurs relatives qui peuvent être comparées les unes aux autres, par ex. valeurs connues jusqu'à un facteur d'échelle constant? Si vous ne possédez pas de C dans les données exif, le récupérer avec une procédure d'étalonnage nécessite d'avoir une source lumineuse d'intensité connue et de prendre des photos dans une sphère d'intégration. Si ce dernier, il suffit de réécrire l'expression comme Lux = C * (N * N/St), où N == FNumber, t == ExposureTime, S == ISOSpeedRatings, définir C == 1 (ou tout arbitraire valeur)

+0

merci pour votre réponse.Je calcule la formule donnée par vous Mais il calcule la valeur entre 1 et 0.So Quelle est la manière exacte de calculer l'éclairement, Y at-il un autre moyen de calculer l'éclairement en LUX ... Merci à l'avance –

+0

Comme je l'ai dit, à moins que vous ne puissiez déterminer la constante du compteur à partir d'une fiche technique, le seul moyen serait de le calibrer. Pour obtenir une précision, vous avez besoin d'une sphère d'intégration (http://en.wikipedia.org/wiki/Integrating_sphere), d'un indicateur calibré pour connaître l'intensité de la source lumineuse et d'une séquence de prise de vue avec la caméra en cours de calibrage . –

+0

S'il vous plaît dites-moi le processus complet que je peux appliquer dans iOS Sdk.Je serai très reconnaissant à vous pour cela.Il existe de nombreuses applications pour iPhone qui calculent l'éclairement dans Lux. –