2012-03-30 1 views
0

ユーザーがキャプチャ画像ボタンをクリックしたときにアンドロイドカメラのハードウェアから画像をキャプチャする方法は2通りあります。 autoFocusを呼び出し、autoFocusCallbackが成功応答で完了した後、イメージをキャプチャします。 2つは、autoFocusをまったく呼び出さずにイメージをキャプチャします。どちらの場合も、onPictureTakenメソッドに渡される結果のバイト配列の長さが異なることに気付きました。 autoFocusの呼び出しが完全に無視された場合、autoFocus呼び出しが正常に完了し、autoFocusCallbackを呼び出すのは通常、少なくとも50Kバイト以上です。どうしてこんなことに?誰かが光を放つことができるだろうか?私が理解していないことは、autoFocusが正常に完了したら、画像の品質が良いはずがないということです。そして、典型的には、品質は、各ピクセルのRGBチャネルを表す各バイトのビットの値である。全体のピクセル数、したがってRGBチャネルを表す総バイト数は、RGBバイトにロードされるビットの値に関係なく同じでなければなりません。しかし、明らかに、autoFocusが実行された後のより明瞭な画像のために、通常の透明画像よりも多くのバイトのデータが含まれているようです。autoFocusを実行した後、AndroidカメラAPIの方が大きくなる

今月1か月以上にわたって調査されています。迅速な答えを本当に感謝します。

答えて

0

すべての画像/ビデオキャプチャドライバは、キャプチャにYUV形式を使用します。ほとんどの場合、形式はYUV420またはYUV422です。

オートフォーカスの呼び出し後に撮影された写真は、シャープでコントラストが優れており、オートフォーカスなしで撮影された画像にも同じシェーピングが欠けています。 。

Jpeg画像圧縮は画像のデータを圧縮するのに使用されていますが、圧縮はマクロブロック(画像の四角形ブロック)に基づいています。より鮮明なエッジおよびより詳細な画像は、ぼかし画像よりエンコードするためにより多くの係数を必要とする。なぜなら、隣接画素の大部分は平均化されたように見えるからである。これは、オートフォーカスされた画像がより詳細なデータを持っている理由です。

関連する問題