Mac OS X 10.4で導入された画像処理技術
Core Imageは 、Mac OS Xにおけるピクセル精度、ほぼリアルタイム、非破壊画像処理技術です。Mac OS X 10.4以降のQuartzCoreフレームワークの一部として実装されたCore Imageは、 Quartz グラフィックスレンダリング層内でフィルタやエフェクトを適用するためのプラグインベースのアーキテクチャを提供します 。 [1]このフレームワークは後に iOS 5 でiOSにも追加されました 。 [2]
概要
Core Imageは、画像にフィルタを適用する際に必要なピクセルレベルの操作プロセスを抽象化することで、アプリケーションが膨大なコーディングなしに画像変換機能を実装することを容易にします。シンプルな実装では、Core Imageは与えられたソースのピクセルデータに単一の Image Filter を適用し、変換された画像を生成します。各Image Filterは、Core Imageに組み込まれているか、 Image Unit と呼ばれるプラグインから読み込まれる単一の変換または効果を指定します。プリセットまたはユーザー定義の入力パラメータと組み合わせることで、フィルタは元のピクセルデータを変更することなく適用できるため、非破壊的な画像編集が可能になります。 [3] [4]
Photoshop と同様に 、Core Imageは同じ画像ソースに複数のフィルターを適用できます。Core Imageは、一連のフィルターを個別に適用するのではなく、動的な 命令パイプライン を組み立てることで、ピクセルデータに1回の計算のみを適用し、累積的な効果を実現できます。複数のフィルターに関連付けられたピクセル操作は、処理時間を大幅に増加させることなく同時に適用できます。フィルターの数に関係なく、Core Imageはこの命令パイプラインのコードを ジャストインタイムコンパイラ で組み立てます。このコンパイラは、CPUまたはグラフィックカードのGPUのいずれか、計算が速い方で実行されます。 [5]
フィルタは Core Imageカーネル言語で記述されており、 OpenGL Shading Language(GLSL) とコマンドのサブセットを共有しています 。 [6] 互換性のあるGPUが利用可能な場合、Core ImageコンパイラはGLSLを使用して命令パイプラインを記述し、バッファと状態を透過的に処理します。GPUレンダリングが優先されますが [ 要出典 ] 、コンパイラは CPUフォールバック モードで動作し、代わりに現在のCPUアーキテクチャに適したコマンドを生成することができます。 [7] CPUフォールバックは、現在のCPUまたはCPUsの ベクトル処理 機能を使用し 、マルチプロセッサを認識します。したがって、Core Imageのパフォーマンスは、GPUのGLSL機能またはCPUの処理能力に依存します。サポートされているGPUを使用すると、ほとんどのエフェクトをリアルタイムまたはほぼリアルタイムでレンダリングできます。 [8]
歴史と実装
Core Imageは Mac OS X 10.4 で導入されました。 [9]
初期の使用例としては、 Dashboard の リップルエフェクト や、Appleのプロフェッショナル向けデジタル写真アプリケーションである Apertureが 挙げられます。 [10] Mac OS X 10.5 以降では 、Image Kitを実装するすべてのアプリケーションでCore Imageを利用できます。 [11] Preview や iPhotoが 一般的な例です。
2011年、AppleはiOS 5.0でCore ImageをiOSに追加しました。 [2]
Xcode ツールには Core Image Fun House と Quartz Composer が含まれており 、 どちら も Core Image を使用します。
Core ImageプラグインのアーキテクチャはCore Audioのアーキテクチャに触発されました。
ピクセル精度
イメージユニットが提供するすべてのピクセル処理は、 RGBA (プリマルチプライドアルファ)カラースペースで実行され、赤、緑、青、透明度( アルファ )の4つのカラーチャンネルが格納されます。各カラーチャンネルは32ビットの 浮動小数点数で表されます。これにより、 人間の目 で認識できるよりもはるかに深い色深度が得られます。これは 、各ピクセルが128ビットベクトル(4つの32ビットカラーチャンネル)で表されるためです。ビット深度の低いカラースペースでは、Core Imageが採用する浮動小数点計算モデルが非常に高いパフォーマンスを発揮し、複数の画像やビデオフレームを処理する際に役立ちます。 [3] [13]
サポートされているグラフィックプロセッサ
必要なOpenGL Shader( GLSL )コマンドをサポートするプログラマブルGPUであれば、Core Imageに対応しています。AppleはMac OS X 10.4およびApertureでCore Image GPU処理をサポートするために以下のグラフィックカードを使用しているため、以下のリストは最低要件の例として考えることができます。 [10] [14]
ATI Mobility Radeon 9700 (Mobility Radeon 9600 も使用可能)
ATI Radeon 9550、9600、9650、9600 XT、9600 Pro、9700 Pro、9800 XT、および 9800 Pro
ATI Radeon X600 XT、X600 Pro、X800 XT、X850 XT、X1600、X1900 XT
ATI Radeon HD 2400 XT、HD 2600 Pro、および HD 2600 XT
NVIDIA GeForce FX 5200 Ultra、FX Go 5200
NVIDIA GeForce 6600、6600 LE、6800 Ultra DDL、および 6800 GT DDL
NVIDIA GeForce 7300 GT、7600 GT、および 7800 GT
NVIDIA GeForce 8600M GT および 8800 GT
NVIDIA GeForce 9400M & 9600M GT
NVIDIA GeForce GT 120 および GT 130
NVIDIA GeForce GTX 285
NVIDIA Quadro FX 4500 および FX 5600
NVIDIA Quadro FX 4800
NVIDIA Quadro 4000
NVIDIA GeForce 320M
NVIDIA GeForce GT 330M
NVIDIA GeForce GT 640M
NVIDIA GeForce GT 650M
NVIDIA GeForce GTX 660M
NVIDIA GeForce GTX 675M
NVIDIA GeForce GTX 680MX
NVIDIA GeForce GT 750M
NVIDIA GeForce GT 755M
NVIDIA GeForce GTX 775M
NVIDIA GeForce GTX 780M
Intel GMA 900 、 GMA 950 、または GMA X3100
インテル HD グラフィックス 3000 (Sandy Bridge)
インテル HD グラフィックス 4000 (Ivy Bridge)
インテル HD グラフィックス 5000 (Haswell)
インテル Iris 5100(Haswell)
インテル Iris Pro 5200(Haswell)
インテル HD グラフィックス 5300 (Broadwell)
インテル HD グラフィックス 6000 (Broadwell)
インテル アイリス 6100(ブロードウェル)
なお、Core Image命令を処理できるGPUであれば、 Quartz Extreme にも対応しています。Core Imageの要件はQuartz Extremeよりも厳しくなっています。 [14]
内蔵フィルター
「カラーモノクロ」、「平行四辺形タイル」、「ピンチ歪み」画像ユニットを適用したWikipediaロゴ
macOSには、以下を含む多くのフィルターが組み込まれています。Mac OS X 10.4では100種類以上のフィルターが導入され、Mac OS X 10.5ではさらに追加されました。 [3] [15]
中央値、ガウス、モーション、ノイズなどのぼかし
露出、ガンマ調整、セピアトーンなどの色調整と効果
加算や 乗算ブレンド 、ハードライトなどの合成操作
ピンチ、サークルスプラッシュ、ボルテックスなどの歪み
スターシャインやレンチキュラーハローのようなジェネレーター
切り取り、拡大縮小、回転、 アフィン変換などのジオメトリ調整
ハーフトーン、タイル、ポスタライズフィルター
ディゾルブやリップルなどのトランジション
参照
参考文献
^ 「Mac Dev Center - Core Imageプログラミングガイド入門」 。 2009年 9月20日 閲覧。
^ ab 「iOS 5.0 API Diffs」 。 2012年 9月14日 閲覧 。
^ abc 「Apple - Developer - Developing with Core Image」。2009年10月6日時点のオリジナルよりアーカイブ 。 2009年 9月20日 閲覧。
^ 「Mac Dev Center - Core Imageプログラミングガイド入門 - フィルタクライアントとフィルタクリエーター」 。 2009年 9月20日 閲覧 。
^ 「ArsTechnica - Mac OS X 10.4 Tiger - 15ページ」2005年4月28日. 2009年 9月20日 閲覧 。
^ 「Mac Dev Center - Core Image カーネル言語リファレンス - 概要」 。 2009年 9月20日 閲覧 。
^ 「Mac Dev Center - Core Image プログラミングガイド - Core Image の概念 - Core Image と GPU」 。 2009年 9月20日 閲覧 。
^ 「ArsTechnica - Mac OS X 10.4 Tiger - 15ページ」2005年4月28日. 2007年 4月17日 閲覧 。
^ 「Mac Dev Center - Core Image プログラミングガイド - Core Image コンセプト」 。 2009年 9月20日 閲覧 。
^ ab 「Apple - Aperture - 技術仕様」 。 2009年 9月20日 閲覧 。
^ 「Mac Dev Center - Image Kit プログラミング ガイド - Image Kit プログラミング ガイドの概要」 。2009 年 9 月 20 日 閲覧 。
^ 「Mac Dev Center - Core Image プログラミングガイド - Core Image の概念 - カラーコンポーネントとプリマルチプライアルファ」 。 2009年 9月20日 閲覧 。
^ ab “Mac OS X 10.4 - Quartz ExtremeおよびCore Image Graphicsの要件”. 2014年11月9日時点のオリジナルよりアーカイブ 。 2009年 9月20日 閲覧。
^ “Core Image Filter Reference”. 2024年5月19日時点のオリジナルよりアーカイブ 。 2024年 7月24日 閲覧。
参考文献
外部リンク
Core Image プログラミングガイド – Mac OS X 開発者ライブラリ
Apple、Mac OS X「Tiger」をプレビュー - Core Imageを含むMac OS X 10.4を発表
Filterpedia - Simon Gladman による、ほぼすべての組み込み CoreImage フィルターとカスタム GLSL および Metal ベースのフィルターを紹介するオープン ソースの Swiftアプリ。