JP2569307B2 - 画像回転方法 - Google Patents
画像回転方法Info
- Publication number
- JP2569307B2 JP2569307B2 JP60263960A JP26396085A JP2569307B2 JP 2569307 B2 JP2569307 B2 JP 2569307B2 JP 60263960 A JP60263960 A JP 60263960A JP 26396085 A JP26396085 A JP 26396085A JP 2569307 B2 JP2569307 B2 JP 2569307B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- raster
- storage
- run
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 66
- 238000003860 storage Methods 0.000 claims description 150
- 239000000872 buffer Substances 0.000 claims description 54
- 238000006243 chemical reaction Methods 0.000 claims description 41
- 239000011159 matrix material Substances 0.000 claims description 17
- 230000008707 rearrangement Effects 0.000 claims description 5
- 238000012432 intermediate storage Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 2
- 230000006837 decompression Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 23
- 238000012360 testing method Methods 0.000 description 13
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000010420 art technique Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000000280 densification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 235000020281 long black Nutrition 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/602—Rotation of whole images or parts thereof by block rotation, e.g. by recursive reversal or rotation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/606—Rotation of whole images or parts thereof by memory addressing or mapping
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
- Digital Computer Display Output (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Description
【発明の詳細な説明】 A.産業上の利用分野 この発明はデジタル画像処理方法に関し、とくにコー
ド化画像を操作して回転させようとするものである。
ド化画像を操作して回転させようとするものである。
B.従来技術 コード化システムに入力する際に、元画像を元の方位
に関して回転させるコード化画像データ処理方法につい
ては非常に多くの従来技術がある。たとえばIBM Techni
cal Disclosure Bulletin,Vol.13、No.11、P3267(1971
年4月)に記載がある。
に関して回転させるコード化画像データ処理方法につい
ては非常に多くの従来技術がある。たとえばIBM Techni
cal Disclosure Bulletin,Vol.13、No.11、P3267(1971
年4月)に記載がある。
出力画像をラスタ状に表示するようなアプリケーシヨ
ンにおいて、ラスタ状の読み出しに適した処理対象画像
データがストレージ中に直接保持されていないこともあ
る。すなわち2値ビットの各々が元画像の画素すなわち
ペル(Pel;Pixureelement)を表わしていないことがあ
る。たとえば画像データはラン・エンド(run end)ま
たはラン・レングス(run length)の形態で記憶されて
いるかもしれない。すなわち2進コーデイングは元画像
の黒および白の間の遷移点を表わしている。ラン・レン
グス・コーデイングにおいては、2進数が画像中の線分
の黒セグメントおよび白セグメントの各々の広がりを表
わしている。他方ラン・エンド・コーデイングにおいて
は2進数が線分に沿う継続する遷移点を累積的に表わ
す。このような表記はCCITT圧縮標準のような手順によ
り高密度化されるかもしれない。このような高密度化手
法の1つは米国特許出願第571239号(特願昭59−263158
号)に記載されている。この方法にはエンコーダおよび
デコーダの双方が含まれる。このデコーダはコード化画
像の個々の線のラン・エンド表示を行うのに用いられ
る。
ンにおいて、ラスタ状の読み出しに適した処理対象画像
データがストレージ中に直接保持されていないこともあ
る。すなわち2値ビットの各々が元画像の画素すなわち
ペル(Pel;Pixureelement)を表わしていないことがあ
る。たとえば画像データはラン・エンド(run end)ま
たはラン・レングス(run length)の形態で記憶されて
いるかもしれない。すなわち2進コーデイングは元画像
の黒および白の間の遷移点を表わしている。ラン・レン
グス・コーデイングにおいては、2進数が画像中の線分
の黒セグメントおよび白セグメントの各々の広がりを表
わしている。他方ラン・エンド・コーデイングにおいて
は2進数が線分に沿う継続する遷移点を累積的に表わ
す。このような表記はCCITT圧縮標準のような手順によ
り高密度化されるかもしれない。このような高密度化手
法の1つは米国特許出願第571239号(特願昭59−263158
号)に記載されている。この方法にはエンコーダおよび
デコーダの双方が含まれる。このデコーダはコード化画
像の個々の線のラン・エンド表示を行うのに用いられ
る。
ラン表示形態にコード化された画像を回転させる手法
の1つにはつぎのようなものがあると考えられる。すな
わち、まずコード化画像をラスタ画像形態に変換する。
この変換には米国特許出願第567292号(特願昭59−1927
56号)を用いる。このうち米国特許出願567214号(特願
昭59−192755号)または米国特許出願567293号(特願昭
59−252113号)の手順を用いてその場で画像を回転させ
る。これらの手法はそれ自体では有意義なものであるけ
れども、それらを組み合わせると非常な量のデータ移動
が必要となる。これらの多くは本来不要となるものかも
しれない。他の問題点はつぎのような事実から招来され
る。すなわち組み合わせて構成される手順は、全画像を
含むほど大きくないブロツクにストレージを割り付ける
システムで使用するのに不適切にちがいないということ
である。このようなシステムでは、画像をいくつかのブ
ロツクに分けて配置しなければならず、その場で90゜回
転させるのに必要な再配置は極めて複雑なものとなる。
この結果、典型的な画像に関しては、画像をラスタ形態
に変換するステツプと画像のサブ・ユニツト(たとえば
8×8ペル・ブロツク)を再配置するステツプとを組み
合わせるほうがより効果的かもしれない。
の1つにはつぎのようなものがあると考えられる。すな
わち、まずコード化画像をラスタ画像形態に変換する。
この変換には米国特許出願第567292号(特願昭59−1927
56号)を用いる。このうち米国特許出願567214号(特願
昭59−192755号)または米国特許出願567293号(特願昭
59−252113号)の手順を用いてその場で画像を回転させ
る。これらの手法はそれ自体では有意義なものであるけ
れども、それらを組み合わせると非常な量のデータ移動
が必要となる。これらの多くは本来不要となるものかも
しれない。他の問題点はつぎのような事実から招来され
る。すなわち組み合わせて構成される手順は、全画像を
含むほど大きくないブロツクにストレージを割り付ける
システムで使用するのに不適切にちがいないということ
である。このようなシステムでは、画像をいくつかのブ
ロツクに分けて配置しなければならず、その場で90゜回
転させるのに必要な再配置は極めて複雑なものとなる。
この結果、典型的な画像に関しては、画像をラスタ形態
に変換するステツプと画像のサブ・ユニツト(たとえば
8×8ペル・ブロツク)を再配置するステツプとを組み
合わせるほうがより効果的かもしれない。
C.発明が解決しようとする問題点 本発明の主な目的は、ラン表示画像データのラスタ表
示画像データ(画素データとも呼ぶ)への伸長変換処理
の際に、後続の回転処理における画素ビットの並び換え
に便利になるように変換画素データをストレージ・ブロ
ックに割り振ることができるラン表示画像の回転方法を
提供することである。
示画像データ(画素データとも呼ぶ)への伸長変換処理
の際に、後続の回転処理における画素ビットの並び換え
に便利になるように変換画素データをストレージ・ブロ
ックに割り振ることができるラン表示画像の回転方法を
提供することである。
本発明の他の目的は、ラン表示画像データ全体をラス
タ表示画像データに伸張変換するための大容量の単一の
ストレージ域が利用できない動作環境において、ラン表
示画像データの伸張変換動作中に、変換画素データを複
数の各ストレージ・ブロック(バッファとも呼ぶ)に順
次に割り振りストアし、変換画素データを各バッファ毎
に独立して回転処理してストレージ域を有効に利用でき
るラン表示画像の回転方法を提供することである。
タ表示画像データに伸張変換するための大容量の単一の
ストレージ域が利用できない動作環境において、ラン表
示画像データの伸張変換動作中に、変換画素データを複
数の各ストレージ・ブロック(バッファとも呼ぶ)に順
次に割り振りストアし、変換画素データを各バッファ毎
に独立して回転処理してストレージ域を有効に利用でき
るラン表示画像の回転方法を提供することである。
本発明の他の目的は、各画素データ・ブロック毎の独
立した回転処理において、n×n画素ビットから成る画
素サブブロックを単位として元画像から90度回転した出
力画像を生成するためのラン表示画像の回転方法を提供
することである。
立した回転処理において、n×n画素ビットから成る画
素サブブロックを単位として元画像から90度回転した出
力画像を生成するためのラン表示画像の回転方法を提供
することである。
D.問題点を解決するための手段 本発明による元画像(すなわちラン表示画像)の回転
方法は、ラン・エンド符号化またはラン・レングス符号
化の画像データを画像ライン毎に画素データに伸張して
全画像データをラスタ形態に変換処理するステップおよ
びこの画素データを時計方向または反時計方向に90度の
角度だけ回転処理するステップから成る。ラン表示画像
データの伸張変換処理においては、任意の1つの画素ラ
イン上のデータのストア先は、所定数のバイト幅の画素
ビット毎に、または画素ビットがブロック境界までスト
アされ終わる時、現行ストレージ・ブロックから次のス
トレージ・ブロックへブロック境界を越えて割り振られ
る。
方法は、ラン・エンド符号化またはラン・レングス符号
化の画像データを画像ライン毎に画素データに伸張して
全画像データをラスタ形態に変換処理するステップおよ
びこの画素データを時計方向または反時計方向に90度の
角度だけ回転処理するステップから成る。ラン表示画像
データの伸張変換処理においては、任意の1つの画素ラ
イン上のデータのストア先は、所定数のバイト幅の画素
ビット毎に、または画素ビットがブロック境界までスト
アされ終わる時、現行ストレージ・ブロックから次のス
トレージ・ブロックへブロック境界を越えて割り振られ
る。
画像全体の伸張変換処理は、この各ラン・ライン毎の
変換処理を最初の画像ラインに対応するラン表示データ
から最終画像ラインに対するラン表示データに向けて逐
次的に実行される。全画像の変換処理の終了時点におい
ては、全ラン表示画像データから変換された全ラスタ表
示画像データを列方向に複数の区画(例えは、垂直条片
区画)に論理的に分割して得られた画素データ・ブロッ
ク(単にデータ・ブロックとも呼ぶ)の各々がそれぞれ
対応する複数個の各ストレージ・ブロック内にストアさ
れていることになる。
変換処理を最初の画像ラインに対応するラン表示データ
から最終画像ラインに対するラン表示データに向けて逐
次的に実行される。全画像の変換処理の終了時点におい
ては、全ラン表示画像データから変換された全ラスタ表
示画像データを列方向に複数の区画(例えは、垂直条片
区画)に論理的に分割して得られた画素データ・ブロッ
ク(単にデータ・ブロックとも呼ぶ)の各々がそれぞれ
対応する複数個の各ストレージ・ブロック内にストアさ
れていることになる。
回転処理は、分散している各ストレージ・ブロック内
の各データ・ブロック毎に独立して実行され、各データ
・ブロック内では画素サブブロック単位で実行される。
の各データ・ブロック毎に独立して実行され、各データ
・ブロック内では画素サブブロック単位で実行される。
本発明の構成は次の通りである。
1.画像全体を表示するための複数行の画像ライン・デー
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振って前記複数個のストレ
ージ・ブロックに跨って前記第1行のラスタ・ライン表
示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状態に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行n列の第1
の画素サブブロックを読み取り、その画素サブブロック
における各行のnビット配列を対応する各列のnビット
配列に配列換えするための画素サブブロックの回転を遂
行し、この第1の回転済み画素サブブロックを水平条片
状の第1の出力ストレージ・ブロック内の隅位置にスト
アするステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降n行としてストア
するステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振って前記複数個のストレ
ージ・ブロックに跨って前記第1行のラスタ・ライン表
示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状態に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行n列の第1
の画素サブブロックを読み取り、その画素サブブロック
における各行のnビット配列を対応する各列のnビット
配列に配列換えするための画素サブブロックの回転を遂
行し、この第1の回転済み画素サブブロックを水平条片
状の第1の出力ストレージ・ブロック内の隅位置にスト
アするステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降n行としてストア
するステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。
2.画像全体を表示するための複数行の画像ライン・デー
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振り、その際、現在伸張変
換中のラン・ライン上の現行ラン・エンドおよび現像ス
トレージ・ブロックにストアされるべき最終ビット位置
に依存して、変換データの振り分け先を現行ストレージ
・ブロックから次のストレージ・ブロックへ切り換え、
前記複数個のストレージ・ブロックに跨って前記第1行
のラスタ・ライン表示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行n列の第1
の画素サブブロックを読み取り、その画素サブブロック
における各行のnビット配列を対応する各列のnビット
配列に配列換えするための画素サブブロックの回転を遂
行し、この第1の回転済み画素サブブロックを水平条片
状の第1の出力ストレージ・ブロック内の隅位置にスト
アするステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降のn行としてスト
アするステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振り、その際、現在伸張変
換中のラン・ライン上の現行ラン・エンドおよび現像ス
トレージ・ブロックにストアされるべき最終ビット位置
に依存して、変換データの振り分け先を現行ストレージ
・ブロックから次のストレージ・ブロックへ切り換え、
前記複数個のストレージ・ブロックに跨って前記第1行
のラスタ・ライン表示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行n列の第1
の画素サブブロックを読み取り、その画素サブブロック
における各行のnビット配列を対応する各列のnビット
配列に配列換えするための画素サブブロックの回転を遂
行し、この第1の回転済み画素サブブロックを水平条片
状の第1の出力ストレージ・ブロック内の隅位置にスト
アするステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降のn行としてスト
アするステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。
3.画像全体を表示するための複数行の画像ライン・デー
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振って前記複数個のストレ
ージ・ブロックに跨って前記第1行のラスタ・ライン表
示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行nの第1の
画素サブブロックを読み取り、その画素サブブロックに
おける各行のnビット配列を対応する各列のnビット配
列に配列換えするための画素サブブロックの回転を遂行
し、この第1の回転済み画素サブブロックを水平条片状
の第1の出力ストレージ・ブロック内の隅位置にストア
するステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降のn行としてスト
アするステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法であって、 各画素サブブロックを前記ストレージ・ブロックから
読み取り回転して前記第1出力ストレージ・ブロックに
ストアする前記ステップは、 各画素サブブロックを8x8ビット単位で読み取り、回
転に先立って、8バイト直列の画素ストリングの形で中
間ストレージ・ブロックにストアするステップ、 前記中間ストレージ・ブロックからのデータ読み取り
バイト位置および前記第1出力ストレージ・ブロックへ
のデータの書き込みバイト位置を指定する入力ポインタ
および出力ポインタにより前記中間および第1出力の各
ストレージ・ブロックの所定位置をポイントさせるステ
ップ、 前記入力ポインタで指定されたバイト位置から始まり
順次に読み取られた8個のバイトに関して画素ビットの
配列換えを実行して回転済み画素サブブロックを構築
し、その際、前記出力ポインタで指定された位置から始
まるNバイトの間隔で、前記回転済み画素サブブロック
の8バイトを順次にストアするステップ(ただし、Nは
出力画像の1ライン当りのバイト数)、 前記回転済み画素サブブロックの各構築毎に前記入力
ポインタおよび出力ポインタを、各々、8および1だけ
インクレメントするステップ、 を含む画像回転方法。
タの各行をラン表示データとしてストアしているラン・
データ・バッファの複数個および、それぞれ、ブロック
・アドレシングの可能な所定バイト幅の垂直条片状の複
数個のストレージ・ブロックを準備するステップ、 第1行の画像ライン・データに対応するラン表示デー
タを第1のラン・データ・バッファから順次に読み取っ
て第1行のラスタ・ライン表示データに伸張変換し、こ
れらの各変換データを、前記複数個のうちの最初(すな
わち第1)のストレージ・ブロック内の所定のバイト記
憶位置から最終のストレージ・ブロック内の最終バイト
記憶位置に向けて順次に割り振って前記複数個のストレ
ージ・ブロックに跨って前記第1行のラスタ・ライン表
示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降
のラン・データ・バッファにストアされているラン表示
データに関して前記伸張変換、割り振り、ストアのステ
ップを各行毎に順々に繰り返し、その際、画像の回転方
向に依存して、次行のラスタ・ライン表示データ行を前
行のラスタ・ライン表示データ行の下方または上方の隣
接位置に配置して画像全体に対するラスタ・ライン表示
データを前記複数個のストレージ・ブロック全体に跨が
って行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロ
ック内に行列状にストアされている垂直条片状の第1の
ラスタ・データ・ブロックの隅位置からn行nの第1の
画素サブブロックを読み取り、その画素サブブロックに
おける各行のnビット配列を対応する各列のnビット配
列に配列換えするための画素サブブロックの回転を遂行
し、この第1の回転済み画素サブブロックを水平条片状
の第1の出力ストレージ・ブロック内の隅位置にストア
するステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順
次に隣接している第2以降の画素サブブロックに関し
て、前記読み取り、回転、ストアのステップを繰り返
し、その際、第2以降の回転済の画素サブブロックを前
記第1の回転済の画素サブブロックに順次に水平方向に
隣接してストアすることにより最初のn列の全ラスタ・
データを回転して前記第1出力ストレージ・ブロック内
に最初のn行としてストアし、次に、前記第1ラスタ・
データ・ブロックの第2以降のn列に関して、前記読み
取り、回転、ストアのステップを繰り返すことにより第
2以降のn列の全ラスタ・データを回転して前記第1出
力ストレージ・ブロック内に第2以降のn行としてスト
アするステップ、 前記第1のストレージ・ブロックに行方向に後続する
第2以降の各ストレージ・ブロック内に行列状にストア
されている第2以降の各ラスタ・データ・ブロックに関
して、および第2以降の各出力ストレージ・ブロックに
関して、前記読み取り、回転、ストアのステップを繰り
返すステップ、 とより成り、画素を表わすラン表示データを複数個の
ストレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法であって、 各画素サブブロックを前記ストレージ・ブロックから
読み取り回転して前記第1出力ストレージ・ブロックに
ストアする前記ステップは、 各画素サブブロックを8x8ビット単位で読み取り、回
転に先立って、8バイト直列の画素ストリングの形で中
間ストレージ・ブロックにストアするステップ、 前記中間ストレージ・ブロックからのデータ読み取り
バイト位置および前記第1出力ストレージ・ブロックへ
のデータの書き込みバイト位置を指定する入力ポインタ
および出力ポインタにより前記中間および第1出力の各
ストレージ・ブロックの所定位置をポイントさせるステ
ップ、 前記入力ポインタで指定されたバイト位置から始まり
順次に読み取られた8個のバイトに関して画素ビットの
配列換えを実行して回転済み画素サブブロックを構築
し、その際、前記出力ポインタで指定された位置から始
まるNバイトの間隔で、前記回転済み画素サブブロック
の8バイトを順次にストアするステップ(ただし、Nは
出力画像の1ライン当りのバイト数)、 前記回転済み画素サブブロックの各構築毎に前記入力
ポインタおよび出力ポインタを、各々、8および1だけ
インクレメントするステップ、 を含む画像回転方法。
E.実施例 はじめに 本明細書中では、参考のため、画像の180度回転の場
合についても説明している。
合についても説明している。
この発明で処理される種類の画像のソースは、典型的
には黒および白で表わされたテキストまたは画像あるい
は黒および白に変換可能な態様で表わされたテキストま
たは画像を含む、書類その他の資料である。これら画像
ソースをたとえばラスタの態様で走査し、こののち必要
に応じてしきい値処理を施こし、2値画像を生成する。
この2値画像にはたとえば周知のCCITT標準に応じた適
宜のコード化が行われる。こののちコード化画像は記憶
される。または伝送され、デコードされ、たとえば電話
会議システムにおいて表示される。この場合伝送手段は
電話回線である。受信データにはラン・エンドまたはラ
ン・レングスでのデコードが可能である。2値ラン・エ
ンド・データをラスタ形態に変換するには、ビツトを生
成し、1本の線のデータ中のビツトの各々が出力画像中
の継続する白または黒のペルを表わすようにする必要が
ある。
には黒および白で表わされたテキストまたは画像あるい
は黒および白に変換可能な態様で表わされたテキストま
たは画像を含む、書類その他の資料である。これら画像
ソースをたとえばラスタの態様で走査し、こののち必要
に応じてしきい値処理を施こし、2値画像を生成する。
この2値画像にはたとえば周知のCCITT標準に応じた適
宜のコード化が行われる。こののちコード化画像は記憶
される。または伝送され、デコードされ、たとえば電話
会議システムにおいて表示される。この場合伝送手段は
電話回線である。受信データにはラン・エンドまたはラ
ン・レングスでのデコードが可能である。2値ラン・エ
ンド・データをラスタ形態に変換するには、ビツトを生
成し、1本の線のデータ中のビツトの各々が出力画像中
の継続する白または黒のペルを表わすようにする必要が
ある。
ラン・エンドの画像からラスタ画像を生成するのに適
したシステムは先に触れたように米国特許出願567292号
(特願昭59−192756号)に記載されている。この先願の
システムはラスタ画像を生成し、このうち米国特許出願
567214号(特願昭59−192755号)および567293号(特願
昭59−252113号)の回転アルゴリズムを用いてその場所
でまたは他の場所でラスタ画像を回転させることができ
る。この発明はこれらの手順をつぎの点で改良したもの
である。第1に、この発明は膨大な量のデータ再配置を
除去するという点である。第2に、単一の大容量のメモ
リ・ブロツクを占有するのでなく、多数の小容量メモリ
・ブロツクを占有するような画像を生成するのに用いる
ことができるという点である。ストレージを小さなメモ
リ片に割り付け、そのため全画像に対し回転機能の1つ
を適用するのに十分な大きさの連続ストレージをなすブ
ロツクを得るのが実際的でないようなプロセツサ上で上
述の手順を実現するときには、上述第2の考慮が重要と
なる。この発明は、画像が当初はラスタ状でないという
ことを利用し、回転処理に必要な再配置の一部を、ラス
タ画像生成プロセスで行えるようにするものである。
したシステムは先に触れたように米国特許出願567292号
(特願昭59−192756号)に記載されている。この先願の
システムはラスタ画像を生成し、このうち米国特許出願
567214号(特願昭59−192755号)および567293号(特願
昭59−252113号)の回転アルゴリズムを用いてその場所
でまたは他の場所でラスタ画像を回転させることができ
る。この発明はこれらの手順をつぎの点で改良したもの
である。第1に、この発明は膨大な量のデータ再配置を
除去するという点である。第2に、単一の大容量のメモ
リ・ブロツクを占有するのでなく、多数の小容量メモリ
・ブロツクを占有するような画像を生成するのに用いる
ことができるという点である。ストレージを小さなメモ
リ片に割り付け、そのため全画像に対し回転機能の1つ
を適用するのに十分な大きさの連続ストレージをなすブ
ロツクを得るのが実際的でないようなプロセツサ上で上
述の手順を実現するときには、上述第2の考慮が重要と
なる。この発明は、画像が当初はラスタ状でないという
ことを利用し、回転処理に必要な再配置の一部を、ラス
タ画像生成プロセスで行えるようにするものである。
なお、回転させられた画像が大きな領域の連続したス
トレージを占め、上述した手順を組み合わせて用いるこ
とができたとしても、この発明を適用して2つのステツ
プを同時に実行する方が多くの場合一層効率的であろ
う。180゜の回転の場合、全画像を内包するのに十分な
大きさの一つのブロツクを出力ブロツクのリストが有す
ると規定することにより、このことが実行できる。この
ようなアプローチは90゜の回転の場合にも良好な結果を
与えることとなる。しかし1つの特殊ブロツクが必要で
あり、かつすべてブロツクが同一サイズと仮定されてい
るので、このアプローチでは画像の2つのコピーを行う
のに十分なストレージが必要であろう。ストレージ上の
要請を削減するには、回転させられた画像用に割り付け
られたストレージ領域を多数の小ブロツクに分割すると
よい。これらブロツクの各々は回転させられた画像のち
ようど8K(Kは整数)本の線を含むに十分な大きさを有
する。また最終ブロツクでは残余スペースが生じるかも
しれないけれども、他のブロツクでは残余スペースは、
皆無である。所望の補助ブロツクはより小さいものとな
るであろう。
トレージを占め、上述した手順を組み合わせて用いるこ
とができたとしても、この発明を適用して2つのステツ
プを同時に実行する方が多くの場合一層効率的であろ
う。180゜の回転の場合、全画像を内包するのに十分な
大きさの一つのブロツクを出力ブロツクのリストが有す
ると規定することにより、このことが実行できる。この
ようなアプローチは90゜の回転の場合にも良好な結果を
与えることとなる。しかし1つの特殊ブロツクが必要で
あり、かつすべてブロツクが同一サイズと仮定されてい
るので、このアプローチでは画像の2つのコピーを行う
のに十分なストレージが必要であろう。ストレージ上の
要請を削減するには、回転させられた画像用に割り付け
られたストレージ領域を多数の小ブロツクに分割すると
よい。これらブロツクの各々は回転させられた画像のち
ようど8K(Kは整数)本の線を含むに十分な大きさを有
する。また最終ブロツクでは残余スペースが生じるかも
しれないけれども、他のブロツクでは残余スペースは、
皆無である。所望の補助ブロツクはより小さいものとな
るであろう。
この発明の良好な実施例では、元の(入力)画像のラ
ン表示形態は一連のバツフアに含まれるものとしてい
る。バツフア1個は画像データの1本の線すなわち行に
対応する。説明の適宜上、各バツファが一連の半ワード
を有するものとする。半ワードはラン・エンド・データ
を有する。当業者にとつては日常的な設計変更でラン・
レングス表示を用いるようにできることは明らかであろ
う。ラン・エンド・データ半ワード中の16ビツトは32K
までの幅を有する画像を正の変位として表示するのに適
切である。各ライン・バツフア中の第1半ワードはラン
・エンド・データのバイト数に計数値(バツフア中のデ
ータの総バイト数)用の2バイトを足した数を表わす。
これに続いて3個のゼロのラン・エンド、任意の数の対
をなす白・黒ラン・エンドおよび最終黒ラン・エンドの
2個の付加的なコピーが配される。画像行が黒ランで始
まれば、最初の白ラン・エンドはゼロとして記述され
る。画像行が白ランで終ると、最終の黒ラン・エンドは
最終の白ラン・エンドと同一とされる。このため最終の
実際のラン・エンドについて3つのコピーが存在するこ
とになる。たとえば 24 0 0 0 0 10 27 28 32 32 32 32 16 0 0 0 32 32 32 32 32 0 0 0 0 1 1 3 8 9 12 28 31 32 32 32 の半ワード・エントリをラン・エンドバツフアが有して
いると、これはつぎのようなドツト画像に対応する。
ン表示形態は一連のバツフアに含まれるものとしてい
る。バツフア1個は画像データの1本の線すなわち行に
対応する。説明の適宜上、各バツファが一連の半ワード
を有するものとする。半ワードはラン・エンド・データ
を有する。当業者にとつては日常的な設計変更でラン・
レングス表示を用いるようにできることは明らかであろ
う。ラン・エンド・データ半ワード中の16ビツトは32K
までの幅を有する画像を正の変位として表示するのに適
切である。各ライン・バツフア中の第1半ワードはラン
・エンド・データのバイト数に計数値(バツフア中のデ
ータの総バイト数)用の2バイトを足した数を表わす。
これに続いて3個のゼロのラン・エンド、任意の数の対
をなす白・黒ラン・エンドおよび最終黒ラン・エンドの
2個の付加的なコピーが配される。画像行が黒ランで始
まれば、最初の白ラン・エンドはゼロとして記述され
る。画像行が白ランで終ると、最終の黒ラン・エンドは
最終の白ラン・エンドと同一とされる。このため最終の
実際のラン・エンドについて3つのコピーが存在するこ
とになる。たとえば 24 0 0 0 0 10 27 28 32 32 32 32 16 0 0 0 32 32 32 32 32 0 0 0 0 1 1 3 8 9 12 28 31 32 32 32 の半ワード・エントリをラン・エンドバツフアが有して
いると、これはつぎのようなドツト画像に対応する。
上述のようなラン・エンド・データは種々のソースか
ら得ることができる。たとえば米国特許出願第571239号
のデコーダはラン・エンドの形態で画像ラインの表示を
行う。米国特許出願第567218号のラスタ・データからラ
ン表示形態への変換方法も同様である。データは1時に
1本のラインずつこの発明の装置に供給できる。この発
明では、回転すべき画像の多重ライン(ラン表示形態の
ライン)を同時に利用可能にしておく必要がない。この
発明でラン表示データをラスタ形態に変換する際には、
ラン表示データの生成を変換とインターリーブさせて行
うことができる。
ら得ることができる。たとえば米国特許出願第571239号
のデコーダはラン・エンドの形態で画像ラインの表示を
行う。米国特許出願第567218号のラスタ・データからラ
ン表示形態への変換方法も同様である。データは1時に
1本のラインずつこの発明の装置に供給できる。この発
明では、回転すべき画像の多重ライン(ラン表示形態の
ライン)を同時に利用可能にしておく必要がない。この
発明でラン表示データをラスタ形態に変換する際には、
ラン表示データの生成を変換とインターリーブさせて行
うことができる。
最も単純な回転は180゜の回転である。変換手順を適
宜に修正し、処理手順を変更すれば、画像をラスタ形態
に変換するのに必要な処理量とほぼ等価な処理量で180
゜の回転操作を実行できる。ラン表現の画像をラスタ形
態に変換する際には、通常、回転させられた(出力)画
像用に割り付けられたストレージの最初にポインタが付
される。入力画像の第1のラインを得ると、ラン・エン
ド・バツフアが左から右へ読み出され、このとき出力画
像中に左から右にランが埋め込まれていく。つぎにポイ
ンタが出力画像の第2ラインの最初をアドレスして、つ
ぎのラインが変換される。以降入力画像および出力画像
の双方につき、上から下へと処理が続けられる。
宜に修正し、処理手順を変更すれば、画像をラスタ形態
に変換するのに必要な処理量とほぼ等価な処理量で180
゜の回転操作を実行できる。ラン表現の画像をラスタ形
態に変換する際には、通常、回転させられた(出力)画
像用に割り付けられたストレージの最初にポインタが付
される。入力画像の第1のラインを得ると、ラン・エン
ド・バツフアが左から右へ読み出され、このとき出力画
像中に左から右にランが埋め込まれていく。つぎにポイ
ンタが出力画像の第2ラインの最初をアドレスして、つ
ぎのラインが変換される。以降入力画像および出力画像
の双方につき、上から下へと処理が続けられる。
ラスタへの変換と同時に180゜の回転を行うために
は、上述のプロセスの一部を反転させる。ポインタはま
ず出力画像用に割り付けられたストレージの終端に配さ
れる。入力画像の最初のラインが得られる。ラン・エン
ド・バツフアは左から右へと読み出されるけれども、ラ
ンは出力画像中に右から左へと埋め込まれる。これによ
りラン・エンド・バツフアにより規定されたラインのビ
ツト・パターンが反転させられる。つぎに出力ポインタ
が最後から2番目の出力ラインの終端に配され、第2の
入力ラインが得られ、同様にしてラスタ形態に変換され
る。このプロセスが同様に継続される。この際処理は出
力画像の最上部に向かつて行われ、同時に入力画像の底
部に向かつて行われる。画像を変換および回転させて多
重ブロツクのストレージに入れる場合には、出力ポイン
タがブロツクの最初にくるたび出力ポインタを再配置し
なければならない。
は、上述のプロセスの一部を反転させる。ポインタはま
ず出力画像用に割り付けられたストレージの終端に配さ
れる。入力画像の最初のラインが得られる。ラン・エン
ド・バツフアは左から右へと読み出されるけれども、ラ
ンは出力画像中に右から左へと埋め込まれる。これによ
りラン・エンド・バツフアにより規定されたラインのビ
ツト・パターンが反転させられる。つぎに出力ポインタ
が最後から2番目の出力ラインの終端に配され、第2の
入力ラインが得られ、同様にしてラスタ形態に変換され
る。このプロセスが同様に継続される。この際処理は出
力画像の最上部に向かつて行われ、同時に入力画像の底
部に向かつて行われる。画像を変換および回転させて多
重ブロツクのストレージに入れる場合には、出力ポイン
タがブロツクの最初にくるたび出力ポインタを再配置し
なければならない。
つぎに180゜の回転を行うための参考例を第1図およ
び第2図を参照して説明しよう。この実施例では、出力
画像がストレージ中の1またはそれ以上のブロツクを占
め、各ブロツクがいくつかの完結した画像ラインを含
み、部分的な画像ラインを含まないものとする。個々の
ブロツク中に配されるべき画像データのバイト数を関数
NB(Number of Bytes:バイト数)により与える。この手
順で用いられる変数はつぎのようなものである。
び第2図を参照して説明しよう。この実施例では、出力
画像がストレージ中の1またはそれ以上のブロツクを占
め、各ブロツクがいくつかの完結した画像ラインを含
み、部分的な画像ラインを含まないものとする。個々の
ブロツク中に配されるべき画像データのバイト数を関数
NB(Number of Bytes:バイト数)により与える。この手
順で用いられる変数はつぎのようなものである。
BLKPTR ブロツク・アドレスのリストへのポインタ BLKPT BLKPTRによりアドレスされたポインタ。これ
はブロツクをポイントする。
はブロツクをポイントする。
LAST 現在作られている出力バイトへのポインタ RPTR 現在変換されている白黒ラン・エンド対への
ポインタ WHITEEND RPTRによりアドレスされた白ラン・エンド BLACKEND RPTRによりアドレスされた黒ラン・エンド REND 変換されているランのラン・エンド CUM 作られている出力バイト BITS 値が決定済みであるけれどいまだストアされ
ていない画像ペル(ビツト)の数 LASTBYTE LASTによりアドレスされた出力バイト IC 1ラインごとのビツト数(8の倍数に仮定さ
れている) T 一時的な値 2つのテーブルSBLACKSおよびEBLACKSが変換のために
用いられる。これらテーブルの各々は8つのエントリを
有し、これらエントリに0〜7までのインデツクスを付
している。16進法ではエントリはつぎのとおりである。
ポインタ WHITEEND RPTRによりアドレスされた白ラン・エンド BLACKEND RPTRによりアドレスされた黒ラン・エンド REND 変換されているランのラン・エンド CUM 作られている出力バイト BITS 値が決定済みであるけれどいまだストアされ
ていない画像ペル(ビツト)の数 LASTBYTE LASTによりアドレスされた出力バイト IC 1ラインごとのビツト数(8の倍数に仮定さ
れている) T 一時的な値 2つのテーブルSBLACKSおよびEBLACKSが変換のために
用いられる。これらテーブルの各々は8つのエントリを
有し、これらエントリに0〜7までのインデツクスを付
している。16進法ではエントリはつぎのとおりである。
SBLACKS:FF FF FC F8 F0 E0 C0 80 EBLACKS:00 01 03 07 0F 1F 3F 7F SBLACKを用いていくつかの白ペルののちの黒ランを開
始させる(この白ペルは出力バイトの下位ビツトに配さ
れている。なぜならばラスタ・データは左から右へと作
られるからである)。また、このSBLACKを用いて第1
(下位)ビツトをのぞくすべてのビツトの変換を行う。
インデツクスは変化すべきでないビツトの数を表わす、
EBLACKを用いて黒ランの終端を作る。この場合も、ラン
中のペルは出力バイトの下位ビツトを占める。
始させる(この白ペルは出力バイトの下位ビツトに配さ
れている。なぜならばラスタ・データは左から右へと作
られるからである)。また、このSBLACKを用いて第1
(下位)ビツトをのぞくすべてのビツトの変換を行う。
インデツクスは変化すべきでないビツトの数を表わす、
EBLACKを用いて黒ランの終端を作る。この場合も、ラン
中のペルは出力バイトの下位ビツトを占める。
第1図は180゜の回転用の制御コードを示す。ブロツ
ク・リストの最終部分、すなわち出力画像の最終ライン
を含むブロツクのアドレスが、アドレスされ、こののち
LASTが配されて出力データを含む領域の最終バイトをポ
イントする。長い黒ランが変換されたときには出力領域
がゼロとされて出力領域がゼロ・バイトをストアする必
要がない。
ク・リストの最終部分、すなわち出力画像の最終ライン
を含むブロツクのアドレスが、アドレスされ、こののち
LASTが配されて出力データを含む領域の最終バイトをポ
イントする。長い黒ランが変換されたときには出力領域
がゼロとされて出力領域がゼロ・バイトをストアする必
要がない。
こののちラインを変換するループに入る。新しいラン
・エンド・バツフアが得られる。この時点で、ラン・エ
ンド・バツフアを調べて、ラン・エンド・バツフアが正
しい個数のビツトを含むラインを記述しているかどうか
を確かめることが望ましい。つぎにRPTRがセツトされて
最初の白黒ラン・エンド対をアドレスする。RPTRは8バ
イトのオフセツトでバツフアに入力される。ラインはラ
スタ形態に変換され、バイトの各々がストアされるたび
にポインタLASTが減分される。ライン変換が完了したの
ち、LASTは現行ブロツクの開始アドレスに比較される。
LASTのほうが大きければ、現行ブロツクにさらにライン
を変換する余地がある。このため以上のループが繰り返
される。そうでない場合は他のブロツクを得てLASTをリ
セツトする必要がある。やがて出力ブロツクのすべてが
画像データで満たされたかどうかをテストする。満たさ
れていれば処理を完了させる。そうでなければBLKPTRを
変更して先行出力ブロツクをアドレスし、LASTをリセツ
トしてそのブロツクのデータ領域の最後のバイトをポイ
ントする。そしてこのブロツク中のデータ領域をクリア
してライン変換のループを再度開始する。
・エンド・バツフアが得られる。この時点で、ラン・エ
ンド・バツフアを調べて、ラン・エンド・バツフアが正
しい個数のビツトを含むラインを記述しているかどうか
を確かめることが望ましい。つぎにRPTRがセツトされて
最初の白黒ラン・エンド対をアドレスする。RPTRは8バ
イトのオフセツトでバツフアに入力される。ラインはラ
スタ形態に変換され、バイトの各々がストアされるたび
にポインタLASTが減分される。ライン変換が完了したの
ち、LASTは現行ブロツクの開始アドレスに比較される。
LASTのほうが大きければ、現行ブロツクにさらにライン
を変換する余地がある。このため以上のループが繰り返
される。そうでない場合は他のブロツクを得てLASTをリ
セツトする必要がある。やがて出力ブロツクのすべてが
画像データで満たされたかどうかをテストする。満たさ
れていれば処理を完了させる。そうでなければBLKPTRを
変更して先行出力ブロツクをアドレスし、LASTをリセツ
トしてそのブロツクのデータ領域の最後のバイトをポイ
ントする。そしてこのブロツク中のデータ領域をクリア
してライン変換のループを再度開始する。
第2図は1本のラン・エンド・データを反転ラスタ形
態に変換するのに用いる処理を示す。始めに、先行ラン
・エンド、現行出力バイトおよびビツト・カウントがす
べてゼロとされる。白ランを変換するために、BITSを白
ランの長さ(WHITEENDとそのまえの黒ラン・エンドREND
と差)だけ増分し、白ラン・エンドをREND中に配置す
る。総ビツト・カウントが8に満たなければ、未決定ビ
ツトが黒ビツトとされて制御が黒ラン変換用のコード部
分に移管される。総ビツト・カウントが8以上であれ
ば、現行の出力バイトがストアされ、LASTが元に戻され
て先行出力バイトをアドレスする。バイトがストアされ
るたびにビツト・カウントは8だけ減分される。ビツト
・カウントが依然8未満でないのならば、出力ランは1
以上の白(ゼロ)バイトを含むにちがいない。ライン変
換に先だつて出力領域がクリアされるので、ゼロのバイ
トをストアする必要はない。適宜な程度だけLASTを戻し
てゼロのバイトを飛び越し、かつ飛び越したビツト数だ
けビツト・カウントを減少させることだけが必要であ
る。つぎに現行出力バイトがセツトされ、ビツト・カウ
ントにより定められる数の先行(すなわち下位)のゼロ
を含むことになる。なお残りは黒のビツトである。
態に変換するのに用いる処理を示す。始めに、先行ラン
・エンド、現行出力バイトおよびビツト・カウントがす
べてゼロとされる。白ランを変換するために、BITSを白
ランの長さ(WHITEENDとそのまえの黒ラン・エンドREND
と差)だけ増分し、白ラン・エンドをREND中に配置す
る。総ビツト・カウントが8に満たなければ、未決定ビ
ツトが黒ビツトとされて制御が黒ラン変換用のコード部
分に移管される。総ビツト・カウントが8以上であれ
ば、現行の出力バイトがストアされ、LASTが元に戻され
て先行出力バイトをアドレスする。バイトがストアされ
るたびにビツト・カウントは8だけ減分される。ビツト
・カウントが依然8未満でないのならば、出力ランは1
以上の白(ゼロ)バイトを含むにちがいない。ライン変
換に先だつて出力領域がクリアされるので、ゼロのバイ
トをストアする必要はない。適宜な程度だけLASTを戻し
てゼロのバイトを飛び越し、かつ飛び越したビツト数だ
けビツト・カウントを減少させることだけが必要であ
る。つぎに現行出力バイトがセツトされ、ビツト・カウ
ントにより定められる数の先行(すなわち下位)のゼロ
を含むことになる。なお残りは黒のビツトである。
黒ランを変換するには、BITSが黒ラン(BLACKENDとRE
NDにストア中のBLACKEND以前の白ランとの差)の長さだ
け増分する。黒ラン・エンドがRENDに配されたのち、ラ
ン・エンド・バツフア・ポインタRPTRが増分されてつぎ
の白黒ラン・エンド対に対してポイントを行う。ビツト
・カウントが8未満であれば、RENDをテストしてライン
の終端へ達したかどうかを調べる。ラインの終端に達し
ていれば、ビツト・カウントはゼロであり(ラインの幅
は8の倍数と仮定されているから)、したがつてストア
するデータはそれ以上なく、ライン変換が終了する。ラ
インの終端に達していなければ、未決定の出力ビツトが
反転されてこれらがゼロ(白)になる。そしてこののち
制御が白ラン変換コードに移管される。
NDにストア中のBLACKEND以前の白ランとの差)の長さだ
け増分する。黒ラン・エンドがRENDに配されたのち、ラ
ン・エンド・バツフア・ポインタRPTRが増分されてつぎ
の白黒ラン・エンド対に対してポイントを行う。ビツト
・カウントが8未満であれば、RENDをテストしてライン
の終端へ達したかどうかを調べる。ラインの終端に達し
ていれば、ビツト・カウントはゼロであり(ラインの幅
は8の倍数と仮定されているから)、したがつてストア
するデータはそれ以上なく、ライン変換が終了する。ラ
インの終端に達していなければ、未決定の出力ビツトが
反転されてこれらがゼロ(白)になる。そしてこののち
制御が白ラン変換コードに移管される。
黒ラン長を付加するとビツト・カウントが8またはそ
れ以上になる場合には、CUM中の完結した出力バイトを
ストアし、LASTを戻してつぎのバイトをアドレスし、さ
らに8ビツトをストアするたびにBITSを8だけ減分す
る。BITSが依然8またはそれ以上であれば、数個の黒
(X′FF′)バイトを出力画像中に配さなくてはならな
い。1個の黒バイトをストアし、LASTを戻し、さらにBI
TSを減分する。BITSが8未満になるまでこのサイクルを
繰り返す。つぎに黒ラン・エンド値をテストしてライン
の終端に達したかどうかを決定する。もしラインの終端
に達したならば処理が終了する。そうでなければ新しい
出力バイトCUMの先行ビツトを黒にし、こののち制御を
つぎの白ラン・エンドの変換コードに移管する。
れ以上になる場合には、CUM中の完結した出力バイトを
ストアし、LASTを戻してつぎのバイトをアドレスし、さ
らに8ビツトをストアするたびにBITSを8だけ減分す
る。BITSが依然8またはそれ以上であれば、数個の黒
(X′FF′)バイトを出力画像中に配さなくてはならな
い。1個の黒バイトをストアし、LASTを戻し、さらにBI
TSを減分する。BITSが8未満になるまでこのサイクルを
繰り返す。つぎに黒ラン・エンド値をテストしてライン
の終端に達したかどうかを決定する。もしラインの終端
に達したならば処理が終了する。そうでなければ新しい
出力バイトCUMの先行ビツトを黒にし、こののち制御を
つぎの白ラン・エンドの変換コードに移管する。
90゜の回転は180゜の回転に較べいくぶん複雑であ
る。なぜならば、操作されるべき基本ユニツトが、バイ
ト(一次元)でなく、8×8のビツト・ブロツク(2次
元)であるからである。また、出力画像がいくつかのブ
ロツクに分割されるならば、入力ラインの各々からのデ
ータを出力ブロツクのすべてにわたつて分割しなければ
ならないからである。90゜の回転を行うに際し2つのス
テツプを利用すれば便利である。第1のステツプではラ
ン・エンド・データを中間的なラスタ・フオーマツトに
変換し、出力ブロツクの各々のラスタ・データをユニツ
トとしてストアする。第2のステツプでは8×8ビツト
からなるブロツクを回転させて出力画像を構成する。以
下説明されるブロツクでは出力ブロツクはすべて同一サ
イズとし、1個の特殊ブロツクが一時ストレージ用に設
けられるものとする。
る。なぜならば、操作されるべき基本ユニツトが、バイ
ト(一次元)でなく、8×8のビツト・ブロツク(2次
元)であるからである。また、出力画像がいくつかのブ
ロツクに分割されるならば、入力ラインの各々からのデ
ータを出力ブロツクのすべてにわたつて分割しなければ
ならないからである。90゜の回転を行うに際し2つのス
テツプを利用すれば便利である。第1のステツプではラ
ン・エンド・データを中間的なラスタ・フオーマツトに
変換し、出力ブロツクの各々のラスタ・データをユニツ
トとしてストアする。第2のステツプでは8×8ビツト
からなるブロツクを回転させて出力画像を構成する。以
下説明されるブロツクでは出力ブロツクはすべて同一サ
イズとし、1個の特殊ブロツクが一時ストレージ用に設
けられるものとする。
第3図は元の画像を時計方向に回転操作して、不連続
なブロツクに分割された出力画像を生成する場合を示
す。元の画像の行数はパデイング処理(不要なものをつ
め込む処理)により8の倍数とされる。これにより行の
総数は8N(Nは整数)で表わされる。各入力ラインには
8で割れる数のペルが含まれていると仮定する。画像は
概念上所定の幅Mの垂直条片(図でA、B、CおよびD
に表わされる)に分割される。ここでMは8NM(条片中
のバイト数)が出力ブロツクの各々につき利用可能なバ
イト数と等しいか少ないようなバイト数である。一般に
画像の幅はMで等間隔に分割できないので、最後の垂直
条片はMに等しいか小さい幅M′を有する。元の画像の
垂直条片の各々は独立に回転させられて出力画像の水平
条片を生成する。
なブロツクに分割された出力画像を生成する場合を示
す。元の画像の行数はパデイング処理(不要なものをつ
め込む処理)により8の倍数とされる。これにより行の
総数は8N(Nは整数)で表わされる。各入力ラインには
8で割れる数のペルが含まれていると仮定する。画像は
概念上所定の幅Mの垂直条片(図でA、B、CおよびD
に表わされる)に分割される。ここでMは8NM(条片中
のバイト数)が出力ブロツクの各々につき利用可能なバ
イト数と等しいか少ないようなバイト数である。一般に
画像の幅はMで等間隔に分割できないので、最後の垂直
条片はMに等しいか小さい幅M′を有する。元の画像の
垂直条片の各々は独立に回転させられて出力画像の水平
条片を生成する。
ラン表示形態の元画像を、たとえば米国特許第4,596,
039号明細書に開示の技術または他の変換技術を利用し
て、各ラン・ライン毎に順次に伸張し、伸張中の画素ビ
ツトをMバイト幅毎に不連続バイト・アドレスの分散し
たm個のストレージ・ブロック、すなわちバッファ、に
順次に分配しストアする。各ラン表示画像ライン上の1
つの黒ランまたは白ランが現行のバッファ中にもおよび
そのブロック境界を越えてつぎのバッファ中にも画素表
示しなければならない長さを有する場合、後述のように
ラン・エンド・ラスト処理を実行する。元画素ラインの
全部が上述のように伸張され、分配され、ストアされる
とき元画素の変換処理が終了する。前述の米国特許の場
合と同様に、本実施例の変換・回転システムにおいて
は、ストレージ・アレイにストアされたデータは、開始
点からのバイト単位のオフセットで表示する索引構造に
構築されている。索引手法は、大量データの指定位置か
らデータを迅速に抽出する技術としてよく知られている
ので詳細な説明は省略する。今、元画像の最初の行ない
し最終行に、各々、対応する第1のラン・ライン・デー
タないし第8Nラン・ライン・データが順次に伸張されて
各ストレージ・ブロツクの行番8N−1ないし0に、この
順序で、ストアされているものと仮定する(後述するよ
うに、反時計方向の回転の場合は、これとは反対に行番
0ないし8N−1の順序でストアされている)。各ラン・
ライン・データの割り振りについては、第5図ないし第
9図を参照して後述する。
039号明細書に開示の技術または他の変換技術を利用し
て、各ラン・ライン毎に順次に伸張し、伸張中の画素ビ
ツトをMバイト幅毎に不連続バイト・アドレスの分散し
たm個のストレージ・ブロック、すなわちバッファ、に
順次に分配しストアする。各ラン表示画像ライン上の1
つの黒ランまたは白ランが現行のバッファ中にもおよび
そのブロック境界を越えてつぎのバッファ中にも画素表
示しなければならない長さを有する場合、後述のように
ラン・エンド・ラスト処理を実行する。元画素ラインの
全部が上述のように伸張され、分配され、ストアされる
とき元画素の変換処理が終了する。前述の米国特許の場
合と同様に、本実施例の変換・回転システムにおいて
は、ストレージ・アレイにストアされたデータは、開始
点からのバイト単位のオフセットで表示する索引構造に
構築されている。索引手法は、大量データの指定位置か
らデータを迅速に抽出する技術としてよく知られている
ので詳細な説明は省略する。今、元画像の最初の行ない
し最終行に、各々、対応する第1のラン・ライン・デー
タないし第8Nラン・ライン・データが順次に伸張されて
各ストレージ・ブロツクの行番8N−1ないし0に、この
順序で、ストアされているものと仮定する(後述するよ
うに、反時計方向の回転の場合は、これとは反対に行番
0ないし8N−1の順序でストアされている)。各ラン・
ライン・データの割り振りについては、第5図ないし第
9図を参照して後述する。
第4図における左側の垂直条片は、前述した1つの画
素データ・ブロツクを示しており、垂直条片中、1ない
しNおよびN+1ないし2Nなどの参照数字が付されて各
小正方形は、相次ぐ8行の各画素ラインの最初のバイト
から成る8バイトおよび第2番目のバイトからなる8バ
イト、すなわち8×8画素ビツト・ユニツト(本明細書
中、画素サブブロックとも呼ぶ)、の画素データ単位を
示している。第4図の右上側の水平条片は、各バイト内
のビット配列を不変のまま各画素サブブロック内の8バ
イトを直列に、すなわち各画素サブブロックを64ビット
の画素ストリングの形に、フォマット変換して水平方向
に配列して、回転処理の際のアドレシングを簡単にする
ための回転準備段階における直列フォマットのラスタ・
データ(中間ラスタ・データとも呼ぶ)を示している。
水平条片中、参照数字1ないし2Nは、各々、垂直条片中
の画素サブブロック1ないし2Nに対応する8バイト直列
の64画素ストリングを示しており、垂直条片中の各列毎
の各画素サブブロックを、画像回転方向に依存して最下
位行から最上位行に向けて、またこれと反対の向きに、
各バイト単位で読み取り水平条片中に書き込むことによ
り各64画素ストリングが形成される。第4図の右下側の
水平条片は、前記中間ラスタ・データを、各画素サブブ
ロック内において各列のビット配列が対応する各行のビ
ット配列になるように、90度回転させてストアした回転
ラスタ・データを示す。この回転処理に関しては、第5
図ないし第9図を参照して後述する。
素データ・ブロツクを示しており、垂直条片中、1ない
しNおよびN+1ないし2Nなどの参照数字が付されて各
小正方形は、相次ぐ8行の各画素ラインの最初のバイト
から成る8バイトおよび第2番目のバイトからなる8バ
イト、すなわち8×8画素ビツト・ユニツト(本明細書
中、画素サブブロックとも呼ぶ)、の画素データ単位を
示している。第4図の右上側の水平条片は、各バイト内
のビット配列を不変のまま各画素サブブロック内の8バ
イトを直列に、すなわち各画素サブブロックを64ビット
の画素ストリングの形に、フォマット変換して水平方向
に配列して、回転処理の際のアドレシングを簡単にする
ための回転準備段階における直列フォマットのラスタ・
データ(中間ラスタ・データとも呼ぶ)を示している。
水平条片中、参照数字1ないし2Nは、各々、垂直条片中
の画素サブブロック1ないし2Nに対応する8バイト直列
の64画素ストリングを示しており、垂直条片中の各列毎
の各画素サブブロックを、画像回転方向に依存して最下
位行から最上位行に向けて、またこれと反対の向きに、
各バイト単位で読み取り水平条片中に書き込むことによ
り各64画素ストリングが形成される。第4図の右下側の
水平条片は、前記中間ラスタ・データを、各画素サブブ
ロック内において各列のビット配列が対応する各行のビ
ット配列になるように、90度回転させてストアした回転
ラスタ・データを示す。この回転処理に関しては、第5
図ないし第9図を参照して後述する。
つぎに時計方向の回転手順を第5図〜第9図を参照し
て詳細に説明する。使用される変数はつぎのとおりであ
る。
て詳細に説明する。使用される変数はつぎのとおりであ
る。
BLKPTR ブロツク・アドレスのリストへのポインタ BLKPT BLKPTRによりアドレスされたポインタ:これ
はブロツクをポイントする。
はブロツクをポイントする。
OFFSET 変換されているラインの最初のバイトをスト
アすべきブロツクの、開始点からのオフセツト RPTR 現在変換されている白黒ラン・エンド対への
ポインタ WHITEEND RPTRによりアドレスされた白ラン・エンド BLACKEND RPTRによりアドレスされた黒ラン・エンド LCOL 現行ブロツクにストアされるべき最終ビツト
の、開始点からのビツト・オフセツト LAST 現在作られている出力バイトへのポインタ REND 変換されているランのラン・エンド CUM 作られている出力バイト BITS 値が決定済みであるけれど、いまだストアさ
れていない画像ペル(ビツト)の数 NLINES 出力ブロツクあたりの出力ライン数。8の倍
数に仮定されている。
アすべきブロツクの、開始点からのオフセツト RPTR 現在変換されている白黒ラン・エンド対への
ポインタ WHITEEND RPTRによりアドレスされた白ラン・エンド BLACKEND RPTRによりアドレスされた黒ラン・エンド LCOL 現行ブロツクにストアされるべき最終ビツト
の、開始点からのビツト・オフセツト LAST 現在作られている出力バイトへのポインタ REND 変換されているランのラン・エンド CUM 作られている出力バイト BITS 値が決定済みであるけれど、いまだストアさ
れていない画像ペル(ビツト)の数 NLINES 出力ブロツクあたりの出力ライン数。8の倍
数に仮定されている。
LASTBYTE LASTによりアドレスされた出力バイト IR 入力画像のライン数 IC 入力画像ラインあたりのビツト数 OC 出力画像ラインあたりのビツト数 IPTR 回転させられるべき中間ラスタ・データへの
ポインタ OPTR 出力画像バツフアへのポインタ LIM 回転ステツプ中の8ラインからなる1グルー
プに対する入力データの終端へのポインタ MAX 回転ステツプ中のブロツクのデータの終端へ
のポインタ T 一時点な値 テーブルSBLACKSおよびEBLACKSは180゜の回転で用い
たものと逆のものになつている。画像ラインのラスタ・
データは反転すべきでないからである。
ポインタ OPTR 出力画像バツフアへのポインタ LIM 回転ステツプ中の8ラインからなる1グルー
プに対する入力データの終端へのポインタ MAX 回転ステツプ中のブロツクのデータの終端へ
のポインタ T 一時点な値 テーブルSBLACKSおよびEBLACKSは180゜の回転で用い
たものと逆のものになつている。画像ラインのラスタ・
データは反転すべきでないからである。
SBLACKS:FF 7F 3F 1F 0F 07 03 01 EBLACKS:00 80 C0 E0 F0 F8 FC FE 第5図は、ラン・エンド・バッファからのラン・ライ
ン・データの伸張変換処理(上側矩形ブロック)および
時計方向の回転処理(下側矩形ブロック)のための制御
コードを示す。先ず、OFFSETの値を入力画像ライン数IR
マイナス1、すなわち第3図、第4図に示した本実施例
では8N−1、にセットする。前記定義にみられるよう
に、OFFSETとは、変換中の画素ライン上の第1バイトを
ストアすべき、ストレージ・ブロック内の開始点からオ
フセット値である。第1の出力ストレージ・ブロックを
除いて、残りの出力ストレージ・ブロックをクリアして
「0」値の記憶状態に保持しておく。これは、白ラン用
の「0」値の長いデータの転送、ストアの必要性をなく
して変換時間を短縮できる。この際、第1の出力ストレ
ージ・ブロックをクリアする必要はない。その理由は、
この第1ストレージ・ブロックが次のステップである回
転処理において補助バッファとして使用するからであ
る。さて、元画像のラン形態表示をラスタ形態表示に伸
張変換するループを開始する。元画像の最初の画像ライ
ン対応するラン・エンド・データを保持している第1の
ラン・エンド・バッファからラン・エンド・データを入
手する。この時点で、このデータが所定のライン幅を記
述しているかどうかを確認するのが好ましい。RPTRを、
ラン・エンド・バッファ内の開始位置から8のオフセッ
ト位置に、セットして最初の白黒ラン・エンド対をポイ
ントさせる。BLKPTRを初期化して第2の出力ストレージ
・ブロックのアドレスをポイントさせる。
ン・データの伸張変換処理(上側矩形ブロック)および
時計方向の回転処理(下側矩形ブロック)のための制御
コードを示す。先ず、OFFSETの値を入力画像ライン数IR
マイナス1、すなわち第3図、第4図に示した本実施例
では8N−1、にセットする。前記定義にみられるよう
に、OFFSETとは、変換中の画素ライン上の第1バイトを
ストアすべき、ストレージ・ブロック内の開始点からオ
フセット値である。第1の出力ストレージ・ブロックを
除いて、残りの出力ストレージ・ブロックをクリアして
「0」値の記憶状態に保持しておく。これは、白ラン用
の「0」値の長いデータの転送、ストアの必要性をなく
して変換時間を短縮できる。この際、第1の出力ストレ
ージ・ブロックをクリアする必要はない。その理由は、
この第1ストレージ・ブロックが次のステップである回
転処理において補助バッファとして使用するからであ
る。さて、元画像のラン形態表示をラスタ形態表示に伸
張変換するループを開始する。元画像の最初の画像ライ
ン対応するラン・エンド・データを保持している第1の
ラン・エンド・バッファからラン・エンド・データを入
手する。この時点で、このデータが所定のライン幅を記
述しているかどうかを確認するのが好ましい。RPTRを、
ラン・エンド・バッファ内の開始位置から8のオフセッ
ト位置に、セットして最初の白黒ラン・エンド対をポイ
ントさせる。BLKPTRを初期化して第2の出力ストレージ
・ブロックのアドレスをポイントさせる。
次に、RPTRで指示されている第1ラン・ライン・デー
タを伸張変換し、OFFSET8N−1の行位置において、第1
バイトから第Mバイトまで順次に第2出力ストレージ・
ブロック内の対応するバイト位置にストアし、第M+1
バイトから第2Mバイトまで順次に第3出力ストレージ・
ブロック内の対応するバイト位置にストアし、以下同様
に、BLKPTRが出力ストレージ・ブロックのすべてを巡回
するまで残りのバイトを対応する各出力ストレージ・ブ
ロック内の対応するバイト位置にストアする。次に、OF
FSETを1だけ減数して8N−2にセットし、第2のラン・
ライン・データの伸張変換のための準備を整える。次
に、OFFSETがゼロ未満であるかどうかを判断し、「ノ
ー」ならばさらに変換すべきラン・ライン・データが存
在するので、前述の伸張変換ループが次のラン・ライン
・データに対して実行される。前記判断が「イエス」な
らば、全画像ラン・データがラスタ表示形態に変換さ
れ、m個の出力ストレージ・ブロックに分散してストア
されたことを示す。
タを伸張変換し、OFFSET8N−1の行位置において、第1
バイトから第Mバイトまで順次に第2出力ストレージ・
ブロック内の対応するバイト位置にストアし、第M+1
バイトから第2Mバイトまで順次に第3出力ストレージ・
ブロック内の対応するバイト位置にストアし、以下同様
に、BLKPTRが出力ストレージ・ブロックのすべてを巡回
するまで残りのバイトを対応する各出力ストレージ・ブ
ロック内の対応するバイト位置にストアする。次に、OF
FSETを1だけ減数して8N−2にセットし、第2のラン・
ライン・データの伸張変換のための準備を整える。次
に、OFFSETがゼロ未満であるかどうかを判断し、「ノ
ー」ならばさらに変換すべきラン・ライン・データが存
在するので、前述の伸張変換ループが次のラン・ライン
・データに対して実行される。前記判断が「イエス」な
らば、全画像ラン・データがラスタ表示形態に変換さ
れ、m個の出力ストレージ・ブロックに分散してストア
されたことを示す。
第4図の左側の垂直条片(第2の出力ストレージ・ブ
ロックにストアされている画素データ・ブロック)内の
画素ライン・データの配列について説明する。画素サブ
ブロックNに対応する第1ないし第8の各画素ライン上
の合計8個の各第1バイトが、各々、OFFSET8N−1ない
し8N−8にストアされており、画素サブブロック2Nに対
応する合計8個の各第2バイトが、各々、OFFSET8N−1
ないし8N−8と同じ行番に属し、かつ、次位のバイト位
置に対応するオフセット位置16N−1ないし16N−8にス
トアされている。同様に、画素サブブロック1に対応す
る第8N−8ないし第8Nの各画素ライン上の合計8個の各
第1バイトが、各々、OFFSETないしOにストアされてお
り、画素サブブロックN+1に対応する合計8個の各第
2バイトは、各々、オフセット位置8N−7ないし8Nにス
トアされている。前述から、同じ画素ライン上の隣接し
た2つのバイトが8Nのオフセット位置にストアされてい
ることが明らかである。
ロックにストアされている画素データ・ブロック)内の
画素ライン・データの配列について説明する。画素サブ
ブロックNに対応する第1ないし第8の各画素ライン上
の合計8個の各第1バイトが、各々、OFFSET8N−1ない
し8N−8にストアされており、画素サブブロック2Nに対
応する合計8個の各第2バイトが、各々、OFFSET8N−1
ないし8N−8と同じ行番に属し、かつ、次位のバイト位
置に対応するオフセット位置16N−1ないし16N−8にス
トアされている。同様に、画素サブブロック1に対応す
る第8N−8ないし第8Nの各画素ライン上の合計8個の各
第1バイトが、各々、OFFSETないしOにストアされてお
り、画素サブブロックN+1に対応する合計8個の各第
2バイトは、各々、オフセット位置8N−7ないし8Nにス
トアされている。前述から、同じ画素ライン上の隣接し
た2つのバイトが8Nのオフセット位置にストアされてい
ることが明らかである。
全画像をラスタ形態に変換したのち、BLKPTRをセツト
してブロツク・リストの最初のブロツクのアドレスをポ
イントさせる(このリストはいまだ何に対しても使用さ
れていない)。こののちブロツクの各々の中間ラスタ・
データを回転させて他のブロツクに入力するループを開
始する。出力ブロツクをクリアしすべて白の8×8ビツ
ト・ブロツクについては何ら処理が必要とされないよう
にする。つぎに入力ブロツクからのデータを回転させて
出力ブロツクに入力する。そしてBLKPTRを変更し、これ
によりつぎの繰り返し処理を行うために入力ブロツクを
出力ブロツクとし、また新たな入力ブロツクを得る。回
転させるべきブロツクがないならば、つぎのブロツクを
回転させるループを繰り返す。
してブロツク・リストの最初のブロツクのアドレスをポ
イントさせる(このリストはいまだ何に対しても使用さ
れていない)。こののちブロツクの各々の中間ラスタ・
データを回転させて他のブロツクに入力するループを開
始する。出力ブロツクをクリアしすべて白の8×8ビツ
ト・ブロツクについては何ら処理が必要とされないよう
にする。つぎに入力ブロツクからのデータを回転させて
出力ブロツクに入力する。そしてBLKPTRを変更し、これ
によりつぎの繰り返し処理を行うために入力ブロツクを
出力ブロツクとし、また新たな入力ブロツクを得る。回
転させるべきブロツクがないならば、つぎのブロツクを
回転させるループを繰り返す。
第6図はラン・エンド・データをラスタ形態に変換
し、種々の出力ブロツクに分配する手順を示す。この手
順は180゜の回転で利用した変換手段と類似している。
ただし各ラインごとに出力ブロツクのすべて(第1出力
ブロツクをのぞく)を巡回する必要があるのでその分複
雑になつている。この手順では処理TESTRENDを用いてど
の時点で出力データについて新しいブロツクを得るかを
決定する。このTESTREND処理では現行のラン・エンドRE
NDを現行ブロツクLCOLの最大ラン・エンドと比較する。
RENDがICOLよりも大であれば、変換させて出力中の画素
ライン(バイト)に対して後続のストレージ・ブロック
を割り当てる必要がある。この場合、処理手順WNまたは
BNは、現在、出力中の画素ラインが現行ストレージ・ブ
ロックの境界を交差する(すなわち境界を越えて延び
る)か否かを判定するのに使用される。WNまたはBNのど
ちらかを利用するかはテスト実用時に処理されているラ
ンの色が何らかによつて決定する。処理WNおよびBNから
の実現可能な復帰点は“1"、“2"、“3"および“4"とラ
ベル付けされる。
し、種々の出力ブロツクに分配する手順を示す。この手
順は180゜の回転で利用した変換手段と類似している。
ただし各ラインごとに出力ブロツクのすべて(第1出力
ブロツクをのぞく)を巡回する必要があるのでその分複
雑になつている。この手順では処理TESTRENDを用いてど
の時点で出力データについて新しいブロツクを得るかを
決定する。このTESTREND処理では現行のラン・エンドRE
NDを現行ブロツクLCOLの最大ラン・エンドと比較する。
RENDがICOLよりも大であれば、変換させて出力中の画素
ライン(バイト)に対して後続のストレージ・ブロック
を割り当てる必要がある。この場合、処理手順WNまたは
BNは、現在、出力中の画素ラインが現行ストレージ・ブ
ロックの境界を交差する(すなわち境界を越えて延び
る)か否かを判定するのに使用される。WNまたはBNのど
ちらかを利用するかはテスト実用時に処理されているラ
ンの色が何らかによつて決定する。処理WNおよびBNから
の実現可能な復帰点は“1"、“2"、“3"および“4"とラ
ベル付けされる。
ICOLをNLINESより小さな値にセツトし(ブロツクの出
力ラインあたり1ペルとする)、かつICOLを入力ライン
で利用可能なペル数より小さい値にセツトすることによ
りライン変換を開始する。LASTを初期化して中間バツフ
アの所望のオフセツトをポイントする。最初の白ラン・
エンドを読み出してRENDに入力し、さらにBITSにコピー
する。最初の白ラン中のビツト数が8より少ないなら
ば、CUMを先行白ビツトの所望の数にセツトする。そし
て制御を黒ランを変換する手順に移管する。ブロツク境
界を交差したかどうかをテストする必要はない。この交
差は出力バイトが完結されているときのみ起こるからで
ある(すなわちビツト・カウンタが8になつたとき)。
白ビツトが8以上であれば、CUMをゼロにセツトして白
ランがブロツク境界を越えて伸びているかどうかをテス
トする。ブロツク境界を超えていれば、制御をWN手順へ
移管する。そうでなければ、ラン中のゼロのバイトの数
を計数する。BITSをビツトの適宜な数だけ減分し、LAST
を白バイトごとにOCずつ増分する。CUMを先行白ビツト
の適宜な数にセツトし、処理を黒ラン変換コードに継続
させる。
力ラインあたり1ペルとする)、かつICOLを入力ライン
で利用可能なペル数より小さい値にセツトすることによ
りライン変換を開始する。LASTを初期化して中間バツフ
アの所望のオフセツトをポイントする。最初の白ラン・
エンドを読み出してRENDに入力し、さらにBITSにコピー
する。最初の白ラン中のビツト数が8より少ないなら
ば、CUMを先行白ビツトの所望の数にセツトする。そし
て制御を黒ランを変換する手順に移管する。ブロツク境
界を交差したかどうかをテストする必要はない。この交
差は出力バイトが完結されているときのみ起こるからで
ある(すなわちビツト・カウンタが8になつたとき)。
白ビツトが8以上であれば、CUMをゼロにセツトして白
ランがブロツク境界を越えて伸びているかどうかをテス
トする。ブロツク境界を超えていれば、制御をWN手順へ
移管する。そうでなければ、ラン中のゼロのバイトの数
を計数する。BITSをビツトの適宜な数だけ減分し、LAST
を白バイトごとにOCずつ増分する。CUMを先行白ビツト
の適宜な数にセツトし、処理を黒ラン変換コードに継続
させる。
ラン長をBITSに加えることにより黒ランの変換を開始
する。ラン長は黒ラン・エンドと前の白ラン・エンド
(これはRENDにストアされている)との間の差である。
黒ラン・エンドをRENDに読み出したのち、RPTRを増分し
てつぎの白黒ラン・エンド対をアドレスするようにす
る。つぎにビツト・カウンタをテストする。ビツト・カ
ウンタの値が8未満であれば、未決定ビツトを反転(白
に)して制御を白ラン・エンド変換コードに移管する。
BITSが8未満でなければ完結した出力バイトをストア
し、LASTを増分してつぎの出力バイト用のスペースをポ
イントする。さらにストアしたバイトの分だけビツト・
カウントを、減分し、つぎにRENDをテストする。出力中
の画素ラインが黒ラン・エンドに到達する前に現行スト
レージ・ブロック境界を交差すると判定されると、制御
をBNに移管する。そうでなければ、黒バイトをストアす
るループを開始し、LASTを増分し、ビツト・カウンタを
減分する。セツト・アツプすべきビツトが8未満になる
まで、これを続ける。こののちCUMをセツトして先行黒
ビツトの適宜な個数を有するようにし、白ランを変換す
るコードを開始する。
する。ラン長は黒ラン・エンドと前の白ラン・エンド
(これはRENDにストアされている)との間の差である。
黒ラン・エンドをRENDに読み出したのち、RPTRを増分し
てつぎの白黒ラン・エンド対をアドレスするようにす
る。つぎにビツト・カウンタをテストする。ビツト・カ
ウンタの値が8未満であれば、未決定ビツトを反転(白
に)して制御を白ラン・エンド変換コードに移管する。
BITSが8未満でなければ完結した出力バイトをストア
し、LASTを増分してつぎの出力バイト用のスペースをポ
イントする。さらにストアしたバイトの分だけビツト・
カウントを、減分し、つぎにRENDをテストする。出力中
の画素ラインが黒ラン・エンドに到達する前に現行スト
レージ・ブロック境界を交差すると判定されると、制御
をBNに移管する。そうでなければ、黒バイトをストアす
るループを開始し、LASTを増分し、ビツト・カウンタを
減分する。セツト・アツプすべきビツトが8未満になる
まで、これを続ける。こののちCUMをセツトして先行黒
ビツトの適宜な個数を有するようにし、白ランを変換す
るコードを開始する。
白ランを変換するには、ラン長をBITSに加える。BITS
が8未満であれば、未決定のCUM後縁ビツトを反転(黒
に)して制御を黒ラン変換コードに移管する。BITSが8
未満でなければ、ブロツク境界が交差されたかどうかの
テストが必要となる。交差していれば、制御をWNに移管
する。交差していなければ完結したバイトをストアし、
LASTを増分し、ストアしたバイトの分だけBITSを減分す
る。BITSが依然8未満であれば、制御を長い白ランを処
理するコードの部分に移管する。そうでなければCUMを
前縁白ビツトの適宜な数でセツトして処理をブラツク・
ランの変換処理に継続させる。
が8未満であれば、未決定のCUM後縁ビツトを反転(黒
に)して制御を黒ラン変換コードに移管する。BITSが8
未満でなければ、ブロツク境界が交差されたかどうかの
テストが必要となる。交差していれば、制御をWNに移管
する。交差していなければ完結したバイトをストアし、
LASTを増分し、ストアしたバイトの分だけBITSを減分す
る。BITSが依然8未満であれば、制御を長い白ランを処
理するコードの部分に移管する。そうでなければCUMを
前縁白ビツトの適宜な数でセツトして処理をブラツク・
ランの変換処理に継続させる。
第7図は白ランを処理しているときにブロツク境界を
交差した場合の手順WNを示す。完結した出力バイトを最
初にストアする。つぎに白ランが入力ラインの終端へと
伸びるかどうかをテストする。終端へと伸びれば、ライ
ンの変換を完了する。変換すべきランがさらに存在する
ならば、現行白ランが終了するブロツクを探索するルー
プを開始する。BLKPTRはつぎの入力ブロツク・アドレス
をアドレスし、BITSは前のブロツクの終端を超えて位置
する白いラン中のビツトの個数にセツトされる。LCOLは
ブロツク中で許容される入力ビツト列の数だけ増分され
る。RENDが依然LCOLよりも小さいならば、処理を繰り返
す。正しいブロツクが見つかるまでこれを続ける。つぎ
にLASTを初期化して適切なオフセツトのバイトをポイン
トしてブロツクに入力する。LCOLが入力ラインから利用
可能なペルの数より大きければ、LCOLをリセツトする。
ビツト・カウントが8未満であれば、CUMを前縁白ビツ
トの所望の個数にセツトする。そして黒ラン処理が開始
される位置において制御が主ループに移管される。ビツ
ト・カウントが8未満でなければ長い白ランを操作する
コードへ制御を移管する。
交差した場合の手順WNを示す。完結した出力バイトを最
初にストアする。つぎに白ランが入力ラインの終端へと
伸びるかどうかをテストする。終端へと伸びれば、ライ
ンの変換を完了する。変換すべきランがさらに存在する
ならば、現行白ランが終了するブロツクを探索するルー
プを開始する。BLKPTRはつぎの入力ブロツク・アドレス
をアドレスし、BITSは前のブロツクの終端を超えて位置
する白いラン中のビツトの個数にセツトされる。LCOLは
ブロツク中で許容される入力ビツト列の数だけ増分され
る。RENDが依然LCOLよりも小さいならば、処理を繰り返
す。正しいブロツクが見つかるまでこれを続ける。つぎ
にLASTを初期化して適切なオフセツトのバイトをポイン
トしてブロツクに入力する。LCOLが入力ラインから利用
可能なペルの数より大きければ、LCOLをリセツトする。
ビツト・カウントが8未満であれば、CUMを前縁白ビツ
トの所望の個数にセツトする。そして黒ラン処理が開始
される位置において制御が主ループに移管される。ビツ
ト・カウントが8未満でなければ長い白ランを操作する
コードへ制御を移管する。
第8図は、黒ラン処理中にブロツク境界を交差した場
合の手順BNを示す。ここでは正しい新ブロツクを探索す
ることに加え、飛び越された領域にX′FF′バイトを埋
め込む必要がある。現行ブロツクに埋め込むべきバイト
の数を得るは、現行ブロツクを越えるビツトの数(REND
−LCOL)からビツト・カウントを減算し、さらに8で除
算を行つてビツトからバイトへの変換を行えばよい(こ
の手順はバイト境界で始まり、またLCOLは8の倍数であ
るので、除算操作の剰余はつねにゼロであることを留意
されたい)。1回のループが1つの黒バイトを埋め込
み、LASTを増分し、バイト・カウントを減分する。スト
アすべきバイトがなくなるまでこれを続ける。つぎに入
力ラインの終端に到達したかどうかのテストを行う。到
達していればライン変換は終了である。到達していなけ
れば、つぎにブロックをアドレスし、LASTをセツトして
所望のオフセットでつぎのブロックにストアされるべき
出力バイトをポイントする。また再計算してビット・カ
ウンタを未ストアの黒ビットの数に等しくなるようにセ
ットする。さらに列限界LCOLをリセットする。RENDが依
然LCOLより小さくなければ、全手順を繰り返して適宜な
バイト数の黒ビットのすべてをさらにつぎにブロックに
ストアする。黒ランが終了するブロックが見つかると、
ビット・カウンタをテストしてゼロまたはノン・ゼロか
を調べる。BITSがノン・ゼロであれば、CUMを全黒ビッ
トでセットする。そしてラン・エンドが読み出されたの
に黒ラン処理の中の所定の位置に制御を移管する。BITS
がゼロであれば新しいブロックは白ランで開始され、CU
Mがゼロにセットされ、制御は白ラン変換コードに移管
される。
合の手順BNを示す。ここでは正しい新ブロツクを探索す
ることに加え、飛び越された領域にX′FF′バイトを埋
め込む必要がある。現行ブロツクに埋め込むべきバイト
の数を得るは、現行ブロツクを越えるビツトの数(REND
−LCOL)からビツト・カウントを減算し、さらに8で除
算を行つてビツトからバイトへの変換を行えばよい(こ
の手順はバイト境界で始まり、またLCOLは8の倍数であ
るので、除算操作の剰余はつねにゼロであることを留意
されたい)。1回のループが1つの黒バイトを埋め込
み、LASTを増分し、バイト・カウントを減分する。スト
アすべきバイトがなくなるまでこれを続ける。つぎに入
力ラインの終端に到達したかどうかのテストを行う。到
達していればライン変換は終了である。到達していなけ
れば、つぎにブロックをアドレスし、LASTをセツトして
所望のオフセットでつぎのブロックにストアされるべき
出力バイトをポイントする。また再計算してビット・カ
ウンタを未ストアの黒ビットの数に等しくなるようにセ
ットする。さらに列限界LCOLをリセットする。RENDが依
然LCOLより小さくなければ、全手順を繰り返して適宜な
バイト数の黒ビットのすべてをさらにつぎにブロックに
ストアする。黒ランが終了するブロックが見つかると、
ビット・カウンタをテストしてゼロまたはノン・ゼロか
を調べる。BITSがノン・ゼロであれば、CUMを全黒ビッ
トでセットする。そしてラン・エンドが読み出されたの
に黒ラン処理の中の所定の位置に制御を移管する。BITS
がゼロであれば新しいブロックは白ランで開始され、CU
Mがゼロにセットされ、制御は白ラン変換コードに移管
される。
第9図は、第4図中の右上側に水平条片で図示した中
間ストレージ・ブロック内の連続バイト・アドレス位置
に記憶されている中間ラスタ・データを画素サブブロッ
ク単位で回転させて第4図中の右下側に水平条片で図示
した出力ストレージ・ブロック(単に出力ブロックとも
呼ぶ)にストアさせるための手順を示す。本図に関する
説明中、入力ブロック、入力ポインタ、入力データなど
の用語の「入力」とは、第4図に関する説明中の「中
間」に対応することに留意されたい。先ず、出力ポイン
タOPTRおよび入力ポインタIPTRを、それぞれ、出力ブロ
ックおよび入力ブロック内のバイト・アドレス開始位置
であるオフセット「0」にセットする。今、出力画像の
1ライン当りのバイト数をNと仮定する。画素サブブロ
ック1を構成する8バイトが読み取られ、回転されてビ
ット再配列の回転された8バイトを構築して出力ブロッ
ク内のオフセット位置0、N、2N、3N、4N、5N、6Nおよ
び7Nにストアされる。これらの各オフセット位置は、バ
イト記憶位置行番0、1、2、3、4、5、6および7
の各行の最初のバイト位置に該当する(なお、各行の最
終バイトのオフセット位置は、各々、N−1、2N−1、
・・・6N−1、7N−1である)。IPTRが8だけ歩進され
て、次の画素サブブロック2の8バイトを読み取る。同
時に、OPTRが1だけ歩進され、前記行番の各行の次位の
(すなわち第2)バイト位置に相当するオフセット位置
1、N+1、2N+1,・・・7N+1に、画素サブブロック
2の回転した8バイトを順次にストアする。出力バイト
をストアすべきオフセット位置は、一般式OPTR+(OC×
K/8)で表わされる(ただし、K=0、1、2、・・・
・7)。その理由は、OCが出力ブロック中の1出力画素
ライン当りの総ビット数でありしたがってOC/8が1出力
画素ライン当りの総バイト数を表わすから、前記(OC/8
×K)がKにより決められた画素ラインのライン番号、
すなわち、バイト記憶行の行番、を表わすからである。
間ストレージ・ブロック内の連続バイト・アドレス位置
に記憶されている中間ラスタ・データを画素サブブロッ
ク単位で回転させて第4図中の右下側に水平条片で図示
した出力ストレージ・ブロック(単に出力ブロックとも
呼ぶ)にストアさせるための手順を示す。本図に関する
説明中、入力ブロック、入力ポインタ、入力データなど
の用語の「入力」とは、第4図に関する説明中の「中
間」に対応することに留意されたい。先ず、出力ポイン
タOPTRおよび入力ポインタIPTRを、それぞれ、出力ブロ
ックおよび入力ブロック内のバイト・アドレス開始位置
であるオフセット「0」にセットする。今、出力画像の
1ライン当りのバイト数をNと仮定する。画素サブブロ
ック1を構成する8バイトが読み取られ、回転されてビ
ット再配列の回転された8バイトを構築して出力ブロッ
ク内のオフセット位置0、N、2N、3N、4N、5N、6Nおよ
び7Nにストアされる。これらの各オフセット位置は、バ
イト記憶位置行番0、1、2、3、4、5、6および7
の各行の最初のバイト位置に該当する(なお、各行の最
終バイトのオフセット位置は、各々、N−1、2N−1、
・・・6N−1、7N−1である)。IPTRが8だけ歩進され
て、次の画素サブブロック2の8バイトを読み取る。同
時に、OPTRが1だけ歩進され、前記行番の各行の次位の
(すなわち第2)バイト位置に相当するオフセット位置
1、N+1、2N+1,・・・7N+1に、画素サブブロック
2の回転した8バイトを順次にストアする。出力バイト
をストアすべきオフセット位置は、一般式OPTR+(OC×
K/8)で表わされる(ただし、K=0、1、2、・・・
・7)。その理由は、OCが出力ブロック中の1出力画素
ライン当りの総ビット数でありしたがってOC/8が1出力
画素ライン当りの総バイト数を表わすから、前記(OC/8
×K)がKにより決められた画素ラインのライン番号、
すなわち、バイト記憶行の行番、を表わすからである。
このような処理プロセスは、第1ないし第NのN個の
画素サブブロックが完了されるまで続行される。この完
了時点において、OPTRが出力ブロックにおける1行分の
総バイト数だけ増計数している。実際には、N個の画素
サブブロックの処理完了により8行分の出力バイトがす
でにストアされているので、次の画素サブブロックN+
1の最初のバイトをストアすべき行位置をアドレスする
ためには、OPTRを、さらに、残りの7行分、すなわち
(OC×7/8)、スキップするように増計数させる必要が
ある。
画素サブブロックが完了されるまで続行される。この完
了時点において、OPTRが出力ブロックにおける1行分の
総バイト数だけ増計数している。実際には、N個の画素
サブブロックの処理完了により8行分の出力バイトがす
でにストアされているので、次の画素サブブロックN+
1の最初のバイトをストアすべき行位置をアドレスする
ためには、OPTRを、さらに、残りの7行分、すなわち
(OC×7/8)、スキップするように増計数させる必要が
ある。
前記IPTRにより8連続バイト位置から読み取られた8
バイトの画素サブブロックは、たとえば特願昭59−1927
55号明細書に記載されているのと類似のテーブル索引手
順を用いてその場所で回転される。このテーブル索引手
順にしたがって、画素サブブロックを構成する8個の各
バイトの第1ビット、第2ビット、・・・・第8ビット
から、各々、構築された回転後の第1バイト、第2バイ
ト、・・・・第8バイトが生成される。第1の限界LIM
は8×8ビツト・ブロツクの完結した行(掃引)がいつ
終了したかを表わす。第2の限界MAXをセツトして、回
転させられるべきブロツク中の入力データの終端をポイ
ントする。入力バツフア中に表わされている最後の8×
8ビツト・ブロツクの最初のバイトを保管してノン・ゼ
ロのバイトで置き換える。これにより、走査命令を利用
してデータの終端を越えることなく白バイトの長いフイ
ールドを検出できる。
バイトの画素サブブロックは、たとえば特願昭59−1927
55号明細書に記載されているのと類似のテーブル索引手
順を用いてその場所で回転される。このテーブル索引手
順にしたがって、画素サブブロックを構成する8個の各
バイトの第1ビット、第2ビット、・・・・第8ビット
から、各々、構築された回転後の第1バイト、第2バイ
ト、・・・・第8バイトが生成される。第1の限界LIM
は8×8ビツト・ブロツクの完結した行(掃引)がいつ
終了したかを表わす。第2の限界MAXをセツトして、回
転させられるべきブロツク中の入力データの終端をポイ
ントする。入力バツフア中に表わされている最後の8×
8ビツト・ブロツクの最初のバイトを保管してノン・ゼ
ロのバイトで置き換える。これにより、走査命令を利用
してデータの終端を越えることなく白バイトの長いフイ
ールドを検出できる。
回転操作の主ループを開始するには、つぎの8個の入
力バイトすべてがゼロかどうかをテストすればよい。す
べてゼロであれば、入力データを走査して白の8バイト
・ユニツトの個数を求める。入力ポインタを増分してノ
ン・ゼロのデータを含む最初のユニツトをポイントし、
さらに出力ポインタを飛び越したブロツク数だけ増分す
る。つぎにIPTRをテストして元の掃引の終端に達したか
どうかを調べる。入力ポインタがLIMを交差していれ
ば、内部ループを終了させて出力ポインタをリセツトで
きるようにする。そうでなければ制御を内部ループに復
帰させる。ここではIPTRによつてアドレスされた8バイ
ト・ユニツトを回転させる。この回転にはたとえば上述
米国特許出願第567214号に記載されているのと類似のテ
ーブル索引手順を用いる。得られたブロツクは出力バツ
フアにストアされる。こののち入力ポインタおよび出力
ポインタを増分してつぎの8×8ビツト入力ユニツト、
および出力ユニツトの最初のバイトが行くべきスペース
をアドレスする。入力ポインタをテストして掃引が終了
したかどうかを調べる。終了していなければループを繰
り返す。
力バイトすべてがゼロかどうかをテストすればよい。す
べてゼロであれば、入力データを走査して白の8バイト
・ユニツトの個数を求める。入力ポインタを増分してノ
ン・ゼロのデータを含む最初のユニツトをポイントし、
さらに出力ポインタを飛び越したブロツク数だけ増分す
る。つぎにIPTRをテストして元の掃引の終端に達したか
どうかを調べる。入力ポインタがLIMを交差していれ
ば、内部ループを終了させて出力ポインタをリセツトで
きるようにする。そうでなければ制御を内部ループに復
帰させる。ここではIPTRによつてアドレスされた8バイ
ト・ユニツトを回転させる。この回転にはたとえば上述
米国特許出願第567214号に記載されているのと類似のテ
ーブル索引手順を用いる。得られたブロツクは出力バツ
フアにストアされる。こののち入力ポインタおよび出力
ポインタを増分してつぎの8×8ビツト入力ユニツト、
および出力ユニツトの最初のバイトが行くべきスペース
をアドレスする。入力ポインタをテストして掃引が終了
したかどうかを調べる。終了していなければループを繰
り返す。
内部ループが終了すると、IPTRをMAXに比較してブロ
ツクの終端になつたかどうかを決定する。IPTRのほうが
MAXより小さければ最後の入力ユニツト中の保管バイト
を取り戻し、入力ポインタおよび出力ポインタを戻し、
最後の8×8ビツト・ユニツトを回転させて出力バツフ
アにストアする。これでブロツクの回転操作が終了す
る。
ツクの終端になつたかどうかを決定する。IPTRのほうが
MAXより小さければ最後の入力ユニツト中の保管バイト
を取り戻し、入力ポインタおよび出力ポインタを戻し、
最後の8×8ビツト・ユニツトを回転させて出力バツフ
アにストアする。これでブロツクの回転操作が終了す
る。
ブロツクの終端に到達していないならば、OPTRをOC*
7/8だけ増分してつぎの掃引の開始位置から適宜オフセ
ツトしている位置をアドレスする。IPTRが新たなLIMよ
り小さくなければ掃引はすべてゼロ・データからなり、
ループがつぎの掃引を繰り返す。正しい掃引が見つかる
と内部ループを再度開始してデータの回転を続ける。
7/8だけ増分してつぎの掃引の開始位置から適宜オフセ
ツトしている位置をアドレスする。IPTRが新たなLIMよ
り小さくなければ掃引はすべてゼロ・データからなり、
ループがつぎの掃引を繰り返す。正しい掃引が見つかる
と内部ループを再度開始してデータの回転を続ける。
反時計方向の回転の機構は詳細において時計方向のそ
れに対し相違点を有するけれども、概念上は異なるとこ
ろはない。変換ステツプにおいて、ブロツクを反対の順
序でアドレスし、OFFSETを第1入力ラインに対してゼロ
で開始させてIR−1まで計数させる。さらにLASTは一時
ブロツクの最後の掃引で始まり、ブロツクの開始位置へ
と戻つていく。回転ステツプの制御構造は不変である。
ただし8入力バイトからなるユニツト中のバイトは8×
8ビツト・ブロツクの上位から下位に進んでいく。時計
方向では下位から上位へと進んでいたのである。
れに対し相違点を有するけれども、概念上は異なるとこ
ろはない。変換ステツプにおいて、ブロツクを反対の順
序でアドレスし、OFFSETを第1入力ラインに対してゼロ
で開始させてIR−1まで計数させる。さらにLASTは一時
ブロツクの最後の掃引で始まり、ブロツクの開始位置へ
と戻つていく。回転ステツプの制御構造は不変である。
ただし8入力バイトからなるユニツト中のバイトは8×
8ビツト・ブロツクの上位から下位に進んでいく。時計
方向では下位から上位へと進んでいたのである。
F.発明の効果 以上説明したように、この発明によればラン表示形態
の画像データをラスタ形態の画像データに変換し、幾つ
かの中間バツフアへ分配し、すべての変換が完了した
後、90度の回転処理が始まる。第1中間バツフアからの
ラスタ表示データが回転後に第1利用可能バツフアにス
トアされる。第1中間バツフア内のデータは、もはや、
不必要になるので、この中間バツフアを第2利用可能バ
ツフアに転用できる。このように必要なバツフアの数が
削減される。
の画像データをラスタ形態の画像データに変換し、幾つ
かの中間バツフアへ分配し、すべての変換が完了した
後、90度の回転処理が始まる。第1中間バツフアからの
ラスタ表示データが回転後に第1利用可能バツフアにス
トアされる。第1中間バツフア内のデータは、もはや、
不必要になるので、この中間バツフアを第2利用可能バ
ツフアに転用できる。このように必要なバツフアの数が
削減される。
第1図および第2図は、180度回転を行う参考例を説明
するフローチャート、第3図は画像を時計方向に90゜回
転させる場合の原理を説明する図、第4図は第3図の90
゜の回転を行う際のブロツク配列を示す図、第5図は第
3図の90゜回転を行う制御の流れを示すフローチヤー
ト、第6図は第5図の制御の要部を示すフローチヤー
ト、第7図、第8図および第9図は第5図の制御の細部
を示すフローチヤートである。
するフローチャート、第3図は画像を時計方向に90゜回
転させる場合の原理を説明する図、第4図は第3図の90
゜の回転を行う際のブロツク配列を示す図、第5図は第
3図の90゜回転を行う制御の流れを示すフローチヤー
ト、第6図は第5図の制御の要部を示すフローチヤー
ト、第7図、第8図および第9図は第5図の制御の細部
を示すフローチヤートである。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭58−207170(JP,A) 特開 昭58−159184(JP,A) 特開 昭57−89171(JP,A) 特開 昭60−16767(JP,A)
Claims (3)
- 【請求項1】画像全体を表示するための複数行の画像ラ
イン・データの各行をラン表示データとしてストアして
いるラン・データ・バッファの複数個および、それぞ
れ、ブロック・アドレシングの可能な所定のバイト幅を
垂直条片状の複数個のストレージ・ブロックを準備する
ステップ、 第1行の画像ライン・データに対応するラン表示データ
を第1のラン・データ・バッファから順次に読み取って
第1行のラスタ・ライン表示データに伸張変換し、これ
らの各変換データを、前記複数個のうちの最初(すなわ
ち第1)のストレージ・ブロック内の所定のバイト記憶
位置から最終のストレージ・ブロック内の最終バイド記
憶位置に向けて順次に割り振って前記複数個のストレー
ジ・ブロックに跨って前記第1行のラスタ・ライン表示
データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降の
ラン・データ・バッファにストアされているラン表示デ
ータに関して前記伸張変換、割り振り、ストアのステッ
プを各行毎に順々に繰り返し、その際、画像の回転方向
に依存して、次行のラスタ・ライン表示データ行を前行
のラスタ・ライン表示データ行の下方または上方の隣接
位置に配置して画像全体に対するラスタ・ライン表示デ
ータを前記複数個のストレージ・ブロック全体に跨がっ
て行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロッ
ク内に行列状にストアされている垂直条片状の第1のラ
スタ・データ・ブロックの隅位置からn行n列の第1の
画素サブブロックを読み取り、その画素サブブロックに
おける各行のnビット配列を対応する各列のnビット配
列に配列換えするための画素サブブロックの回転を遂行
し、この第1の回転済み画素サブブロックを水平条片状
の第1の出力ストレージ・ブロック内の隅位置にストア
するステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順次
に隣接している第2以降の画素サブブロックに関して、
前記読み取り、回転、ストアのステップを繰り返し、そ
の際、第2以降の回転済の画素サブブロックを前記第1
の回転済の画素サブブロックに順次に水平方向に隣接し
てストアすることにより最初のn列の全ラスタ・データ
を回転して前記第1出力ストレージ・ブロック内に最初
のn行としてストアし、次に、前記第1ラスタ・データ
・ブロックの第2以降のn列に関して、前記読み取り、
回転、ストアのステップを繰り返すことにより第2以降
のn列の全ラスタ・データを回転して前記第1出力スト
レージ・ブロック内に第2以降のn行としてストアする
ステップ、 前記第1のストレージ・ブロックに行方向に後続する第
2以降の各ストレージ・ブロック内に行列状にストアさ
れている第2以降の各ラスタ・データ・ブロックに関し
て、および第2以降の各出力ストレージ・ブロックに関
して、前記読み取り、回転、ストアのステップを繰り返
すステップ、 とより成り、画素を表わすラン表示データを複数個のス
トレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。 - 【請求項2】画像全体を表示するための複数行の画像ラ
イン・データの各行をラン表示データとしてストアして
いるラン・データ・バッファの複数個および、それぞ
れ、ブロック・アドレシングの可能な所定バイト幅の垂
直条片状の複数個のストレージ・ブロックを準備するス
テップ、 第1行の画像ライン・データに対応するラン表示データ
を第1のラン・データ・バッファから順次に読み取って
第1行のラスタ・ライン表示データに伸張変換し、これ
らの各変換データを、前記複数個のうちの最初(すなわ
ち第1)のストレージ・ブロック内の所定のバイト記憶
位置から最終のストレージ・ブロック内の最終バイト記
憶位置に向けて順次に割り振り、その際、現在伸張変換
中のラン・ライン上の現行ラン・エンドおよび現行スト
レージ・ブロックにストアされるべき最終ビット位置に
依存して、変換データの振り分け先を現行ストレージ・
ブロックから次のストレージ・ブロックへ切り換え、前
記複数個のストレージ・ブロックに跨って前記第1行の
ラスタ・ライン表示データをストアするステップ、 第2行以降の画像ライン・データに対応して第2以降の
ラン・データ・バッファにストアされているラン表示デ
ータに関して前記伸張変換、割り振り、ストアのステッ
プを各行毎に順々に繰り返し、その際、画像の回転方向
に依存して、次行のラスタ・ライン表示データ行を前行
のラスタ・ライン表示データ行の下方または上方の隣接
位置に配置して画像全体に対するラスタ・ライン表示デ
ータを前記複数個のストレージ・ブロック全体に跨がっ
て行列状に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロッ
ク内に行列状にストアされている垂直条片状の第1のラ
スタ・データ・ブロックの隅位置からn行n列の第1の
画素サブブロックを読み取り、その画素サブブロックに
おける各行のnビット配列を対応する各列のnビット配
列に配列換えするための画素サブブロックの回転を遂行
し、この第1の回転済み画素サブブロックを水平条片状
の第1の出力ストレージ・ブロック内の隅位置にストア
するステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順次
に隣接している第2以降の画素サブブロックに関して、
前記読み取り、回転、ストアのステップを繰り返し、そ
の際、第2以降の回転済の画素サブブロックを前記第1
の回転済の画素サブブロックに順次に水平方向に隣接し
てストアすることにより最初のn列の全ラスタ・データ
を回転して前記第1出力ストレージ・ブロック内に最初
のn行としてストアし、次に、前記第1ラスタ・データ
・ブロックの第2以降のn列に関して、前記読み取り、
回転、ストアのステップを繰り返すことにより第2以降
のn列の全ラスタ・データを回転して前記第1出力スト
レージ・ブロック内に第2以降のn行としてストアする
ステップ、 前記第1のストレージ・ブロックに行方向に後続する第
2以降の各ストレージ・ブロック内に行列状にストアさ
れている第2以降の各ラスタ・データ・ブロックに関し
て、および第2以降の各出力ストレージ・ブロックに関
して、前記読み取り、回転、ストアのステップを繰り返
すステップ、 とより成り、画素を表わすラン表示データを複数個のス
トレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法。 - 【請求項3】画像全体を表示するための複数行の画像ラ
イン・データの各行をラン表示データとしてストアして
いるラン・データ・バッファの複数個および、それぞ
れ、ブロック・アドレシングの可能な所定バイト幅の垂
直条片状の複数個のストレージ・ブロックを準備するス
テップ、 第1行の画像ライン・データに対応するラン表示データ
を第1のラン・データ・バッファから順次に読み取って
第1行のラスタ・ライン表示データに伸張変換し、これ
らの各変換データを、前記複数個のうちの最初(すなわ
ち第1)のストレージ・ブロック内の所定のバイト記憶
位置から最終のストレージ・ブロック内の最終バイト記
憶位置に向けて順次に割り振って前記複数個のストレー
ジ・ブロックに跨って前記第1行のラスタ・ライン表示
データをストアするステップ、 第2行以降の画素ライン・データに対応して第2以降の
ラン・データ・バッファにストアされているラン表示デ
ータに関して前記伸張変換、割り振り、ストアのステッ
プを各行毎に順々に繰り返し、その際、画像の回転方向
に依存して、次行のラスタ・ライン表示データ行を前行
のラスタ・ライン表示データ行の下方または上方の隣接
位置に配置して画像全体に対するラスタ・ライン表示デ
ータを前記複数個のストレージ・ブロック全体に跨がっ
て行列状態に構築するステップ、 前記第1のストレージ・ブロックを選択し、そのブロッ
ク内に行列状にストアされている垂直条片状の第1のラ
スタ・データ・ブロックの隅位置からn行n列の第1の
画素サブブロックを読み取り、その画素サブブロックに
おける各行のnビット配列を対応する各列のnビット配
列に配列換えするための画素サブブロックの回転を遂行
し、この第1の回転済み画素サブブロックを水平条片状
の第1の出力ストレージ・ブロック内の隅位置にストア
するステップ、 前記第1ラスタ・データ・ブロックの前記隅位置に順次
に隣接している第2以降の画素サブブロックに関して、
前記読み取り、回転、ストアのステップを繰り返し、そ
の際、第2以降の回転済の画素サブブロックを前記第1
の回転済の画素サブブロックに順次に水平方向に隣接し
てストアすることにより最初のn列の全ラスタ・データ
を回転して前記第1出力ストレージ・ブロック内に最初
のn行としてストアし、次に、前記第1ラスタ・データ
・ブロックの第2以降のn列に関して、前記読み取り、
回転、ストアのステップを繰り返すことにより第2以降
のn列の全ラスタ・データを回転して前記第1出力スト
レージ・ブロック内に第2以降のn行としてストアする
ステップ、 前記第1のストレージ・ブロックに行方向に後続する第
2以降の各ストレージ・ブロックに行列状にストアされ
ている第2以降の各ラスタ・データ・ブロックに関し
て、および第2以降の各出力ストレージ・ブロックに関
して、前記読み取り、回転、ストアのステップを繰り返
すステップ、 とより成り、画素を表わすラン表示データを複数個のス
トレージ・ブロックに跨がるラスタ表示データに変換
し、次に90度回転したラスタ表示データを形成する画像
回転方法であって、 各画素サブブロックを前記ストレージ・ブロックから読
み取り回転して前記第1出力ストレージ・ブロックにス
トアする前記ステップは、 各画素サブブロックを8x8ビット単位で読み取り、回転
に先立って、8バイト直列の画素ストリングの形で中間
ストレージ・ブロックにストアするステップ、 前記中間ストレージ・ブロックからのデータの読み取り
バイト位置および前記第1出力ストレージ・ブロックへ
のデータの書き込みバイト位置を指定する入力ポインタ
および出力ポインタにより前記中間および第1出力の各
ストレージ・ブロックの所定位置をポイントさせるステ
ップ、 前記入力ポインタで指定されたバイト位置から始まり順
次に読み取られた8個のバイトに関して画素ビットの配
列換えを実行して回転済み画素サブブロックを構築し、
その際、前記出力ポインタで指定された位置から始まる
Nバイトの間隔で、前記回転済み画素サブブロックの8
バイトを順次にストアするステップ(ただし、Nは出力
画像の1ライン当りのバイト数)、 前記回転済み画素サブブロックの各構築毎に前記入力ポ
インタおよび出力ポインタを各々、8および1だけイン
クレメントするステップ、 を含む画像回転方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/686,788 US4658430A (en) | 1984-12-27 | 1984-12-27 | System for rotating binary images |
US686788 | 1984-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS61156483A JPS61156483A (ja) | 1986-07-16 |
JP2569307B2 true JP2569307B2 (ja) | 1997-01-08 |
Family
ID=24757761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP60263960A Expired - Fee Related JP2569307B2 (ja) | 1984-12-27 | 1985-11-26 | 画像回転方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US4658430A (ja) |
EP (1) | EP0188678B1 (ja) |
JP (1) | JP2569307B2 (ja) |
CA (1) | CA1238726A (ja) |
DE (1) | DE3587107T2 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6172327A (ja) * | 1984-09-17 | 1986-04-14 | Casio Comput Co Ltd | 画像メモリのアドレス分配方式 |
DE3650764T2 (de) * | 1985-12-13 | 2002-07-11 | Canon K.K., Tokio/Tokyo | Bildverarbeitungsgerät |
JPS62135257U (ja) * | 1986-02-19 | 1987-08-26 | ||
US4805117A (en) * | 1986-09-26 | 1989-02-14 | International Business Machines Corporation | Method for controlling concatenation of transformation matrices in a graphics display system |
US4893257A (en) * | 1986-11-10 | 1990-01-09 | International Business Machines Corporation | Multidirectional scan and print capability |
US4841453A (en) * | 1986-11-10 | 1989-06-20 | Ibm Corporation | Multidirectional scan and print capability |
US4783834A (en) * | 1987-02-20 | 1988-11-08 | International Business Machines Corporation | System for creating transposed image data from a run end or run length representation of an image |
US4896275A (en) * | 1987-07-10 | 1990-01-23 | Bull Hn Information Systems Inc. | Full page graphics image display data reduction |
JP2670273B2 (ja) * | 1987-09-30 | 1997-10-29 | 株式会社東芝 | 画像処理装置 |
FR2634297A1 (fr) * | 1988-07-12 | 1990-01-19 | Trt Telecom Radio Electr | Dispositif pour determiner des objets contrastes dans une image |
JPH05502318A (ja) * | 1990-08-20 | 1993-04-22 | イーストマン コダック カンパニー | オフセット型dmaシステム |
US5239388A (en) * | 1990-12-14 | 1993-08-24 | Fuji Xerox Co., Ltd. | Image processing system |
US5365601A (en) * | 1991-12-23 | 1994-11-15 | Xerox Corporation | N-bit wide parallel rotation algorithm |
US5594817A (en) * | 1992-10-19 | 1997-01-14 | Fast; Bruce B. | OCR image pre-processor for detecting and reducing skew of the image of textual matter of a scanned document |
US5450604A (en) * | 1992-12-18 | 1995-09-12 | Xerox Corporation | Data rotation using parallel to serial units that receive data from memory units and rotation buffer that provides rotated data to memory units |
NL9300981A (nl) * | 1993-06-08 | 1995-01-02 | Oce Nederland Bv | Beeldvormingswerkwijze en beeldregistratie-inrichting voor het uitvoeren van deze werkwijze. |
KR970703568A (ko) * | 1995-04-07 | 1997-07-03 | 이시마루 미키오 | 영상 회전방법 및 장치(method and apparatus for image potation) |
US5991450A (en) * | 1995-09-06 | 1999-11-23 | Canon Kabushiki Kaisha | Image encoding and decoding apparatus |
US5946222A (en) * | 1996-12-20 | 1999-08-31 | Oak Technology, Inc. | Method and apparatus for performing a masked byte addition operation |
US5870581A (en) * | 1996-12-20 | 1999-02-09 | Oak Technology, Inc. | Method and apparatus for performing concurrent write operations to a single-write-input register file and an accumulator register |
US6223181B1 (en) | 1997-07-31 | 2001-04-24 | Oak Technology, Inc. | Memory conserving and compression technique-compatible image rotation system |
US5986672A (en) * | 1997-10-14 | 1999-11-16 | Minnesota, Mining And Manufacturing 3M Center | Method and system for forming a rotated image on an imaging element using limited system resources |
US6298166B1 (en) * | 1998-03-30 | 2001-10-02 | Seiko Epson Corporation | Image transformations in the compressed domain |
US7146053B1 (en) | 2000-05-10 | 2006-12-05 | International Business Machines Corporation | Reordering of compressed data |
US6941019B1 (en) | 2000-05-10 | 2005-09-06 | International Business Machines Corporation | Reentry into compressed data |
JP3614358B2 (ja) * | 2000-09-28 | 2005-01-26 | シャープ株式会社 | 画像符号化装置 |
JP4507189B2 (ja) * | 2004-02-18 | 2010-07-21 | 株式会社リコー | 画像処理方法、装置、プログラムおよび記録媒体 |
EP1638049A3 (en) * | 2004-08-26 | 2006-11-02 | Océ-Technologies B.V. | Method, apparatus and computer program product for processing image data stored on a memory for rendering an image on a device |
JP2006067577A (ja) * | 2004-08-26 | 2006-03-09 | Oce Technologies Bv | 装置で画像をレンダリングするために、メモリに記憶される画像データを処理する方法、機器、およびコンピュータプログラム製品 |
JP4219887B2 (ja) * | 2004-12-28 | 2009-02-04 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
US8036493B1 (en) * | 2006-03-27 | 2011-10-11 | Neustel Michael S | Method for correcting orientation of patent figures |
FR2932337A1 (fr) * | 2008-06-05 | 2009-12-11 | Sagem Comm | Procede de production d'un flux jpeg |
JP5186432B2 (ja) * | 2009-04-27 | 2013-04-17 | 京セラドキュメントソリューションズ株式会社 | 画像処理装置 |
CN101697116B (zh) * | 2009-10-27 | 2011-11-09 | 飞天诚信科技股份有限公司 | 数据变换方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4052699A (en) * | 1976-06-30 | 1977-10-04 | International Business Machines Corporation | High speed real time image transformation |
GB1547119A (en) * | 1977-12-09 | 1979-06-06 | Ibm | Image rotation apparatus |
JPS54120522A (en) * | 1978-03-10 | 1979-09-19 | Pacific Kogyo Kk | Code converter |
US4271476A (en) * | 1979-07-17 | 1981-06-02 | International Business Machines Corporation | Method and apparatus for rotating the scan format of digital images |
JPS5789171A (en) * | 1980-11-25 | 1982-06-03 | Mitsubishi Electric Corp | Picture processor |
JPS57191773A (en) * | 1981-05-21 | 1982-11-25 | Fujitsu Ltd | Image data rotating system |
JPS58159184A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | 画像回転装置 |
JPS58207170A (ja) * | 1982-05-28 | 1983-12-02 | Fujitsu Ltd | 画像処理システム |
JPS6016767A (ja) * | 1983-07-08 | 1985-01-28 | Matsushita Graphic Commun Syst Inc | 画像回転処理方式 |
JPS6073671A (ja) * | 1983-09-30 | 1985-04-25 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | パタ−ン処理装置 |
US4627020A (en) * | 1983-12-30 | 1986-12-02 | International Business Machines Corporation | Method for rotating a binary image |
-
1984
- 1984-12-27 US US06/686,788 patent/US4658430A/en not_active Expired - Lifetime
-
1985
- 1985-05-21 CA CA000481992A patent/CA1238726A/en not_active Expired
- 1985-11-05 EP EP85114054A patent/EP0188678B1/en not_active Expired - Lifetime
- 1985-11-05 DE DE8585114054T patent/DE3587107T2/de not_active Expired - Lifetime
- 1985-11-26 JP JP60263960A patent/JP2569307B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0188678B1 (en) | 1993-02-17 |
JPS61156483A (ja) | 1986-07-16 |
EP0188678A2 (en) | 1986-07-30 |
DE3587107T2 (de) | 1993-08-12 |
CA1238726A (en) | 1988-06-28 |
US4658430A (en) | 1987-04-14 |
EP0188678A3 (en) | 1989-03-08 |
DE3587107D1 (de) | 1993-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2569307B2 (ja) | 画像回転方法 | |
US4627020A (en) | Method for rotating a binary image | |
EP0279420B1 (en) | Method and apparatus for creating transposed image data from a run end or run length representation of an image | |
US4918541A (en) | Image processing method and apparatus | |
US4271476A (en) | Method and apparatus for rotating the scan format of digital images | |
US4703515A (en) | Image rotation | |
EP0433645A2 (en) | Method to rotate a bitmap image 90 degrees | |
EP0147701B1 (en) | Image rotation method | |
EP0177640B1 (en) | Image reduction method | |
US5007001A (en) | Method for reordering the pixel map of a digitized image | |
JPH06326997A (ja) | 再編成変換装置、ブロックベース画像圧縮装置、画像復号装置及び画素変換方法 | |
JPS646469B2 (ja) | ||
JP4610450B2 (ja) | 固定長圧縮画像と属性情報のパッキングデータを処理する画像処理装置 | |
US7460718B2 (en) | Conversion device for performing a raster scan conversion between a JPEG decoder and an image memory | |
JP2000322566A (ja) | 画像表示装置及びその制御方法 | |
JP2744229B2 (ja) | 画像処理装置 | |
JP3278149B2 (ja) | 画像処理装置 | |
JPH02179072A (ja) | 二値画像データの圧縮方法 | |
JP2744231B2 (ja) | 画像処理装置 | |
JP2945553B2 (ja) | 画像データの高速復元方法 | |
JP3082930B2 (ja) | 画像処理装置 | |
JPH08274947A (ja) | 画像回転方法および画像回転装置 | |
JP2800250B2 (ja) | データ圧縮法 | |
JP2000231631A (ja) | 画像回転装置 | |
JPS6188375A (ja) | 画像デ−タ変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |