Categories: 技術

計算のパレット

コンピュータグラフィックスでは、パレットは有限の色のセットです。 パレットは、ソフトウェアまたはハードウェアの制約がある場合に画像の精度を向上させるように最適化することができます。

用語
2色から256色に拡大する適応型カラーパレットで、画像がどのように変化するかを示します(クリックしてアニメーションを表示)。
コンテキストに応じて、用語パレットとWebパレットやRGBパレットなどの関連用語は、多少意味が異なる場合があります。 以下は、コンピュータグラフィックスにおけるパレットのために広く使われている意味のいくつかです:

特定のシステムが生成または管理できる色の総数(ただし、ビデオメモリの制限により、すべてを同時に表示することはできません):
フルパレット:たとえば、Highcolorディスプレイには16ビットのRGBパレットが含まれています。

同時に表示できる色の限定された選択:
画面全体で:
固定パレットの選択:ハードウェアレジスタが適切に設定されている場合、特定のディスプレイアダプタは固定カラー選択を提供できます。 たとえば、標準グラフィックスモードの1つであるカラーグラフィックスアダプタ(CGA)は、いわゆるパレット#1またはパレット#2を表示するように設定できます.3つの固定カラーと1つのユーザー定義バックグラウンドカラーの2つの組み合わせ各。
選択された色または選択された色:この場合、一般的により広範に明示的に利用可能な完全なパレットからの色選択は、ソフトウェアによって、ユーザまたはプログラムによって常に選択される。 例えば、標準のVGAディスプレイアダプタは、合計262,144色から256色のパレットを提供すると言われています。
デフォルトのパレットまたはシステムパレット:指定された選択された色は、ある団体または企業によって正式に標準化されています。 たとえば、インターネットブラウザやMicrosoft Windowsのデフォルトパレットで使用する、よく知られているWebセーフカラーです。

個々の画像について:
カラーマップまたはカラーテーブル:制限されたカラー選択は、指定されたインデックス付きカラーイメージファイル内に格納されます。 たとえば、GIFです。
画像パレットまたは画像の色:制限された色の選択は、画像ファイルがインデックス付きのカラーピクセルエンコーディングを使用していない場合でも、特定のデジタル画像が持つ色の完全なリストであるとみなされます。
それらの同時の色を保持するために使用される可能性のある基本的なハードウェア:
ハードウェアパレットまたはカラールックアップテーブル(CLUT):表示するには、選択した色の値を表示サブシステムのカラーハードウェアレジスタにロードする必要があります。 例えば、Commodore Amigaのハードウェアレジスタは、ソースに応じてカラーパレットとそのCLUTの両方として知られています。

GUIパレット
選択可能なユーザまたはシステムカラーの限定されたセットの配置。 このような場合、表現のカラーパレットまたはユーザのカラーパレットは共通の同等物です。 この使用方法は真のアーティストのパレットに似ています。
ツール・パレット、アプリケーション・スクリーンのパレット・ウィンドウと呼ばれる矩形領域、ボタン、アイコン、または他のGUIコントロールを使用して、迅速なコマンドまたはシンボル・アクセスが可能。 ユーザがマウスまたは同様のポインティングデバイスを介して移動させることによってどこにでも置くことができる場合、それはフローティングパレットとして知られている。 色を選択するためのパレットは、フローティングパレットにすることもできます。

マスターパレット
アプリケーションは、画面上のモザイク内に多数の異なる画像サムネイルを表示することができます。 表示されているすべての画像サムネイルのすべての適応型パレットをハードウェアカラーレジスタに同時にロードすることはできません。 解決策は、妥当な精度であらゆる種類の画像を表示するために使用できるユニークな共通マスタパレットまたはユニバーサルパレットを使用することです。

これは、マスターパレットが赤色、緑色および青色成分が有する可能性のあるレベルを制限する「ミニチュア」のフルRGB色空間を含むように色を選択することによって行われる。 このような配置は、均一なパレットと呼ばれることもあります。 通常の人間の目は、3つの原色に対して異なる度合いの感性を持っています。緑に近いほど、青に劣ります。 そのため、RGB構成では、緑色成分に多くのレベルを割り当て、青色には少ないレベルを割り当てることによって、これを利用することができます。

この方法で作成されたマスターパレットは、最大8R×8G×4B = 256色で塗りつぶすことができますが、プログラムが特別な目的のために使用できる予約色、カラーインデックスのためにパレットにスペースを残すことはありません。 6R×6G×6B = 216(ウェブカラーの場合のように)、6R×8G×5B = 240または6R×7G×6B = 252のみを使用するのがより一般的です。

次に、画像サムネイル(または他の異種画像)のモザイクをロードするとき、プログラムはすべての元のインデックス付きカラーピクセルをマスターパレットで最も近似したものにマップし(ハードウェアカラーレジスタにダンプした後)、ビデオバッファ。 ここでは、RGB RGB配列のマスターパレットと16個の追加中間色のグレーを使用した4つの画像サムネイルの単純なモザイクのサンプルを示します。 すべての画像が色精度を大幅に損なうことなくまとめられます。

適応型パレット
インデックス付きカラーテクニックを使用する場合、現実の画像は、元の画像から直接アルゴリズムを使用して色を選択または量子化する適応型パレット(時にスペルのある適応型パレット)を使用することで、トゥルーカラーオリジナルのものと忠実に再現されます最も頻繁な色)。 このようにして、さらにディザリングすると、インデックス付きカラー画像は元の画像にほぼ一致することができます。

しかし、これは画像ピクセルとその適応パレットとの間に大きな依存関係を作り出します。 限られた8ビット深度グラフィック表示を仮定すると、画像表面自体をフレームバッファにロードする前に、所定の画像の適応パレットをカラーハードウェアレジスタにロードする必要がある。 異なる適応型パレットを使用して異なる画像を表示するには、スライドショーのように1つずつ読み込む必要があります。 ここには、それぞれの(そしてほとんど互換性のない)適応型パレットを示すためのカラーパッチ付きの4つの異なるインデックス付きカラー画像のサンプルがあります。

パレットの透明度
インデックス付きカラー画像内の単一のパレットエントリは、単純なビデオオーバーレイを実行するために、透明色として指定することができる。すなわち、オーバーラップ画像のある部分が背景を不鮮明にし、残っていない。 映画/テレビタイトルとクレジットの重ね合わせは、ビデオオーバーレイの典型的なアプリケーションです。

スーパーインポーズされる画像(インデックスされた色が想定される)において、所与のパレットエントリーは透明色の役割を果たす。 通常、オーバレイがソフトウェアによって実行される場合、インデックス番号0が選択されてもよい。 デザイン時に、透明なカラーパレットエントリは任意の(通常は独特な)色に割り当てられます。 下の例では、ポインティングデバイスの典型的な矢印ポインタがオレンジ色の背景の上にデザインされているため、ここではオレンジ色の領域が透明な領域(左)を示しています。 実行時に、オーバーラップされたイメージは背景イメージのどこにでも配置され、ピクセルカラーインデックスが透過カラーであればバックグラウンドピクセルが維持され、そうでない場合は置換されます。

Related Post

このテクニックは、文字、箇条書きなどの典型的な2-Dビデオゲーム(スプライト)、ビデオタイトル作成およびその他の画像ミキシングアプリケーションでのポインタに使用されます。

Commodore 64、MSX、Amigaなどの初期のコンピュータでは、スプライトやフルスクリーンのビデオオーバーレイをハードウェアでサポートしています。 これらの場合、透過的なパレットエントリ番号はハードウェアによって定義され、以前は数字0でした。

GIFやPNGなどのインデックス付きカラーイメージファイル形式の中には、特定のパレットエントリの指定を透過的にサポートするものがあり、特定のイメージに使用されているパレットエントリの中から自由に選択できます。
BMPファイル形式では、カラーテーブルにAlphaチャンネル値の領域が確保されていますが、現在のところ、この領域は半透明データを保持するために使用されておらず、ゼロに設定されています。

トゥルーカラー画像を扱う場合、一部のビデオミキシング機器では、透明なカラーとしてRGBトリプレット(0,0,0)(赤色、緑色、青色:黒の最も暗い色合い、時にはスーパーブラックと呼ばれることもあります) 。 設計時には、いわゆるマジックピンクに置き換えられます。 同じように、典型的なデスクトップパブリッシングソフトウェアは、画像の被写体の周りの不規則なテキスト配置のために画像の境界ボックスにテキスト段落を侵入させるために、除外する純粋な白のRGBトリプレット(255,255,255)を除外することができます。

Microsoftペイントやデラックスペイントなどの2-Dペイントプログラムでは、カット、コピー、ペーストの操作を実行するときに、ユーザーが指定した背景色を透過色として使用できます。

関連するものの(同じ目的で使用されているため)、画像ビットマスクとアルファチャンネルは、パレットや透明なカラーの使用を伴わない技術ですが、オフイメージに余分なバイナリデータレイヤーが追加されています。

ソフトウェアパレット

マイクロソフトウィンドウズ
Microsoft Windowsアプリケーションは、Win32 APIの特殊な機能(HighcolorおよびTruecolor表示モードの場合、関心のある機能が不足しています)を使用して、4ビットまたは8ビットのインデックス付きカラー表示デバイスのパレットを管理します。 これらのAPIは、いわゆるシステムパレットと多くの論理パレットを扱います。

システムパレットは、カラーディスプレイのハードウェアレジスタ(主に物理パレット)のRAM上のコピーであり、システムの共通の共有リソースです。 ブート時には、デフォルトのシステムパレット(主にほとんどのプログラムで十分に機能するマスターパレット)がロードされます。

与えられたアプリケーションが色付きのグラフィックや画像を出力しようとするとき、それ自身の論理パレット、つまり独自の色の選択(256まで)を設定できます。 アプリケーションが画面に表示しようとするすべてのグラフィック要素は、その論理パレットの色を使用すると考えられます。 すべてのプログラムは、予期せぬ干渉なしに(事前に)1つまたは複数の論理パレットを自由に管理できます。

出力が効果的に行われる前に、プログラムは論理パレットを認識しなければなりません。システムは論理カラーと物理カラーを一致させようとします。 意図した色が既にシステムパレットに存在する場合、システムは論理的パレットインデックスとシステムパレットインデックスの両方を内部的にマッピングします(ほとんど一致しないため)。 目的の色がまだ存在しない場合、システムは内部アルゴリズムを適用してシステムパレットで最も使用されていない色(通常はバックグラウンドの別のウィンドウで使用される色)を破棄し、新しい色で置き換えます。 システムパレットには色の余地が限られているため、アルゴリズムは同様の色を再マッピングしようとしますが、冗長な色を避けることによって常に試みます。

最終的な結果は、いくつのアプリケーションがスクリーンカラーで作業しているかによって異なります。 フォアグラウンドウィンドウは常に優先されるため、背景のウィンドウはさまざまな方法で動作する可能性があります。破損してからすぐに再描画されます。 システムパレットが変更されると、システムは特定のイベントをトリガーしてすべてのアプリケーションに通知します。 ウィンドウが受信されると、単一のWin32 API関数を使用して、ウィンドウがすぐに再描画されます。 しかし、これはプログラムコードで明示的に行う必要があります。 そのため、多くのプログラムではこのイベントの管理に欠けており、その状況ではウィンドウが壊れてしまいます。

アプリケーションでは、特定の色や特定の順序でシステムパレットを読み込ませることができ、アニメーション用のカラーエントリ(特定のエントリの物理パレットでの色の素早い色の変更)であることを知らせます。 システムは、すべてのハードウェアパレットエントリーがパレットカラーマネージメントのために自由であると仮定することはできず、それらのエントリーはそのアルゴリズムから除外されます。 最終的な結果は、カラー強制プログラムのスキルと、他のプログラムの動作(通常の場合とまったく同じ)、およびオペレーティングシステム自体の動作に依存します。

Share