3

特定の写真の照度を計算するアプリケーションを入手しました。

私の問題は次のとおりです。i can't find a way to calculate this illuminance index (in lux)

私はluminosityこのコードで取得できます:

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

ソース

しかし、結果は の間にあり、魔法使いは計算に0 and 1使用できないと思いますilluminancelux

スタック オーバーフローに関する回答を探していると、この回答が見つかりました.

..ピクセルデータを無視して、露出情報を露出計として使用できます。...

どうやって?誰も私がそれを行う方法を知っていますか? またはそれを行うより良い方法はありますか?

4

1 に答える 1

3

Exif データから露出値がわかっている場合、全シーン照度は次のように計算できます。

pow(2, Exposure)*(0.3 * Calibration);

残念ながら、キャリブレーションは、イメージングしているシーンの物理的特性に依存します。暗くて反射率の低いオブジェクトがたくさんある場合は、定数を高く設定する必要があります。

通常、式から得られる平均照度、つまりすべての Y 値の合計をピクセル数で割った値が約 0.5 になるように露出が機能します (ただし、これはカメラの「頭脳」によって異なります。カメラによっては、たとえば、エッジを暗くすることを意味する場合でも、中央領域で 0.5 を取得しようとします。最新のカメラは、推測したものからほとんどの詳細をキャプチャするために、コントラスト値を統合します。 「関心のあるゾーン」になります)。

これは、何らかの方法で補償することなく、固定速度で写真を撮り、設定を停止するようにカメラに指示しない限り、画像は常に「スケーリング」されることを意味します。そうすれば、ピクセルの平均輝度を使用して、全体の見かけの照度を決定できます。

ただし、常に既知のメーターで結果を調整する必要があります。

于 2012-07-19T15:02:21.023 に答える