2017-02-24 5 views
2

私は、線形空間に入ることなくRAW画像の全体的なサイズを縮小することについて質問します。理由は、私は非常に大きなメガピクセルの画像(60メガピクセル以上)を編集しようとしていますが、iPadやiPhoneのスクリーンのようなもので編集するときは、フルイメージは必要ありません。編集が完了したら、元のファイルを保存します。保存のスピードは問題ではありません。編集をプレビューしている "作業中の"画像で行われた編集です。小さなスクリーンで編集するためにデバイヤーなしでRAW画像をダウンサンプリングするには?

私は新しいCoreImage RAW能力を活用し、独自のRAW CIFiltersを書きたいので、私はRAWデータを保存したいと思いますが、巨大なRAW画像を常に操作する必要はありません。

これは、Swiftの何か、または私が橋渡しすることができる言語で行うことができる場合です。実際のサイズ変更は超高速である必要はなく、おそらく編集を開始する前の1回の操作になります。

  1. デ・バイエル線形空間、そして、サイズ変更、およびベイヤー形式のRAWに戻って変換するRAW画像が、私はかどうかを知りません。私はthis post読んでからの二つのアプローチがあるかもしれないと信じて

    私はそのようにダウンサンプリングでデータを保存することができます。

  2. 何らかの理由で寸法を操作して小さくしてください。しかし、これは私が理解を助ける必要があるものです。

ありがとうございました!

答えて

1

私は、Swift/iOSのCoreImageや画像処理に親しんでいませんが、少なくとも出発点を教えてください。

原画像(モザイク画像)は基本的に1チャンネルの画像であり、異なるピクセルが異なる色に対応します。 (注目すべき例外を除いて、ほとんどのモザイクファイルのが一般的である)この構成では、各2×2の画素群は、画像を横切って繰り返すこと

R G R G 
G B G B 
R G R G 
G B G B 

注:一般的なレイアウトは次のように見えることができます。サイズ変更の目的のために、これらの2×2領域はスーパーピクセルと考えることができる。

イメージバッファのピクセルデータにファイルまたはメモリからアクセスできるとします。

低解像度のRAW画像を効率的に生成する最も簡単な方法は、ダウンサンプルの画像を整数係数でダウンすることです。これを行うには、新しいRAWイメージを形成するために行と列に沿って番目のスーパーピクセルを取るだけです。

ただし、新しいRAW画像のナイキスト周波数を元のRAW画像の最高周波数の周波数よりも低くする可能性があるため、この操作によってAliasingなどの画像アーチファクトが画像に表示されることがあります。

これを避けるには、ダウンサンプリングの前にAnti-Aliasing Filterを適用するとよいでしょう。しかし、まだ画像をモザイク化しておらず、異なるカラーチャンネル(R、G、B)が必ずしも相関しているわけではないので、カラーチャンネルごとにこのフィルタリングを適用する必要があります。

これは、長方形のグリッドを形成するRチャネルとBチャネルでは簡単に実行できますが、Gチャネルはかなり困難です。おそらく、この困難を克服する最も簡単な方法は、画像全体で長方形のGグリッドにフィルタを適用することです。

ここでは、RAWイメージアンチエイリアスダウンサンプリングは共通の機能ではないため、この機能のほとんどは最初から実装する必要があると仮定しています。用意されているリサンプリング機能を使用して低解像度のプレビューを作成し、デモザイクされたプレビューで画像を調整するだけで、元のRAWを単純にモザイク解除することで、かなりの時間を節約できます。次に、フル解像度の編集を保存する場合は、元に戻って、プレビューされた変更をフル解像度のモザイクRAW画像に適用します。

これはいくつかの出発点を提供します。

+0

こんにちはグレン、応答のおかげで! これはすべて意味がありますが、「スーパーピクセル」にアクセスする方法は不明です。ほとんどのドキュメントでは、CoreGraphicsを使用して線形空間の画像について説明していますが、実際にはRAW画像のスーパーピクセルではありません。 また、n番目のスーパーピクセルとは何ですか?これが何であるかあなたはどのように知っていますか? – kineticac

+0

ピクセルデータのバッファにアクセスできますか?そうであれば、スーパーピクセルはそのデータバッファ内のピクセルの2x2グループになります。インターフェイスしているCoreGraphicsオブジェクトの名前は何ですか? – Glenn

+0

究極の目標は、CIImageを使用してRAWイメージ(https://developer.apple.com/reference/coreimage/cifilter/raw_image_options)を初期化することですが、大きなRAWイメージを編集する場合はプロセスがかなり遅くなります。編集のためのダウンサンプリングは理想的であり、写真が保存されると実際にはフルサイズの画像が使用されます。つまり、私はRAWデータを保存できる限り何でも使用できます。 CoreGraphicsはピクセルデータを取得しますが、どのように処理するかはわかりません。これはデータを取得する方法ですか?http://stackoverflow.com/a/10412292/236480そのデータでは、どうやってどうなるか分かりません。 – kineticac

関連する問題