CGImage からピクセル値を取得するには、CGContextDrawImage を使用します (ここで説明したように: UIImage (Cocoa Touch) または CGImage (Core Graphics) からピクセル データを取得する方法は?)。唯一の違いは、通常の 32 bpp コンテキストではなく、128 bpp float コンポーネント コンテキストを作成することです。オプション kCGImageSourceShouldAllowFloat で作成された CGImageSource から取得されたソース CGImage。そうすれば、ビットマップ コンテキストの色空間と一致する float ピクセル値の色にアクセスし、それらをさらに画像処理に使用したいと考えていました。問題は、結果の画像データがダイナミック レンジを失っているように見えることです。影のある、真っ青な空の領域で見ることができます。それらは輪郭があり、細部が欠けています。一部の調査では、問題が CGContextDrawImage (ソース CGImage にはフル ダイナミック レンジが含まれており、CGImageDestination を介して保存することで証明されます) で発生し、CGContextDrawImage コンテキスト コンテンツがポスタライズされた後に発生することが示されました。
さらに調査した結果、次のこと がわかりました。 意図した動作。
私の質問は: コア グラフィックスを使用して画像から浮動小数点データを取得する正しい方法は何ですか?