0

ユーザーが画像のキャプチャ ボタンをクリックしたときに、Android カメラ ハードウェアから画像をキャプチャするための 2 つの異なるアプローチを試しました。1 つは autoFocus を呼び出し、autoFocusCallback が成功応答で完了した後、画像をキャプチャします。2 つ目は、autoFocus をまったく呼び出さずに画像をキャプチャすることです。どちらの場合も、onPictureTaken メソッドに渡される結果のバイト配列の長さが異なることに気付きました。通常、autoFocus が正常に完了して autoFocusCallback を呼び出した後に発生するものは、autoFocus 呼び出しが完全に無視された場合よりも少なくとも 50K バイト大きくなります。どうしてこんなことに?誰かが光を投げてくれませんか?私が理解していないのは、autoFocus が正常に完了したときに、写真の質が良いですか?通常、品質は、各ピクセルの RGB チャネルを表す各バイトのビットの値です。ピクセルの総数、つまり RGB チャネルを表すバイトの総数は、RGB バイトにロードされるビットの値に関係なく同じである必要があります。しかし、オートフォーカスが実行された後、より鮮明な画像には、通常の鮮明な画像よりも多くのバイトのデータが含まれているようです。

1か月以上研究を続けています。迅速な回答をいただければ幸いです。

4

1 に答える 1

0

すべてのイメージ/ビデオ キャプチャ ドライバは、キャプチャに YUV 形式を使用します。ほとんどの場合、形式は YUV420 または YUV422 です。YUV 形式の詳細については、このリンクを参照してください http://www.fourcc.org/yuv.php

あなたが言及したように、オート フォーカス呼び出しの後に撮影された写真ははるかにシャープ (エッジがよりシャープでコントラストが向上) であり、オート フォーカスなしでキャプチャされた画像には同じシャープネスがありません。

ご存じのように、JPEG 画像圧縮は画像のデータを圧縮するために使用されます。圧縮はマクロ ブロック (画像内の正方形のブロック) に基づいています。隣接するピクセルのほとんどが平均化されているように見えるため、エッジがシャープでディテールが多い画像は、ぼかしのある画像よりもエンコードに多くの係数が必要です。これが、自動フォーカスされた画像がより多くの詳細を持っているため、より多くのデータを持つようにバインドされる理由です。

于 2012-03-30T04:46:29.630 に答える