iOS画像の色空間の徹底した研究

プロジェクト開発において写真は頻繁に使用されますが、その多くは通常の表示として使用するか、場合によってはトリミングする必要があり、写真に特別な加工をする必要はありませんが、最近のプロジェクトでは写真に対する要求が高まっています。落とし穴もたくさんありましたが、写真の使用方法についてもより深く理解し、将来のレビューのために整理しました。

画像のRGBチャンネルと色深度

画像が点で構成されていることは誰もが知っていますが、点はビットマップ (ビットマップ ラスター イメージ) と呼ばれます。RGB 色空間を例に取ると、ビットマップは 1 つのチャネル、3 つ (赤、緑、青)、または 4 つのチャネルで構成されます。チャンネル (赤、緑、青、アルファ チャンネル)、チャンネルは 8 ビットまたは 16 ビットを持つことができ、赤チャンネルが 8 ビットの場合、値の範囲は 0 ~ 255 で、合計 256 個の値が存在できます。

最も一般的な 32 ビット RGBA 画像の場合、各ポイント (ビットマップ) には 4 つのチャネルが含まれています: 赤チャネル、緑チャネル、青チャネル、アルファ チャネル。各チャネルは 8 ビットで構成され、値の範囲は 0 ~ 255 で、256 あります。合計 256 256 256 色を表示できるため、最大 1,677 万色となり、ほとんどのアプリケーション シナリオを満たすのに十分です。内蔵のアルファ チャネルは、使用中に各 RGB チャネルの値を乗算されて最終的に表示される値となり、RGBA 画像の使用がより柔軟になります。

他の 2 つの一般的に使用される用語、bpp、bpc:
bpp:(ピクセルあたりのビット数)は、一般にピクセル深度を指します。ピクセル深度は、各ピクセルの格納に使用されるビット数を指します。ピクセル深度は、カラー イメージの各ピクセルが持つ色の数、またはグレースケール イメージの各ピクセルが持つグレー レベルの数を決定します。
bpc : (チャネルあたりのビット数) ビット深度。各チャネルが占有するビット数を指します。たとえば、8bpc は、チャネルが 8 ビットを持つことを意味し、値の範囲は 0 ~ 255 で、256 ビットが存在する可能性があります。 16bpc は、各チャネルが 16 ビットであることを意味します。
32 ビット RGBA 形式の画像の各ピクセルには 4 つのチャネルがあり、各チャネルは 8 ビットなので、4*8=32bpp、8bpc となります。

同様に、他の形式もあります: (このスクリーンショットは、IOS 側に統合されている Quzrtz 2D エンジンの公式ドキュメントのスクリーンショットです。Quzrtz 2D は、カスタマイズされた 2D ベクトルと画像のレンダリングをサポートするローカル レンダリング エンジンであり、その使用方法を説明することを目的としています。 bpp と bpc の)
ここに画像の説明を挿入

2 つの色空間と画像フォーマット

一般的なカラー スペースには、RGB\CMY\HSV\HSL\Lab\YUV およびその他のカラー スペースが含まれます。RGB カラー スペースのほとんどは、IOS 開発で使用されます。色相の調整など、画像に特別な処理を行う必要がある場合は、画像や明るさなどは HSL やその他の空間を使用し、他のシーンのほとんどは RGB 空間を扱います。

まずは写真の基礎知識からお話しますが、写真のフォーマットにはpng、jpeg、bmp、tiffなどが多く、私たちはjpegとpngをよく使いますが、jpegとpngの処理を簡単に記録してみます。

Jpeg/jpg は、いわゆる非可逆圧縮形式を使用しています。簡単に言うと、人間の目はより敏感であるため、数式計算によって画像が RGB カラー スペースから YUV カラー スペースに変換され、その後、YUV コンポーネントが個別にサンプリングされます。色変換よりも明るさ変換 感度が高いため、サンプリングの重みは Y 成分に偏ります Y 成分は 4 回、U 成分と V 成分は各 1 回ずつサンプリングされます 写真の場合はコサイン変換と量子化は精度の損失の原因です。簡単に言うと、人間の耳には聞こえない超音波や超低周波を除去する音声フィルタリングに似ています。微妙な色の変化を使用して画像のサイズを縮小しますが、人間の目では見ることができません画像サイズが大幅に削減されるという利点があるため、Web ページの読み込み速度や応答性を向上させるために Web 側でよく使用されます。しかし、jpeg は圧縮可能なため、高解像度の画像を表示するためのキャリアとしては適していません。

Png 形式の圧縮原理は予測符号化と差分符号化に基づいているため、画質と精度が損なわれないため、画像の精度と品質が要求される分野でよく使用されます。さらに重要なのは、Png はエイリアシングを排除するために 256 の透明度レベルを提供し、画像の透明度をサポートするアルファ チャネルを提供します。ソース ファイルに空白領域がある場合、エクスポートされた画像の対応する位置は空白になり、何も行われませんが、JPEG の透明領域はエクスポート用に自動的に白に変換されます。

おすすめ

転載: blog.csdn.net/mumubumaopao/article/details/130695013