JPH09305753A - データを転置する方法 - Google Patents

データを転置する方法

Info

Publication number
JPH09305753A
JPH09305753A JP8328024A JP32802496A JPH09305753A JP H09305753 A JPH09305753 A JP H09305753A JP 8328024 A JP8328024 A JP 8328024A JP 32802496 A JP32802496 A JP 32802496A JP H09305753 A JPH09305753 A JP H09305753A
Authority
JP
Japan
Prior art keywords
buffer
data
rows
row
transposed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP8328024A
Other languages
English (en)
Inventor
Daniel S Rice
ダニエル・エス・ライス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09305753A publication Critical patent/JPH09305753A/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 イメージのリサイズに関して、バッファ内で
のデータの効率的な転置方法を提供する。 【解決手段】 データを配置する各バッファは、1つま
たは複数のサブバッファを含むように形成される。サブ
バッファの行を選択的にインタリーブすると、選択的イ
ンタリーブの結果が再び特定の順序でインタリーブされ
る。連続してインタリーブすると、元のサブバッファの
転置が生じる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータのメ
モリ内に記憶されたデータを転置する方法に関する。さ
らに詳細には、本発明は、効率的なインタリーブ技法を
使用して任意のバッファ付きデータの転置を実行する方
法に関する。
【0002】
【従来の技術】図形データをリサイズ(サイズ変更)す
る方法は、一般に、当技術分野において周知である。通
常使用される2つの方法は、順方向マッピングおよび逆
方向マッピングである。順方向マップでは、アルゴリズ
ムは、各ソース・ピクセルごとに、それが宛先イメージ
内のどこに位置するのか質問する。反対に、逆方向マッ
プでは、各宛先ピクセルごとに、それがソース・イメー
ジ内のどこからきたのか質問する。順方向マップでは、
同じ宛先内に位置しているピクセル間で調停が必要であ
るが、逆方向マップでは、各宛先ピクセルごとに、それ
がどのソース・イメージ・ピクセルからきたのか判定す
るために一定量の仕事を必要とし、そのピクセルを再び
尋ねる必要はない。
【0003】逆方向マッピン方法では、各ピクセルごと
に、それがソース内のどこからきたのかが確立された
ら、宛先ピクセルに寄与する各ソース・ピクセルごと
に、そのソース・ピクセルの寄与の係数を決定する必要
がある。一般に、2つ以上のソース・ピクセルが寄与し
ている場合、2つかまたは4つのピクセルが寄与を与え
ていると考えられる。これは、それぞれバイリニア(bi
-linear)・フィルタリングおよびバイキュービック(bi
-cubic)・フィルタリングに対応する。これらの係数の
計算は、一般に、当技術分野において周知であるが、計
算としては、ソース・イメージ内のピクセルの各行ごと
に1回、および各列ごとに1回行うだけでよいことを強
調する。次いで、計算した係数を次の処理の間にアクセ
スすべきアレイ内に記憶する。上述の方法では、純水平
リサイジングかまたは純垂直リサイジングを行うことが
できる。しかしながら、垂直リサイジングと水平リサイ
ジングを同時に行う必要がある場合には、当然、一区画
のソース・ピクセルを選択し、それらすべてに適切な係
数を重み付けする必要がある。これは、ピクセルごとの
係数計算および操作を必要とする。フィルタ係数を正し
く選択することによって、分離可能な形でストレッチン
グを行うことができる。すなわち、まず水平ストレッチ
ングを行い、次いで垂直ストレッチングを行うか、また
はまず垂直ストレッチングを行い、次いで水平ストレッ
チングを行うことができる。そのような技法は当技術分
野において周知である。
【0004】宛先ピクセルの中心である幾何学的点を選
択すること、ならびにソース内の点を宛先にマップする
関数を確立することによって係数が選択され、それによ
り宛先がxおよびyの線形関数であるスケールされた変
換を発生させる。関数を逆にすると、データがきたソー
ス内の点が得られる。選択した点がソース・ピクセルの
中心でない場合、様々なソース・ピクセル中心間の相対
距離を決定し、それに応じてそれに重み付けするため
に、ソース・データを補間する必要がある。したがっ
て、フィルタ係数は、逆方向マップ済み宛先点のサブピ
クセル位置の関数になる。
【0005】「Resampling Algorit
hms for Image Resizing an
d Rotation」Proc.SPIE Digi
tal Image Processing Appl
ications,vol.1075,pp.260−
269,1989 において、Joseph Ward
と David R.Cokは、サブピクセル位置
を、例えばピクセルの1/32番目または1/256番
目まで量子化し、その領域内のピクセルに適用するフィ
ルタの既成テーブルを与えるアルゴリズムを提供してい
る。各領域はビンと呼ばれる。したがって、各ビンごと
に、異なるフィルタ係数が確立される。
【0006】図形データは、一般に、例えばメモリ内の
連続する3つのバイトが単一のピクセルの赤成分、緑成
分および青成分を表すバンド・インタリーブ・フォーマ
ットで記憶される。このため、イメージ・データの任意
のセクションについて、4つのバイトが4つのピクセル
を表すのかまたは1〜1/3ピクセルを表すのか明白で
ないので、メモリ内の隣接するピクセルにフィルタを掛
ける必要がある問題が複雑になる。
【0007】ソース・イメージからの個々のソース・ピ
クセルを読み、それらを個々にリサイズするために、プ
ログラムをCまたはC変形で書くことは比較的簡単であ
る。残念ながら、ソース・データの多数の隣接するピク
セルに対して動作する簡単な方法はない。隣接するソー
ス・データの多数のピクセルに対する動作は、上述のよ
うにデータが未知のフォーマットで記憶されることが多
いためにさらに複雑になる。バッファ内での任意のデー
タの転置には多数の用途がある。バッファ内でのデータ
の転置は、一般に、各出力行がすべての入力行に依存す
るので計算中心になる。残念ながら、そのために、転置
が非常に遅くなり、多くの場合役立たなくなる。
【0008】
【発明が解決しようとする課題】したがって、イメージ
・リサイジングと関連して、多数のバイトに対して動作
できることが望ましい。さらに、データの多数のバイト
に対して同時に動作できる効率的な転置方式を開発する
ことが望ましい。
【0009】
【課題を解決するための手段】コンピュータ・システム
内のイメージをリサイズする方法を開示する。複数のバ
ッファがコンピュータ・システムのメモリ内に動的に生
成される。生成されるバッファの中には、水平サンプリ
ング・バッファおよび2つの垂直サンプリング・バッフ
ァがある。水平サンプリング・バッファには、ソース・
イメージからの複数の行からのデータが充填される。そ
のような充填は一度に数バイト実行される。
【0010】水平サンプリング・バッファは、一般に、
幅8バイトであり、ソース・イメージ行の幅ほどの長さ
である。基本的に、第1のソース・イメージ行は、水平
サンプリング・バッファ内で行0内に8バイト配置さ
れ、次いで7行スキップし、次の8バイトをバッファ行
8内に入れ、全ソース行が水平サンプリング・バッファ
内に入るまで続ける。このプロセスは、連続した各ソー
ス・イメージ行ごとに、その最初の行から1つずらし
て、8つのソース行が水平ソース・イメージ内に入るま
で、例えば第2のソース行がバッファ行1、9、17内
などに配置されるまで繰り返される。したがって、ソー
ス・イメージ内の垂直近隣部は、水平サンプリング・バ
ッファ内の垂直近隣部になる。水平サンプリング・バッ
ファはサブバッファから構成され、各ソースは隣接する
8つのソース・イメージ行の8バイトを構成する。各サ
ブバッファは、イメージ・データの異なるチャネルに容
易にアクセスできるようにバイト方向に転置される。転
置では、容易な処理のためにバンド・インタリーブ・フ
ォーマットのバンドを露出させる。16ビット表示転置
方法では、一度に4つの行をバッファし、正しい関係に
なる各ピクセルの高位バイトおよび低位バイトを有する
4×8サブバッファを転置する。
【0011】データを転置した後、転置されたデータに
フィルタを適用すると、その結果が他のバッファ、すな
わち中間バッファかまたは垂直サンプリング・バッファ
内に記憶される。しかしながら、データを垂直サンプリ
ング・バッファ内に直接配置する場合、適所へ転置する
必要がある。したがって、中間バッファを使用すること
によって転置を簡単化する。次いで、フィルタされたデ
ータを再転置すると、その元の構成をとるようになる。
再転置されたデータを、前に生成した垂直サンプリング
・バッファ内に記憶する。上記のステップを繰り返し
て、第2の垂直サンプリング・バッファを充填する。そ
の後、ソース・イメージの処理の間中、2つの垂直サン
プリング・バッファを連続的に充填させておくと、高速
での垂直フィルタリングが可能になる。バッファ間の往
復によって、垂直フィルタリングに対する有効データが
保証される。1つの垂直サンプリング・バッファ内で進
行中のフィルタリング用にデータが必要ない場合、垂直
近隣部の次のグループに対応する新しいデータがそのサ
ンプリング・バッファ内に再充填される。フィルタされ
たデータは、16ビット値から、両端においてクランプ
された8ビット値へ変換する必要がある。変換が終了し
た後、リサイズされたイメージは、スクリーンへ出力さ
れるか、または後の処理のためにメモリ内に記憶され
る。
【0012】Sun Microsystems社のU
LTRASPARC(登録商標)visual ins
truction setは、上述の方法を使用して処
理を容易にするいくつかの命令をサポートする。vis
ual instruction set(「VI
S」)を使用して、8ビットを同時に読み書きする。同
様に、VISでは、4バイト・オペランドによる動作が
可能である。fpmerge命令などいくつかの命令で
は、従来の方法に勝る簡単化された転置が可能である。
バッファ内のデータを整列させることによって、リサイ
ジング方法において早期に整列エッジ条件問題をアドレ
スでき、したがって内部ループ内での検査およびブラン
チがなくなるので、処理資源をより効率的に使用するこ
とができる。同様に、このシステムでは、ソースおよび
宛先データのフォーマットが分かっている必要がある
が、すべてのフォーマット特有の問題を外部ループ内で
処理することができる。水平処理と垂直処理を別々に行
えるので、マルチプロセッサ環境内でのマルチスレッデ
ィングが容易に達成できる。
【0013】
【発明の実施の形態】本願は、A METHOD AN
D APPARATUS FOR SCALING I
MAGES、第 号の同時係属出願の一部
係属出願である。コンピュータ内の図形データをリサイ
ズする方法および装置が開示されている。以下の記述で
は、説明のために、本発明を十分に理解できるように、
特定の用途、数、材料および構成について述べる。しか
しながら、本発明は詳細な説明なしに実施できることが
当業者には明らかであろう。他の例では、本発明が不必
要に曖昧にならないように、周知のシステムは図式また
はブロック図形式で示してある。
【0014】図1は、本発明と関連して使用するコンピ
ュータ・システムのブロック図である。CPU10は、
バス12によってメイン・メモリ11およびキャッシュ
・メモリ13に結合される。メイン・メモリ11は、キ
ャッシュ可能メモリ15およびキャッシュ不能メモリ1
4から構成される。本発明のサンプリング・バッファ1
6はキャッシュ可能メモリ15内に常駐する。フィルタ
係数アレイ17もキャッシュ可能メモリ15内に常駐す
る。サンプリング・バッファ16は、システムのフレキ
シビリティを高めるために、動的に割振り可能であるこ
とが望ましい。例示の一実施形態では、CPU10は、
visual instructionset(「VI
S」)を使用するSun Microsystems社
のULTRASPARC(登録商標)プロセッサであ
る。ULTRASPARC(登録商標)プロセッサおよ
びVISについては、1995年4月29日出願の同時
係属出願A CENTRAL PROCESSING
UNIT WITH INTEGRATED GRAP
HIC FUNCTIONS、第08236572号に
おいて詳細に検討されている。
【0015】図2に、本発明の例示の実施形態のバッフ
ァリング方法を示す。幅8バイト、長さN行の水平サン
プリング・バッファ20を使用して、ソース・イメージ
からのイメージ・データの8つの行を受容する。したが
って、Nは、ソース・イメージ行のバイト長に等しい。
ソース・イメージ行のバイト長は、ソース・イメージ行
のピクセル長よりも大きいかまたはそれに等しい。整列
問題およびエッジ条件は、データがメモリから水平サン
プリング・バッファ内に移動する際に処理される。エッ
ジ条件のおよび整合問題の調整について以下に詳細に説
明する。水平サンプリング・バッファ内のデータが転置
され、処理のためにバンドが並べられる。この転置につ
いても以下に詳細に説明する。水平サンプリング・バッ
ファ内の転置されたデータに水平フィルタ25を適用す
ると、フィルタリングの結果が幅8バイト、長さM行の
中間バッファ23内に配置される。Mは宛先イメージ内
の行の長さに等しい。中間バッファ内のデータは、第1
の垂直サンプリング・バッファ21かまたは第2の垂直
サンプリング・バッファ22内に再転置される。コント
ローラ24は、中間バッファ23から現在のデータを受
け取るバッファを指示する。垂直サンプリング・バッフ
ァ21、22内のデータに垂直フィルタ26を適用す
る。例示の一実施形態では、垂直フィルタの適用は、垂
直サンプリング・バッファ内の各関連行から8バイトを
取り出すステップを含む。関連行はフィルタ幅によって
指示され、例えばフィルタ幅が4の場合、関連行は4つ
になる。
【0016】このデータに対して並列乗算および加算を
実行すると、垂直にサンプリングされたデータが得られ
る。以下に説明するように、このデータは変換する必要
がある。VISでは、この垂直フィルタリング方法の並
列乗算および加算に使用するのに理想的なfmul8×
16命令およびfpadd16命令を用意する。fpa
dd16命令は、それぞれ4つの16ビット量となる4
つの16ビット量を含む2つの引数を受ける。すべての
量は符号付きと考えられる。fmul8×16命令は2
つの引数を受ける。第1の引数は4つの8ビット値であ
り、第2の引数は単一の16ビット値かまたは4つの1
6ビット値であり、4つの16ビット結果をもたらす。
第1の引数の各バイトに単一の第2の引数かまたは対応
する第2の引数を掛ける。単一の第2の引数は、32ビ
ットワードの上部または底部の半分から導出される。乗
算命令の結果は(x*y+128)/256である。f
mulの他の2つの変数を使用して、16×16ビット
乗算を近似する。これらの変数fmul8su×16お
よびfmul8ul×16はどちらも、それぞれ符号付
き16ビット・データから構成される2つの引数をと
る。fmul8su×16命令は、その第2の引数にそ
の第1の引数の上部8ビットを掛けて、16ビットまで
丸められ切り詰められた24ビット中間結果をもたら
す。fmul8su×16命令は、第1の引数の各区画
の下側半分を使用し、第1の積の重要度に適合するよう
に、その結果を追加の8ビットだけ右に暗黙のうちにシ
フトするだけで同じことを行う。
【0017】逆方向マップピング方法では、処理がソー
ス・イメージ内で下方に進むにつれて、それもソース・
イメージ内で下方に厳密に進むようになっている。した
がって、垂直フィルタ26が第2の垂直サンプリング・
バッファ22を越えてデータを必要とすると、第1のサ
ンプリング・バッファ21内のデータは再訪されない。
したがって、第1のサンプリング・バッファには直ちに
新しいデータが再充填される。これは、フィルタ幅がバ
ッファ内の宛先行の数(この例では8つ)よりも少ない
かまたはそれに等しいと仮定している。垂直フィルタ2
6は、第2の垂直サンプリング・バッファ22中を並進
するにつれて、新しいデータを処理するために第1の垂
直サンプリング・バッファに再び入る。垂直フィルタ2
6が並進して第2のサンプリング・バッファから第1の
垂直サンプリング・バッファ21へ戻ると、第2の垂直
サンプリング・バッファ22が再充填される。したがっ
て、コントローラ24は、垂直フィルタ26のあるバッ
ファから次のバッファへの並進に応答して、第1のサン
プリング・バッファから第2のサンプリング・バッファ
22へ導かれたデータをトグルする。次いで、コントロ
ーラ24は、必要なデータが得られなくなった際に垂直
サンプリング・バッファ間で往復する。本発明の範囲ま
たは精神から逸脱することなく、追加のバッファが使用
できることを当業者なら理解できよう。この往復配置に
おける最大垂直フィルタ幅は、垂直サンプリング・バッ
ファ内のバッファされた水平にサンプリングされた行の
数によって指示される。したがって、一度に8つのソー
ス行がバッファされる8ビット表示を有する実施形態で
は、最大フィルタ幅は8であり、16ビット実施形態で
は、各バッファ内で4つの行しかバッファされず、最大
フィルタ幅は4である。本発明の範囲または精神から逸
脱することなく、フィルタ幅を大きくするために、追加
の垂直サンプリング・バッファを導入できることを当業
者なら理解できよう。
【0018】フィルタの適用では8ビット値が得られな
いので、変換器27は、垂直フィルタ26の16ビット
出力をMバイト出力行28への8ビット・エントリに変
換する。さらに、変換器27は0および255における
両端をクランプする。本発明をULTRASPARC
(登録商標)visual instructions
et(「VIS」)とともに使用した場合、fpack
命令はこの変換機能を満足する。
【0019】重要なことに、水平サンプリングおよび垂
直サンプリングは互いに無関係であるので、追加の水平
サンプリングを、前に水平にサンプリングしたデータの
垂直サンプリングと同時に実行することができる。中間
バッファ23のところにボトルネックが生じないよう
に、追加の中間バッファ23を備えることも本発明の範
囲および精神に入る。この配置は、作業負荷を多数のプ
ロセッサ間に容易に分配できるので、マルチスレッディ
ングに理想的である。したがって、水平サンプリング・
バッファは、中間バッファ内に完全にサンプリングされ
るとすぐに再充填され、処理が再び始まる。
【0020】図3に、それぞれ24バイトの8つの行を
有する例示のソース・イメージ30を示す。水平サンプ
リング・バッファ20には、例えば水平サンプリング・
バッファ20の行0内に向かう行31の第1の8バイ
ト、水平サンプリング・バッファ20の行8へ向かう行
31のバイト9〜16、および水平サンプリング・バッ
ファ20の行16へ向かう行31のバイト17〜24が
充填される。同様に、行32のバイト1〜8は、水平サ
ンプリング・バッファの20の行1へ進み、バイト9〜
16は行9へ進み、バイト17〜24は行17へ進む。
当業者なら、行は水平か垂直であることが理解できるで
あろうが、水平方向に隣接するメモリ位置への参照は、
たいていのコンピュータ・システムによって効率的にサ
ポートされるので、この用途における行は、一般に水平
であると考えられる。しかしながら、効率的な垂直方向
に隣接するアクセスをサポートするシステムでは、本発
明は垂直行に対して等しく作用する。残りのソース行は
同じパターンに従う。ソース・イメージ30が追加の行
から構成されている場合、それらの行は水平サンプリン
グ・バッファ20の次の充填時に処理される。ソース・
イメージ30がより大きい行を有している場合、水平サ
ンプリング・バッファの長さは比例的に増大する。重要
なことに、水平サンプリング・バッファの長さは、ソー
ス・イメージ・ラインの長さのよりも大きいかまたはそ
れに等しい8の次の倍数に等しい。例えば、25バイト
と32バイトの間のラインを有するソース・イメージで
はそれぞれ32ライン長さの水平サンプリング・バッフ
ァ20が生じる。水平サンプリング・バッファの処理の
各反復は、ソース・イメージの8完全ラインを処理す
る。最後の反復については例外が生じる。有効データの
7ライン以下が残っている場合、有効データのみが処理
される。
【0021】ピクセルが16ビット表示になっている場
合、上記のバッファリングに対する変更が必要である。
図4に、ソース・イメージ30が幅24バイトであり、
ピクセルが16ビット表示、すなわち1および1’が単
一のピクセルのチャネルの高位バイトおよび低位バイト
である他の実施形態を示す。この例では、水平サンプリ
ング・バッファの各サブバッファは長さ4行である。こ
れは、ソース・イメージ30の4行が各反復時に処理さ
れることを示す。4×8バッファは、表示された各ピク
セルの高位ビットおよび低位ビットの正しい関係を維持
しながら転置すせることができる。16ビット・データ
の転置について、図8および図9と関連して以下に説明
する。
【0022】エッジ条件は、サイジング・アルゴリズム
において周知の問題である。根本的に言えば、問題は、
左端ピクセルの左方にピクセルを必要とする場合、どう
すればよいかである。水平サンプリング・バッファのパ
ディングによって、エッジ条件は容易に満足できる。例
えば、2つのエッジ・ピクセルが必要な場合、データを
水平サンプリング・バッファ20内の各行の第3の位置
に配置することから始める。次いで、第3のバイト内に
入れられた第1のデータのコピーか、または例えば0に
よって、第1のバイト内のエントリおよび第2のバイト
内のエントリを合成する。整列は、バッファリング方法
において早期に整列エッジ条件問題をアドレスできる別
の問題である。基本的に、ソース・イメージがメモリ・
ワードと整列して始まる保証はない。したがって、この
システムが多数のバイト、例えば8を検索する場合、ソ
ース行は8の偶数倍数から始まる保証はない。したがっ
て、第1の検索には、ユーザがバッファしたくないソー
ス・イメージ内にないデータが含まれる。VISでは、
関連して使用した場合、データをメモリから取り出し、
内部レジスタすなわち図形状態レジスタ(「gsr」)
を使用して、水平サンプリング・バッファ内で容易に整
列させることができるfaligndata命令および
alignaddr命令を与える。例えば、8バイトの
グループrがジャンクの5バイト、続いて有効イメージ
・データの3バイトを有し、他のグループsが8有効バ
イトを含む場合、alignaddr(0、5)はgs
r整列ビットを5に設定する。次いでrおよびsに対し
てfaligndata命令を使用すると、有効データ
の8バイトが得られる。したがって、tがイメージ・デ
ータの8バイトの次の有効グルーブを含む場合、fal
igndata(r、s)およびfaligndata
(s、t)ではそれぞれr5-70-4、s5-71-4が得ら
れる。垂直パスの結果をあるいは整列していない宛先に
書き込む場合に、類似の問題が生じる。falignd
ata命令を使用すれば、ソース・データの場合と同様
に、宛先整列問題を解決することができる。
【0023】転置は、水平サンプリング・バッファ20
内の8つの行ブロック内で実行される。例えば、図3の
例では、行0−7が転置され、行8−15が転置され、
行16−23が転置される。図5に、そのような転置を
示す。そのようなバイト方向転置では、毎回バンドごと
にデータを並べる。例えば、図5において、RGBバン
ド・インタリーブ・フォーマットが存在する場合、0、
3および6は赤バンドに対応し、1、4および7は緑バ
ンドに対応し、2および5は青バンドに対応する。一般
に、出力のすべての行は入力のすべての行に依存するの
で、転置は非効率的である。思いがけなく、VISは、
fpmerge命令によって、2つの4バイト・ワード
が組み合わさって8(ダブル・ワード)バイトのグルー
プが形成される機能性を含む。fpmerge命令をa
0123およびe0123に適用すると、a00
112233が得られる。図7に、組合せ機能性を
使用して転置を実施した転置ツリーを示す。図7に示す
ように、8×8セグメント内で、各ワードは4行離れた
ワードと組み合わさる。これは、図6に示されるよう
に、8×8ブロックを2つの4×8ブロックとして転置
する結果である。この方法を使用して、水平サンプリン
グ・バッファを適所に転置したり、またはデータを最初
にプリバッファ内に配置し、水平サンプリング・バッフ
ァ20内に転置したりできる。将来のコンピュータ・シ
ステムは、VISのfpmerge命令の機能性をサポ
ートすることが予想される。したがって、この転置およ
びイメージ・サイジングの方法は、ULTRASPAR
C(登録商標)システムに限定されるものではない。
【0024】図8は、データが16ビット表示になって
いる場合のサブバッファの転置を示す。図9は、16ビ
ット表示実施形態の転置ツリーを示す。重要なことに、
fpmerge命令では、8バイト・ストリングの高位
(hi)バイトおよび低位(lo)バイトへ参照が独立
して行える。この特徴を各初期バッファ行p0−p3内
で、各中間組合せ結果と関連して活用することによっ
て、4×8バッファの転置が容易に得られる。最初に、
サブバッファの各行の高位バイトおよび低位バイトは、
2行離れた行の対応するバイトと組み合わさる。例え
ば、行0hiは行2hiと組み合わさり、行0loは行
2loと組み合わさる。図示のように、中間組合せ結果
のhi部分およびlo部分の適切な組合せを継続するこ
とによって、ツリーの4つのブランチから、各ピクセル
の高位バイトおよび低位バイトが正しく整列した元のサ
ブバッファの転置の4つの行が得られる。
【0025】転置を行う前に、データを適切に整列させ
ることが必要であるというのは重要である。したがっ
て、データをメモリ内に転置する場合、性能上の不利益
がもたらされる。これは、(1)ソース・イメージ・デ
ータを上書きしないように注意する必要があり、(2)
メモリ内で、適切な整列の保証がないためである。例え
ば、ソース行の第1のワードはメモリ・ワード内の任意
の点において始まる。また、連続するソース行はメモリ
・ワードに対して同様に整列する保証がないためであ
る。上述のバッファリング方法では、データが適切に整
列し、したがって各8×8ブロックが転置のために整列
する。
【0026】データを転置し、中間バッファ23内に水
平サンプリングした後、同じ転置方法を使用して、デー
タを垂直サンプリング・バッファ21、22の一方に再
転置する。当業者なら、データを中間バッファ23内の
適所に配置できることが理解できよう。したがって、中
間バッファ23を完全に除去し、データを垂直サンプリ
ング・バッファ21、22の一方に適所に転置すること
もできる。
【0027】ソース・イメージ内のそれ以下のすべての
バンドを拡大する必要がある場合、転置されたデータを
適切にステップスルーすることによってそのようにする
ことができる。例えば、データが赤、緑、青のフォーマ
ットであり、青バンドのみを拡大したい場合、フィルタ
リングは、行2から初め、3ずつステップして、中間バ
ッファを充填する。その結果中間バッファが、赤データ
位置および青データ位置において有効青データおよびジ
ャンクを有することになる。ジャンクが垂直水平サンプ
リング・バッファに書き込まれるのを防ぐために、チャ
ネル選択時にビット・マスクが維持される。マスクは、
少なくとも長さ8ビット、出力チャネルの数の偶数倍数
である必要がある。各適用の後、マスクを8だけ回転さ
せ、中間バッファ内の次の8列に適用する。
【0028】出力をソース・フォーマットと異なるフォ
ーマットに変える必要がある場合がある。例えば、イメ
ージをモニタに出力するのに使用されるフレーム・バッ
ファはフォーマットxbgrであり、ソースはrgbフ
ォーマットである。そのような場合、バンドは水平に処
理されるので、バンドは、垂直サンプリング・バッファ
内への再転置により所望の順序付けがなされるように中
間バッファ内に配置される。例えば、赤データは、水平
水平サンプリング・バッファ20内の第1のエントリか
ら、垂直水平サンプリング・バッファの第4のスロット
内にある中間バッファのエントリへ移動する。マスクを
使用して、例えばソース・イメージからの有効データを
表さない垂直水平サンプリング・バッファのX行を遮蔽
する。VISは、例示の実施形態において所望の出力フ
ォーマッティングを実施するのに使用される部分記憶お
よびエッジ命令をサポートする。
【0029】上記明細において、本発明についてその特
定の実施形態と関連して説明した。しかしながら、添付
の請求の範囲に示すように、本発明の精神および範囲か
ら逸脱することなく本発明に様々な修正および変更を加
えることができることが明らかであろう。したがって、
明細および図面は、限定的意味ではなく例示的意味で考
えるべきである。したがって、本発明の範囲は、添付の
請求の範囲のみによって制限されるものではない。
【図面の簡単な説明】
【図1】 本発明を使用するコンピュータ・システムの
ブロック図である。
【図2】 本発明の一実施形態におけるバッファリング
方法のブロック図である。
【図3】 本発明の一実施形態におけるバッファを充填
する方法を示す図である。
【図4】 他の実施形態におけるバッファを充填する方
法を示す図である。
【図5】 本発明のサンプル・サブバッファおよび本発
明によるその転置の図である。
【図6】 本発明の一実施形態によるサブバッファ転置
の部分図である。
【図7】 本発明の一実施形態におけるサブバッファの
半分についての転置ツリーである。
【図8】 サンプル・サブバッファおよび16ビット表
示のその転置の図である。
【図9】 他の実施形態におけるサンプル・サブバッフ
ァである。
【符号の説明】
10 CPU 11 メイン・メモリ 12 バス 13 キャッシュ・メモリ 14 キャッシュ不能メモリ 15 キャッシュ可能メモリ 16 サンプリング・バッファ 17 フィルタ係数アレイ 20 水平サンプリング・バッファ 21 第1の垂直サンプリング・バッファ 22 第2の垂直サンプリング・バッファ 23 中間バッファ 24 コントローラ 25 水平フィルタ 26 垂直フィルタ 27 変換器 28 出力行

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 a)複数の行を有するバッファ内にデー
    タをロードするステップと、 b)行の対を選択的に組み合わせて、複数の中間組合せ
    結果を得るすステップと、 c)前記複数の中間組合せ結果内の対を選択的に組み合
    わせて、新しい複数の中間組合せ結果を得るステップ
    と、 d)転置行が発生するまでステップc)を繰り返すステ
    ップと、 e)転置行を前記バッファまたは第2のバッファの一方
    に記憶し、それにより転置されたバッファを生成するス
    テップとを含むバッファ内でデータを転置する方法。
  2. 【請求項2】 ある行の複数のバイトを4行離れた行の
    複数のバイトでインタリーブするステップと、 複数の転置された行を前記バッファまたは第2のバッフ
    ァの一方に記憶するステップとを含む8ビット表示のデ
    ータのバッファを転置する方法。
  3. 【請求項3】 a)あるバッファ行の複数の高位バイト
    を2行離れたバッファ行内の複数の高位バイトでインタ
    リーブするステップと、 b)あるバッファ行の複数の低位バイトを2行離れたバ
    ッファ行内の複数の低位バイトでインタリーブするステ
    ップと、 c)複数の転置された行を前記バッファまたは第2のバ
    ッファの一方に記憶するステップとを含む16ビット表
    示のデータのバッファを転置する方法。
  4. 【請求項4】 バスによってメモリに結合されたプロセ
    ッサを有するコンピュータ・システム内で、バッファ内
    でデータを転置させるためにその中に実現されたコンピ
    ュータ使用可能コードを有するコンピュータ使用可能媒
    体を含み、 複数の行を有するバッファ内にデータをロードするよう
    に構成されたコンピュータ読取り可能プログラム・コー
    ド装置と、 行の対を選択的に組み合わせて、複数の中間組合せ結果
    を得るように構成されたコンピュータ読取り可能プログ
    ラム・コード装置と、 前記複数の中間組合せ結果内の対を選択的に組み合わせ
    て、新しい複数の中間組合せ結果を得るように構成され
    たコンピュータ読取り可能プログラム・コード装置と、 転置行が発生するまで中間組合せ結果の選択的組合せを
    繰り返すように構成されたコンピュータ読取り可能プロ
    グラム・コード装置と、 転置行を前記バッファまたは第2のバッファの一方に記
    憶し、それにより転置されたバッファを生成するように
    構成されたコンピュータ読取り可能プログラム・コード
    装置とを含むコンピュータ・プログラム製品。
JP8328024A 1995-11-27 1996-11-25 データを転置する方法 Ceased JPH09305753A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/562695 1995-11-27
US08/562,695 US5819106A (en) 1995-11-27 1995-11-27 Method of transposing data buffer by selectively merging pairs of rows, interleaving two operands of equal length yielding output twice the length of each operand

Publications (1)

Publication Number Publication Date
JPH09305753A true JPH09305753A (ja) 1997-11-28

Family

ID=24247373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8328024A Ceased JPH09305753A (ja) 1995-11-27 1996-11-25 データを転置する方法

Country Status (4)

Country Link
US (1) US5819106A (ja)
EP (1) EP0775973B1 (ja)
JP (1) JPH09305753A (ja)
AU (1) AU704659B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819106A (en) * 1995-11-27 1998-10-06 Sun Microsystems, Inc. Method of transposing data buffer by selectively merging pairs of rows, interleaving two operands of equal length yielding output twice the length of each operand
US5953021A (en) * 1997-05-22 1999-09-14 Sun Microsystems, Inc. Microprocessor system for data channel extraction
KR100826343B1 (ko) * 2004-10-14 2008-05-02 삼성전기주식회사 트랜스 포즈 방법 및 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4210961B1 (en) * 1971-10-08 1996-10-01 Syncsort Inc Sorting system
DE3177204D1 (de) * 1980-04-11 1990-08-30 Ampex System zur raeumlichen transformation von bildern.
CA1252902A (en) * 1985-10-31 1989-04-18 David R. Pruett Method for rotating a binary image
JP2661206B2 (ja) * 1988-10-31 1997-10-08 キヤノン株式会社 映像信号記録装置
US5042033A (en) * 1989-06-05 1991-08-20 Canadian Marconi Corporation RAM-implemented convolutional interleaver
US5247613A (en) * 1990-05-08 1993-09-21 Thinking Machines Corporation Massively parallel processor including transpose arrangement for serially transmitting bits of data words stored in parallel
US5590271A (en) * 1993-05-21 1996-12-31 Digital Equipment Corporation Interactive visualization environment with improved visual programming interface
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US5600653A (en) * 1994-09-30 1997-02-04 Comsat Corporation Technique for improving asynchronous transfer mode operation over a communications link with bursty bit errors
US5819106A (en) * 1995-11-27 1998-10-06 Sun Microsystems, Inc. Method of transposing data buffer by selectively merging pairs of rows, interleaving two operands of equal length yielding output twice the length of each operand

Also Published As

Publication number Publication date
EP0775973A2 (en) 1997-05-28
EP0775973B1 (en) 2003-06-18
AU704659B2 (en) 1999-04-29
US5819106A (en) 1998-10-06
EP0775973A3 (ja) 1997-06-11
AU7189096A (en) 1997-06-05

Similar Documents

Publication Publication Date Title
US6954204B2 (en) Programmable graphics system and method using flexible, high-precision data formats
US5764238A (en) Method and apparatus for scaling and blending an image to be displayed
US7492376B2 (en) Graphics resampling system and method for use thereof
JPH11167378A (ja) 画像をスケーリングする方法
US6333743B1 (en) Method and apparatus for providing image and graphics processing using a graphics rendering engine
EP0485535A1 (en) Image computing system
US5867608A (en) Method and apparatus for scaling images
EP0658858B1 (en) Graphics computer
EP0752694B1 (en) Method for quickly painting and copying shallow pixels on a deep frame buffer
JPH1049666A (ja) 断片発生器および断片発生方法
JPH1049665A (ja) 画像処理装置および方法
JPH09305753A (ja) データを転置する方法
JPH10134176A (ja) 画像信号処理方法及び装置
US5745123A (en) Method for resizing an image by a factor of two
JP2002354400A (ja) データ格納/読み出し方法及びその方法を用いた画像データ記憶装置並びにその記憶装置を用いた画像補正装置
JP2737829B2 (ja) イメージ・データの拡大変換方法及び装置
JPH07129460A (ja) 画像処理方法及びその装置
JPH04349496A (ja) 画像処理装置及びその方式
JP2901631B2 (ja) 画像処理装置
JP3016372B2 (ja) 画像処理装置
JPS63129476A (ja) 画像デ−タ拡大縮小回転装置
JPH0863595A (ja) 画像の回転処理方法およびその装置
JPH01321573A (ja) 画像データ変換回路
WO1999030276A1 (fr) Processeur de signaux numeriques et procede de traitement de signaux numeriques
JPH0296878A (ja) 画像処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070517

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070612

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20071023