(57)【特許請求の範囲】
【請求項１】
メモリ上の処理対象画像を転送元アドレスで指定される８ｘ８画素の画像データ単位で切り出し、その８ｘ８画素の画像データを回転して前記メモリ上の転送先アドレスで指定される位置に書き込む画像処理方法において、
前記８ｘ８画素の回転前の画像データを６４ビット幅以上の第１のレジスタに転送し、
前記第１のレジスタに転送された前記回転前の画像データを並べた６４ビットのデータ列と６４ビット幅以上の第２のレジスタに前記回転後の画像データを並べた６４ビットのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記第１のレジスタ内の前記回転前の画像データから同時に抽出して、その抽出した各画素データを当該画素データが格納されている前記第１のレジスタ内のビット位置と同じ前記第２のレジスタ内のビット位置に書き込み、
前記回転前の画像データをシフトし、当該シフト後の回転前の画像データのデータ列と前記回転後の画像データのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記シフト後の回転前の画像データから同時に抽出する処理およびその抽出された各画素データを当該各画素データのシフト後のビット位置と同じ前記第２のレジスタ内のビット位置に書き込む処理を、前記回転前の画像データ内の全画素データが前記第２のレジスタに書き込まれるまで前記回転前の画像データをシフトしながら繰り返し実行し、
前記第２のレジスタに書き込まれた画像データを前記メモリ上の転送先アドレスで指定される位置に書き込むことを特徴とする画像処理方法。
【請求項２】
メモリ上の処理対象画像を転送元アドレスで指定される８ｘ８画素の画像データ単位で切り出し、その８ｘ８画素の画像データを回転して前記メモリ上の転送先アドレスで指定される位置に書き込む画像処理システムにおいて、
前記８ｘ８画素の回転前の画像データを６４ビット幅以上の第１のレジスタに転送する手段と、
前記第１のレジスタに転送された前記回転前の画像データを並べた６４ビットのデータ列と６４ビット幅以上の第２のレジスタに前記回転後の画像データを並べた６４ビットのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記第１のレジスタ内の前記回転前の画像データから同時に抽出して、その抽出した各画素データを当該画素データが格納されている前記第１のレジスタ内のビット位置と同じ前記第２のレジスタ内のビット位置に書き込む手段と、
前記回転前の画像データをシフトし、当該シフト後の回転前の画像データのデータ列と前記回転後の画像データのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記シフト後の回転前の画像データから同時に抽出する処理およびその抽出された各画素データを当該各画素データのシフト後のビット位置と同じ前記第２のレジスタ内のビット位置に書き込む処理を、前記回転前の画像データ内の全画素データが前記第２のレジスタに書き込まれるまで前記回転前の画像データをシフトしながら繰り返し実行する手段と、
前記第２のレジスタに書き込まれた画像データを前記メモリ上の転送先アドレスで指定される位置に書き込む手段とを具備することを特徴とする画像処理システム。
【請求項３】
メモリ上の処理対象画像を転送元アドレスで指定される８ｘ８画素の画像データ単位で切り出し、その８ｘ８画素の画像データを回転して前記メモリ上の転送先アドレスで指定される位置に書き込む画像処理をコンピュータに実行させるプログラムが格納されたコンピュータ読み取り可能な記憶媒体であって、
前記プログラムは、
前記８ｘ８画素の回転前の画像データを６４ビット幅以上の第１のレジスタに転送する手順と、
前記第１のレジスタに転送された前記回転前の画像データを並べた６４ビットのデータ列と６４ビット幅以上の第２のレジスタに前記回転後の画像データを並べた６４ビットのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記第１のレジスタ内の前記回転前の画像データから同時に抽出して、その抽出した各画素データを当該画素データが格納されている前記第１のレジスタ内のビット位置と同じ前記第２のレジスタ内のビット位置に書き込む手順と、
前記回転前の画像データをシフトし、当該シフト後の回転前の画像データのデータ列と前記回転後の画像データのデータ列との間のデータ配列の一致点に対応する複数の各画素データを前記シフト後の回転前の画像データから同時に抽出する処理およびその抽出された各画素データを当該各画素データのシフト後のビット位置と同じ前記第２のレジスタ内のビット位置に書き込む処理を、前記回転前の画像データ内の全画素データが前記第２のレジスタに書き込まれるまで前記回転前の画像データをシフトしながら繰り返し実行する手順と、
前記第２のレジスタに書き込まれた画像データを前記メモリ上の転送先アドレスで指定される位置に書き込む手順とをコンピュータに実行させることを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理方法および同方法が適用される画像処理システム並びに記録媒体に関し、特にコンピュータを用いて２値画像の回転などの処理を行う画像処理方法および同方法が適用される画像処理システム並びに記録媒体に関する。
【０００２】
【従来の技術】
近年、ペーパーレスの推進や、コンピュータを用いた画像処理技術の発展に伴い、文字のみならず、文字と図面などの画像とが混在した文書データの管理・運用が進められており、企業間や官公庁との間で受け渡される文書についても、文字と画像を含む文書データの流通が開始されている。
【０００３】
この場合、図面データのサイズは文書の書式に合わせて規定されることが多く、例えば、文書書式としてＡ４縦長の用紙が用いられる場合には、図面データについてもそのＡ４縦長の用紙に収まるようなサイズが求められる。一方、図面データの向きについては特に定められておらず、Ａ４用紙を横および縦のどちらの向きに配することも可能である。このため、流通文書の中には、文書の書式として用いられる例えば縦長のＡ４用紙上に横書きで書かれた図面データと、縦書きで書かれた図面データとが混在している文書が多数存在する。
【０００４】
このような図面データをコンピュータの画面上に表示して参照する場合には、その図面データが横書きであるか横書きかであるかに応じてその画像の向きを９０度回転させることが必要となる。特に、同一文書に複数の図面データが挿入されている場合には、図面毎にその向きが異なることもあるので、画像の回転処理は比較的頻繁に行われる。したがって、画像の回転処理を高速に行うことが要求されている。
【０００５】
コンピュータを用いた従来の典型的な画像回転処理方法について以下説明する。
ここでは、図４に示されているように、横Ｗバイト、縦８Ｈラインのピクセルサイズを有する２値画像をソースデータとしてメモリから読み出し、これを９０度回転してデスティネーションデータとしてメモリに格納する場合を想定する。
【０００６】
この場合のアルゴリズムの全体の流れは次の通りである。
0004068199.tif 000002
このアルゴリズムは、ソースデータを左上から右上に向けて走査しながら８ドットｘ８ドットのデータ単位でそのソースデータの読み出しおよび回転処理を順次行い、その回転結果をデスティネーションデータの左下から左上に向けて順次書き込んでいくという処理を、ソースデータの縦方向サイズ分だけ繰り返し行うというものである。
【０００７】
ここで、「ＣＰＵレジスタ内での回転処理」の部分の詳細を以下に示す。
ＣＰＵレジスタ（バイト）ｒ０、ｒ２、ｒ３、ｒ４、ｒ５、ｒ６、ｒ７にそれぞれ、
アドレスsource_addressのデータ(a0,a1,a2,a3,a4,a5,a6,a7),
source_address＋Ｗのデータ(b0,b1,b2,b3,b4,b5,b6,b7),
source_address＋２Ｗのデータ(c0,c1,c2,c3,c4,c5,c6,c7),
source_address＋３Ｗのデータ(d0,d1,d2,d3,d4,d5,d6,d7),
source_address＋４Ｗのデータ(e0,e1,e2,e3,e4,e5,e6,e7),
source_address＋５Ｗのデータ(f0,f1,f2,f3,f4,f5,f6,f7),
source_address＋６Ｗのデータ(g0,g1,g2,g3,g4,g5,g6,g7),
source_address＋７Ｗのデータ(h0,h1,h2,h3,h4,h5,h6,h7) が入っており、
そして、
アドレスdestination_address のデータ(a0,b0,c0,d0,e0,f0,g0,h0),
destination_address-H のデータ(a1,b1,c1,d1,e1,f1,g1,h1),
destination_address-2Hのデータ(a2,b2,c2,d2,e2,f2,g2,h2),
destination_address-3Hのデータ(a3,b3,c3,d3,e3,f3,g3,h3),
destination_address-4Hのデータ(a4,b4,c4,d4,e4,f4,g4,h4),
destination_address-5Hのデータ(a5,b5,c5,d5,e5,f5,g5,h5),
destination_address-6Hのデータ(a6,b6,c6,d6,e6,f6,g6,h6),
destination_address-7Hのデータの(a7,b7,c7,d7,e7,f7,g7,h7),
をそれぞれＣＰＵレジスタ（バイト）ｒ８、ｒ９、ｒ１０、ｒ１１、ｒ１２、ｒ１３、ｒ１４、ｒ１５に作成するとする。
【０００８】
この場合、８ドットｘ８ドットの６４ビットの画像データの回転は次のアルゴリズムによって行われる。
start
rotate left with carry   r0
rotate left with carry   r8
rotate left with carry   r1
rotate left with carry   r8
rotate left with carry   r2
rotate left with carry   r8
rotate left with carry   r3
rotate left with carry   r8
rotate left with carry   r4
rotate left with carry   r8
rotate left with carry   r5
rotate left with carry   r8
rotate left with carry   r6
rotate left with carry   r8
rotate left with carry   r7
rotate left with carry   r8
以下同様にｒ９からｒ１５にデータを転送
ｅｎｄ
ここで「ｒｏｔａｔｅ  ｌｅｆｔ  ｗｉｔｈ  ｃａｒｒｙ」の処理を図６に示す。
【０００９】
「ｒｏｔａｔｅ  ｌｅｆｔ  ｗｉｔｈ  ｃａｒｒｙ」の処理では、転送元のレジスタのデータ（ａ０，ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ａ７）が１ビットシフトされ、その先頭の１ビットが転送先のレジスタのＬＳＢ側から入力される。
【００１０】
したがって、上記の回転アルゴリズムでは、２ステップを１組としてソースからデスティネーションへのデータ転送が１ビット単位で行われる。
すなわち、デスティネーションデータの左下から右下に向かって８ビットまでのデータを格納するために用いられるレジスタ（r8）の内容は、次のように変化する。
【００１１】
(1)  rotate left with carry   r0
(2)  rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r0）の先頭の１ビットデータ（ａ０）が設定される。
【００１２】
(3)  rotate left with carry   r1
(4)  rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r1）の先頭の１ビットデータ（ｂ０）が追加設定される。
【００１３】
(5)  rotate left with carry   r2
(6)  rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r2）の先頭の１ビットデータ（ｃ０）が追加設定される。
【００１４】
(7)  rotate left with carry   r3
(8)  rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r3）の先頭の１ビットデータ（ｄ０）が追加設定される。
【００１５】
(9)  rotate left with carry   r4
(10) rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r4）の先頭の１ビットデータ（ｅ０）が追加設定される。
【００１６】
(11) rotate left with carry   r5
(12) rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r5）の先頭の１ビットデータ（ｆ０）が追加設定される。
【００１７】
(13) rotate left with carry   r6
(14) rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r6）の先頭の１ビットデータ（ｇ０）が追加設定される。
【００１８】
(15) rotate left with carry   r7
(16) rotate left with carry   r8
によって、レジスタ（r8）にレジスタ（r7）の先頭の１ビットデータ（ｈ０）が追加設定される。
【００１９】
これにより、レジスタ（r8）の内容はa0,b0,c0,d0,e0,f0,g0,h0 となる。
以下同様にして、レジスタ（r ９）から（r １５）についても同様の処理が行われる。したがって、８ビットのデータ毎に１６ステップの処理が必要となるので、８ｘ８ドットの画像の回転に１２８ステップ（＝１６ｘ８）要することになる。
【００２０】
【発明が解決しようとする課題】
上述したように、従来の画像回転処理では１ビットずつの処理となっているため、８ｘ８ドットの画像の回転に１２８ステップもの演算が必要となり、画像の回転に多くの時間が必要とされるという問題があった。
【００２１】
本発明はこのような点に鑑みてなされたものであり、回転などの画像変換処理の処理前と処理後のデータ間には画素が一致する点が何点かあることに着眼し、１ビットずつの処理ではなく何ビットかを同時に処理できるようにし、回転などの画像処理を高速に行うことができる画像処理方法および同方法が適用される画像処理システム並びに記録媒体を提供することを目的とする。
【００２２】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、処理対象画像をｍｘｎ画素の画像データ単位で処理して前記処理対象画像の変換画像を生成する画像処理方法において、処理前の画像データと処理後の画像データとの間のデータ配列の一致点に基づいて、前記処理前のｍｘｎ画素の画像データのデータ列中から前記一致点に対応する画素データを抽出し、前記処理前の画像データのデータ列をシフトさせながら、前記抽出処理を繰り返し実行することを特徴とする。
【００２３】
この画像処理方法によれば、例えば回転や鏡像などの処理を行う場合には、処理前の画像データと処理後の画像データとの間のデータ配列の一致点に基づいて予め準備されたマスクデータなどを用いることにより、処理前のｍｘｎ画素の画像データのデータ列中から一致点に対応する画素データが何画素か単位で同時に抽出される。このように、処理前と処理後の画像データ間の変換規則を利用して処理前データから各一致点に対応する画素データを同時に抽出する処理を行うことにより、１ビットずつの処理ではなく、何ビットか単位で同時に画像処理のための演算を行うことが可能となり、回転などの画像処理を高速に行うことが可能となる。
【００２４】
特に、マスクデータを用いた抽出処理は、ｍｘｎビット幅以上のレジスタを用いた演算処理を用いて行うことが好ましい。これにより、より多くの一致点について同時に処理を行うことが可能となる。
【００２５】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１には、本発明の一実施形態に係る画像処理システムのシステム構成が示されている。この画像処理システムは、画像処理プログラムが実装されたパーソナルコンピュータやワークステーションなどのコンピュータによって実現されるものであり、ＣＰＵ１１、主メモリ１２、表示コントローラ１３、画像メモリ（ＶＲＡＭ）１４、ディスプレイモニタ１５、およびハードディスクなどのファイル記憶装置１６から構成される。
【００２６】
ＣＰＵ１１は、主メモリ１２にロードされた画像処理プログラムを実行することにより、文字および画面などの画像が混在した文書データをファイル記憶装置１６から読み出し、それを表示コントローラ１３を用いてディスプレイモニタ１５上に表示する。画像処理プログラムには、画面表示された画像に対して回転、鏡像変換などの変換処理を施すための各種編集ツールが用意されており、その画像変換のための演算処理はＣＰＵ１１による６４ビット演算によって実行される。
【００２７】
画像の回転処理の基本手順は、主メモリ１２上の処理対象画像を転送元アドレスで指定される８ｘ８画素のブロック単位で切り出し、その８ｘ８画素の画像データを回転させた後に、それを主メモリ１２上の転送先アドレスで指定される位置に書き込むことによって行われる。この場合、ＣＰＵ１１によって行われる８ｘ８ドットの画像データの回転処理は、回転前データと回転後データのデータ配列の一致点を有効利用することによって、次のように行われる。
【００２８】
すなわち、まず、回転前と回転後の画像データとの間のデータ配列の一致点に基づいて回転前データから各一致点に対応する画素データを抽出するためのマスクデータが準備される（ステップＳ１０１）。
【００２９】
次いで、回転前データとマスクデータとの演算処理により、回転前データから各一致点に対応する画素データが回転後データとして抽出される（ステップＳ１０２）。次いで、回転前データをシフトさせながら、回転前データから画素データを抽出する処理（ステップＳ１０３）およびその抽出結果に基づく回転後データのデータ更新（ステップＳ１０４）が繰り返し実行される。
【００３０】
このように、回転前と回転後の画像データ間の変換規則を利用して回転前データから各一致点に対応する画素データを同時に抽出する処理を行うことにより、１ビットずつの処理ではなく、何ビットか単位で同時に画像処理のための演算を行うことが可能となり、回転処理を高速に行うことが可能となる。
【００３１】
次に、図２を参照して、本実施形態の画像回転処理の手順を具体的に説明する。
以下では、図４および図５で前述したように、横Ｗバイト、縦８Ｈラインのピクセルサイズを有する２値画像をソースデータとして主メモリ１２から読み出し、これを９０度左に回転してデスティネーションデータとして主メモリ１２に格納する場合を想定する。
【００３２】
この場合のアルゴリズムの全体の流れは次の通りである。
0004068199.tif 000003
このアルゴリズムは、ソースデータを左上から右上に向けて走査しながら８ドットｘ８ドットのデータ単位でそのソースデータの読み出しおよび回転処理を順次行い、その回転結果をデスティネーションデータの左下から左上に向けて順次書き込んでいくという処理を、ソースデータの縦方向サイズ分だけ繰り返し行うというものである。
【００３３】
ここで、「ＣＰＵレジスタ内での回転処理」の部分の詳細を以下に示す。
ＣＰＵ１１の６４ビットレジスタＲ０のビット６３−５６、５５−４８、４７−４０、３９−３２、３１−２４、２３−１６、１５−８、７−０にそれぞれ、
アドレスsource_addressのデータ(a0,a1,a2,a3,a4,a5,a6,a7),
source_address＋Ｗのデータ(b0,b1,b2,b3,b4,b5,b6,b7),
source_address＋２Ｗのデータ(c0,c1,c2,c3,c4,c5,c6,c7),
source_address＋３Ｗのデータ(d0,d1,d2,d3,d4,d5,d6,d7),
source_address＋４Ｗのデータ(e0,e1,e2,e3,e4,e5,e6,e7),
source_address＋５Ｗのデータ(f0,f1,f2,f3,f4,f5,f6,f7),
source_address＋６Ｗのデータ(g0,g1,g2,g3,g4,g5,g6,g7),
source_address＋７Ｗのデータ(h0,h1,h2,h3,h4,h5,h6,h7) が入っており、
そして、
アドレスdestination_address のデータ(a0,b0,c0,d0,e0,f0,g0,h0),
destination_address-H のデータ(a1,b1,c1,d1,e1,f1,g1,h1),
destination_address-2Hのデータ(a2,b2,c2,d2,e2,f2,g2,h2),
destination_address-3Hのデータ(a3,b3,c3,d3,e3,f3,g3,h3),
destination_address-4Hのデータ(a4,b4,c4,d4,e4,f4,g4,h4),
destination_address-5Hのデータ(a5,b5,c5,d5,e5,f5,g5,h5),
destination_address-6Hのデータ(a6,b6,c6,d6,e6,f6,g6,h6),
destination_address-7Hのデータの(a7,b7,c7,d7,e7,f7,g7,h7),
を、それぞれＣＰＵ１１の６４ビットレジスタＲ１のビット６３−５６、５５−４８、４７−４０、３９−３２、３１−２４、２３−１６、１５−８、７−０に作成するとする。
【００３４】
この場合、回転前後のビット配置は図２の様になる。このときビット配置を見ると移動していないビット（ａ０、ｂ１、ｃ２、ｄ３、ｅ４、ｆ５、ｇ６、ｈ７）が存在する。また、図３の様に元データ（ｓｏｕｒｃｅ）を７ビット右シフトすると、同様にビット配置の一致するビット（ａ１、ｂ２、ｃ３、ｄ４、ｅ５、ｆ６、ｇ７）が存在する。本実施形態では、このような一致点を利用して一度に何点かが同時に処理される。
【００３５】
作業用のＣＰＵレジスタ（６４ビット）をＲ２とすると、８ドットｘ８ドットの６４ビットの画像データの回転は次のアルゴリズムによって行われる。
start
(1) R0をR1にコピー
(2) R1 AND  マスクデータ8040201008040201(h) をR1に格納
(3) R0をR2にコピー
(4) R2を７ビット右シフト
(5) R2 AND  マスクデータ0080402010080402(h) をR2に格納
(6) R1 OR R2をR1に格納
(7) R0をR2にコピー
(8) R2を１４ビット右シフト
(9) R2 AND  マスクデータ0000804020100804(h) をR2に格納
(10) R1 OR R2 をR1に格納
(11) R0 をR2にコピー
(12) R2 を２１ビット右シフト
(13) R2 AND マスクデータ0000008040201008(h) をR2に格納
(14) R1 OR R2 をR1に格納
(15) R0 をR2にコピー
(16) R2 を２８ビット右シフト
(17) R2 AND マスクデータ0000000080402010(h) をR2に格納
(18) R1 OR R2 をR1に格納
(19) R0 をR2にコピー
(20) R2 を３５ビット右シフト
(21) R2 AND マスクデータ0000000000804020(h) をR2に格納
(22) R1 OR R2 をR1に格納
(23) R0 をR2にコピー
(24) R2 を４２ビット右シフト
(25) R2 AND マスクデータ0000000000008040(h) をR2に格納
(26) R1 OR R2 をR1に格納
(27) R0 をR2にコピー
(28) R2 を４９ビット右シフト
(29) R2 AND マスクデータ0000000000000080(h) をR2に格納
(30) R1 OR R2 をR1に格納
(31) R0 をR2にコピー
(32) R2 を４９ビット左シフト
(33) R2 AND マスクデータ0100000000000000(h) をR2に格納
(34) R1 OR R2 をR1に格納
(35) R0 をR2にコピー
(36) R2 を４２ビット左シフト
(37) R2 AND マスクデータ0201000000000000(h) をR2に格納
(38) R1 OR R2 をR1に格納
(39) R0 をR2にコピー
(40) R2 を３５ビット左シフト
(41) R2 AND マスクデータ0402010000000000(h) をR2に格納
(42) R1 OR R2 をR1に格納
(43) R0 をR2にコピー
(44) R2 を２８ビット左シフト
(45) R2 AND マスクデータ0804020100000000(h) をR2に格納
(46) R1 OR R2 をR1に格納
(47) R0 をR2にコピー
(48) R2 を２１ビット左シフト
(49) R2 AND マスクデータ1008040201000000(h) をR2に格納
(50) R1 OR R2 をR1に格納
(51) R0 をR2にコピー
(52) R2 を１４ビット左シフト
(53) R2 AND マスクデータ2010080402010000(h) をR2に格納
(54) R1 OR R2 をR1に格納
(55) R0 を７ビット左シフト
(56) R0 AND マスクデータ4020100804020100(h) をR0に格納
(57) R1 OR R0 をR1に格納
ｅｎｄ
以上の処理においては、
(1) R0をR1にコピー
(2) R1 AND  マスクデータ8040201008040201(h) をR1に格納
によって、２４ビットの回転前データの中から６４ビットのマスクデータ8040201008040201(h) のビット配列（1000 0000 0100 0000 0010 0000 0001 0000 0000  1000 0000 0100 0000 0010 0000 0001）の中のデータ１に対応するビット位置の画素データ、つまり８ビットのデータ（ａ０，ｂ１，ｃ２，ｄ３，ｅ４，ｆ５，ｇ６，ｈ７）が回転前データから抽出され、それが回転後データとしてレジスタＲ１に格納される。
【００３６】
同様にして、
(3) R0をR2にコピー
(4) R2を７ビット右シフト
(5) R2 AND  マスクデータ0080402010080402(h) をR2に格納
(6) R1 OR R2をR1に格納
においては、回転前データからａ１，ｂ２，ｃ３，ｄ４，ｅ５，ｆ６，ｇ７が抽出されて、レジスタＲ１のデータ更新が行われる。
【００３７】
(7) R0をR2にコピー
(8) R2を１４ビット右シフト
(9) R2 AND  マスクデータ0000804020100804(h) をR2に格納
(10) R1 OR R2 をR1に格納
においては、回転前データからａ２，ｂ３，ｃ４，ｄ５，ｅ６，ｆ７が抽出され、レジスタＲ１のデータ更新が行われる。
【００３８】
以下、同様にして、後続する４ステップ毎に以下のデータについての抽出およびその抽出データに基づくレジスタＲ１の更新が行われる。
ステップ(11)-(14);  ａ３，ｂ４，ｃ５，ｄ６，ｅ７
ステップ(15)-(18);  ａ４，ｂ５，ｃ６，ｄ７
ステップ(19)-(22);  ａ５，ｂ６，ｃ７
ステップ(23)-(26);  ａ６，ｂ７
ステップ(27)-(30);  ａ７
ステップ(31)-(34);  ｈ０
ステップ(35)-(38);  ｇ０，ｈ１
ステップ(39)-(42);  ｆ０，ｇ１，ｈ２
ステップ(43)-(46);  ｅ０，ｆ１，ｇ２，ｈ３
ステップ(47)-(50);  ｄ０，ｅ１，ｆ２，ｇ３，ｈ４
ステップ(51)-(54);  ｃ０，ｄ１，ｅ２，ｆ３，ｇ４，ｈ５
そして、最後の３ステップ(55)-(57) にて
ステップ(55)-(57);  ｂ０，ｃ１，ｄ２，ｅ３，ｆ４，ｇ５，ｈ６
の抽出が行われ、レジスタＲ１の内容は、
a0,b0,c0,d0,e0,f0,g0,h0,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4,b4,c4,d4,e4,f4,g4,h4,a5,b5,c5,d5,e5,f5,g5,h5,a6,b6,c6,d6,e6,f6,g6,h6,a7,b7,c7,d7,e7,f7,g7,h7 となる。
【００３９】
以上のように、５７ｓｔｅｐにて８ｘ８ドットの２値画像の回転が可能となり、従来方式の１２８ｓｔｅｐに対して大幅に処理速度の向上を図ることが可能となる。
【００４０】
なお、以上の５７ｓｔｅｐの回転処理を、米インテル社によって製造販売されているプロセッサ“ＭＭＸ  Ｐｅｎｔｉｕｍ”用にコーディングすると、以下のようになる。
【００４１】
すなわち、まず、アドレス０，１６，２４，３２，４０，４８，５６，６４，７２，８０，８８，９６，１０４，１１２の位置にそれぞれ前述のマスクデータが次のように定義される。
【００４２】
0004068199.tif 000004
そして、前述のステップ（１）−（５７）は、ＭＭＸ０＝Ｒ０，ＭＭＸ１＝Ｒ１，ＭＭＸ２＝Ｒ２、ＭＭＸ［Ｎ］のＮをマスクデータのアドレスであるとすると、次のようになる。
【００４３】
0004068199.tif 000005
0004068199.tif 000006
0004068199.tif 000007
0004068199.tif 000008
以上説明したように、本実施形態の画像回転処理方法によれば、処理前の８ｘ８ドットの画像データを一列に並べた６４ビットのデータ配列と処理後の８ｘ８ドットの画像データを一列に並べた６４ビットのデータ配列との間の一致点に基づいて予めマスクデータが準備され、対応するマスクデータとの間の演算によって、処理前の６４ビットのデータ列中から各一致点に対応する画素データが何画素か単位で同時に抽出される。このように、処理前と処理後の画像データ間の変換規則を利用して処理前データから各一致点に対応する画素データを同時に抽出する処理を行うことにより、１ビットづつの処理ではなく、何ビットか単位で同時に画像処理のための演算を行うことが可能となり、回転処理を高速に行うことが可能となる。
【００４４】
なお、ある特定の変換規則に従って画像処理を行うものであれば、回転だけに限らず、例えば鏡像変換などのような変換処理についても、それに対応するマスクデータを準備することにより、回転の場合と同様の手順で変換後の画像を得ることができる。
【００４５】
なお、本実施形態の画像回転処理方法の手順が記述された画像処理プログラム１２１は、コンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体に記録して流通することができるので、その記録媒体からコンピュータに画像処理プログラム１２１をインストールするだけでそのコンピュータを高速画像処理可能なシステムとして使用することが可能となる。
【００４６】
また、本実施形態の画像回転処理方法の手順は、シフト、ＡＮＤ、およびＯＲ演算の繰り返しにて実現されているので、専用のハードウェアを用いてその為の演算を行ったり、また表示コントローラ１３のアクセラレータ機能を用いて実現することも可能である。表示コントローラ１３のアクセラレータ機能を使用する場合には、処理対象の画像データはＶＲＡＭ１４に格納されているので、ＣＰＵ１１はソースアドレス、デスティネーションアドレス、および回転処理命令を表示コントローラ１３に発行するだけでよく、実際の回転処理は、ＶＲＡＭ１４上において表示コントローラ１３により実行されることになる。
【００４７】
【発明の効果】
以上説明したように、本発明によれば、回転などの画像変換処理の処理前と処理後のデータ間の画素の一致点を有効利用することにより、１ビットづつの処理ではなく何ビットかを同時に処理できるようになり、回転などの画像処理を高速に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る画像処理システムの構成およびそのシステムで実行される画像処理プログラムによる回転処理の手順を示す図。
【図２】同実施形態の画像回転処理の原理を説明するための図。
【図３】同実施形態の画像回転処理で使用されるシフト動作の原理を説明するための図。
【図４】従来の画像回転処理を説明するための図。
【図５】従来の画像回転処理における画素データの並び替えの様子を示す図。
【図６】従来の画像回転処理で用いられるシフト動作の原理を説明するための図。
【符号の説明】
１１…ＣＰＵ
１２…主メモリ
１３…表示コントローラ
１４…画像メモリ
１５…ディスプレイモニタ
１６…ファイル記憶装置
Ｒ０…ソースデータ書き込み用６４ビットレジスタ
Ｒ１…デスティネーションデータ書き込み用６４ビットレジスタ
【図１】
0004068199.tif 000009
【図２】
0004068199.tif 000010
【図３】
0004068199.tif 000011
【図４】
0004068199.tif 000012
【図５】
0004068199.tif 000013
【図６】
0004068199.tif 000014