(57)【特許請求の範囲】
【請求項１】
画像の解像度を縮小する変換装置であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って１つずつ受け付け、該受け付けた順番と行方向の縮小率とに応じて定まる係数を当該受け付けた画素データに乗じた第１の処理用データを生成し、該生成した第１の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第１の処理済データのそれぞれを生成し、該生成した順番に従って１つずつ出力する水平処理部と、
前記水平処理部から出力された複数の第１の処理済データのそれぞれを１つずつ受け付け、該受け付けた順番と列方向の縮小率とに応じて定まる係数を当該受け付けた第１の処理済データに乗じた第２の処理用データを生成し、前記行方向の縮小率と前記画像の行方向の画素数とに基づいて前記生成した第２の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第２の処理済データを生成する垂直処理部と、を有し、
前記行方向の縮小率と前記列方向の縮小率とはそれぞれ、ｐ：（ｐｎ＋ｑ）（但し、ｎ，ｐ，ｑは自然数、ｑはｐ−１以下の値）で表されることを特徴とする変換装置。
【請求項２】
請求項１に記載の変換装置において、
前記係数は、１またはｒ／ｐ（ｒはｐ以下の自然数）または（ｐ−ｒ）／ｐである変換装置。
【請求項３】
請求項１に記載の変換装置において、
前記係数は、ｐまたはｒ（ｒはｐ以下の自然数）または（ｐ−ｒ）である変換装置。
【請求項４】
請求項１から３のいずれか１項に記載の変換装置において、
マイクロコード配列を生成し、マイクロコード配列の要素によって定まる命令コードを前記水平処理部および前記垂直処理部に発行する制御部をさらに有し、
前記水平処理部は、１画素の記憶容量をもつレジスタを備え、前記制御部により発行された命令コードに従って、前記第１の処理用データを生成して前記レジスタに格納し、前記第１の処理用データを加算していくことにより前記第１の処理済データを生成して出力する処理を行い、
前記垂直処理部は、解像度を縮小する前の画像の行方向の画素数をＬとしたとき、ｐＬ／（ｐｎ＋ｑ）ワードの記憶容量をもつシフトレジスタを備え、前記制御部により発行された命令コードに従って、前記第２の処理用データを生成して前記シフトレジスタに格納し、前記第２の処理用データを加算していくことにより前記第２の処理済データを生成する処理を行う変換装置。
【請求項５】
画像の解像度を縮小する変換装置における変換方法であって、
水平処理部が、前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って１つずつ受け付け、該受け付けた順番と行方向の縮小率とに応じて定まる係数を当該受け付けた画素データに乗じた第１の処理用データを生成する第１の処理用データ生成処理と、
前記水平処理部が、前記生成した第１の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第１の処理済データのそれぞれを生成する第１の処理済データ生成処理と、
垂直処理部が、前記複数の第１の処理済データのそれぞれが生成された順番と列方向の縮小率とに応じて定まる係数を当該第１の処理済データに乗じた第２の処理用データを生成する第２の処理用データ生成処理と、
前記垂直処理部が、前記行方向の縮小率と前記画像の行方向の画素数とに基づいて前記生成した第２の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第２の処理済データを生成する第２の処理済データ生成処理と、を有し、
前記行方向の縮小率と前記列方向の縮小率とはそれぞれ、ｐ：（ｐｎ＋ｑ）（但し、ｎ，ｐ，ｑは自然数、ｑはｐ−１以下の値）で表されることを特徴とする変換方法。
【請求項６】
請求項５に記載の変換方法において、
前記係数は、１またはｒ／ｐ（ｒはｐ以下の自然数）または（ｐ−ｒ）／ｐである変換方法。
【請求項７】
請求項５に記載の変換方法において、
前記係数は、ｐまたはｒ（ｒはｐ以下の自然数）または（ｐ−ｒ）である変換方法。
【請求項８】
請求項５から７のいずれか１項に記載の変換方法において、
制御部が、マイクロコード配列を生成し、マイクロコード配列の要素によって定まる命令コードを前記水平処理部および前記垂直処理部に発行する処理をさらに有し、
前記水平処理部は、１画素の記憶容量をもつレジスタを備え、前記発行された命令コードに従って、前記第１の処理用データ生成処理を行って前記第１の処理用データを前記レジスタに格納すると共に、前記第１の処理済データ生成処理を行い、
前記垂直処理部は、解像度を縮小する前の画像の行方向の画素数をＬとしたとき、ｐＬ／（ｐｎ＋ｑ）ワードの記憶容量をもつシフトレジスタを備え、前記発行された命令コードに従って、前記第２の処理用データ生成処理を行って前記第２の処理用データを前記シフトレジスタに格納すると共に、前記第２の処理済データ生成処理を行う変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の解像度を縮小する変換装置および変換方法に関する。
【背景技術】
【０００２】
画像の解像度を変換（縮小）する変換装置は、最近傍法、バイキュービック法、面積平均法、アップサンプリングダウンサンプリング法など、画像の解像度を変換するためのアルゴリズムを用いて画像の解像度の変換を行っている。
【０００３】
アップサンプリングダウンサンプリング法を用いた解像度の変換に関する技術が例えば特許文献１に開示されている。また、面積平均法を用いた解像度の縮小に関する技術が例えば特許文献２に開示されている。
【０００４】
画像の解像度の縮小をラスタスキャンの順番に従って行う場合、縮小の範囲となる複数の画素のそれぞれを示す複数の画素データのそれぞれを格納するためのラインバッファが必要となる。なお、ラスタスキャンとは、画像を構成する複数の画素のそれぞれを行方向に左から右へスキャンし、その後、次の行の左から右へスキャンすることを繰り返して行う走査方式のことである。
【０００５】
ここで、ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例について説明する。
【０００６】
図１１は、ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例を説明するための図であり、（ａ）は解像度を縮小する前の画像を示す図、（ｂ）は解像度を縮小するための構成を説明するための図である。なお、図１１では、画像の解像度を縮小するためのアルゴリズムとして面積平均法を用いて縮小率２：５の縮小を行う場合を一例として示している。
【０００７】
図１１（ａ）に示す画像の解像度を縮小する場合、画像を構成する複数の画素のそれぞれを示す複数の画素データｖtのそれぞれがラスタスキャンの順番に従ってクロックサイクル毎に１つずつ出力される。
【０００８】
そして、出力された画素データｖtは、縮小率に応じた数の画素ライン単位でラインバッファに一旦格納される。なお、ラインバッファは複数用意されている。
【０００９】
変換装置は、複数のラインバッファのそれぞれに対して解像度を縮小するための処理を実行する。これにより、図１１（ｂ）に示すように、画像の解像度が縮小される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−１６５６６４号公報
【特許文献２】特開２００７−３１１８３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、ラスタスキャンの順番に従って画像の解像度を縮小する場合には、複数のラインバッファが必要となる。また、複数のラインバッファのそれぞれは、縮小後の解像度にかかわらず、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位で格納できる容量を有している必要がある。
【００１２】
ここで、相互に異なる複数の縮小率で画像の解像度を縮小したい場合、複数の縮小率毎にラインバッファを用意したり、複数の縮小率でラインバッファを兼用するための制御を行ったりする必要がある。
【００１３】
つまり、相互に異なる複数の縮小率で画像の解像度を縮小したい場合、画像の解像度を縮小する変換装置の回路規模が増大したり、変換装置に高性能の回路を用いたりしなければならないという問題点がある。
【００１４】
本発明は、回路規模の増大を回避しつつ、高性能の回路を用いなくても、相互に異なる複数の縮小率で画像の解像度を縮小することを可能にする変換装置および変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために本発明の変換装置は、画像の解像度を縮小する変換装置であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って１つずつ受け付け、該受け付けた順番と行方向の縮小率とに応じて定まる係数を当該受け付けた画素データに乗じた第１の処理用データを生成し、該生成した第１の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第１の処理済データのそれぞれを生成し、該生成した順番に従って１つずつ出力する水平処理部と、
前記水平処理部から出力された複数の第１の処理済データのそれぞれを１つずつ受け付け、該受け付けた順番と列方向の縮小率とに応じて定まる係数を当該受け付けた第１の処理済データに乗じた第２の処理用データを生成し、前記行方向の縮小率と前記画像の行方向の画素数とに基づいて前記生成した第２の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第２の処理済データを生成する垂直処理部と、を有する。
【００１６】
また、上記目的を達成するために本発明の変換方法は、画像の解像度を縮小する変換装置における変換方法であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って１つずつ受け付け、該受け付けた順番と行方向の縮小率とに応じて定まる係数を当該受け付けた画素データに乗じた第１の処理用データを生成する処理と、
前記生成した第１の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第１の処理済データのそれぞれを生成する処理と、
前記複数の第１の処理済データのそれぞれが生成された順番と列方向の縮小率とに応じて定まる係数を当該第１の処理済データに乗じた第２の処理用データを生成する処理と、
前記行方向の縮小率と前記画像の行方向の画素数とに基づいて前記生成した第２の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第２の処理済データを生成する処理と、を有する。
【発明の効果】
【００１７】
本発明は以上説明したように構成されているので、画像の解像度を縮小する際に、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位でラインバッファに格納する必要がない。
【００１８】
従って、回路規模の増大を回避しつつ、高性能の回路を用いなくても、相互に異なる複数の縮小率で画像の解像度を縮小することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】面積平均法の原理を説明するための図であり、（ａ）は解像度を縮小する前の画像の一例を示す図、（ｂ）は解像度を縮小した後の画像の一例を示す図である。
【図２】本発明の変換装置の実施の一形態の構成を示すブロック図である。
【図３】図２に示した水平処理部および垂直処理部に対して発行される命令コードの種類を説明するための図である。
【図４】図２に示した水平処理部および垂直処理部に対して発行される命令コードの種類毎にレジスタに格納される値の一例を示す図である。
【図５】図２に示した制御部がマイクロコード配列ｄ［ｉ］を生成する動作を説明するためのフローチャートである。
【図６】図２に示した変換装置において画像の解像度を縮小する動作を説明するためのフローチャートである。
【図７】図５に示したフローに従って縮小率を２：３として生成されたマイクロコード配列ｄ［ｉ］の一例を示す図である。
【図８】図５に示したフローに従って縮小率を３：５として生成されたマイクロコード配列ｄ［ｉ］の一例を示す図である。
【図９】本発明の変換装置の他の形態の構成を示すブロック図である。
【図１０】図９に示した水平処理部および垂直処理部に対して発行される命令コードの種類を説明するための図である。
【図１１】ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例を説明するための図であり、（ａ）は解像度を縮小する前の画像を示す図、（ｂ）は解像度を縮小するための構成を説明するための図である。
【発明を実施するための形態】
【００２０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２１】
本実施形態では、画像の解像度を縮小するためのアルゴリズムとして面積平均法を用いた場合について説明する。
【００２２】
まず、面積平均法の原理について説明する。
【００２３】
図１は、面積平均法の原理を説明するための図であり、（ａ）は解像度を縮小する前の画像の一例を示す図、（ｂ）は解像度を縮小した後の画像の一例を示す図である。
【００２４】
図１では、行方向および列方向ともに５画素の画像を、行方向および列方向ともに２画素の画像に解像度を縮小する場合を一例として示している。つまり、縮小率をｐ：（ｐｎ＋ｑ)（但し、ｎ，ｐ，ｑは自然数、ｑはｐ−１以下の値）と表した場合、図１に示す例は、（２：５＝２：（２×２＋１））の場合であり、ｐ=２、ｎ=２、ｑ=１の場合にあたる。
【００２５】
なお、ｐは１であってもよいが、ｐが２以上の自然数の場合について適用することに本発明の特徴がある。例えばｐ＝２，ｑ＝１とすれば、２：（２ｎ＋１）となり、すなわち、２／３、２／５、２／７、 ・・・となる。
【００２６】
面積平均法を用いた場合、解像度を縮小した後の１つの画素を示す画素データｗ1を求める式は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをｖtとすると、以下の式（１）にて表される。なお、Ｌは、解像度を縮小する前の画像の行方向の画素数である。
【００２７】
ｗ1＝ｖ1＋ｖ2＋（１／２）ｖ3＋ｖL+1＋ｖL+2＋（１／２）ｖL+3＋（１／２）（ｖ2L+1＋ｖ2L+2）＋（１／４）ｖ2L+3・・・式（１）
上記の式（１）において係数に着目すると、係数が１のものは、ｖ1，ｖ2，ｖL+1，ｖL+2であり、係数が(１／２)のものは、ｖ3，ｖL+3，ｖ2L+1，ｖ2L+2であり、係数が（１／４）のものは、ｖ2L+3となっている。
【００２８】
また、図１（ｂ）において画素データｗ1が示す画素に隣接する画素を示す画素データｗ2においても、画素データｗ1と同様に、ｖ3，ｖL+3の係数は（１／２）であり、ｖ2L+3の係数は（１／４）となる。
【００２９】
本実施形態では、複数の画素データｖtのそれぞれに上述したような係数を乗じて、ラスタスキャンの順番を利用して加算していくことにより、解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれを生成していく。
【００３０】
図２は、本発明の変換装置の実施の一形態の構成を示すブロック図である。
【００３１】
本実施形態の変換装置１０は図２に示すように、制御部１１と、水平処理部１２と、垂直処理部１３とを備えている。
【００３２】
本実施形態では、まず、縮小率から、上述したｐ，ｑ，ｎを決定し、さらに、解像度を縮小する前の画像の行方向の画素数Ｌを（ｐｎ＋ｑ）で割り切れる値となるように、画素の削除または付加を行っておく。
【００３３】
制御部１１は、値を格納するレジスタｒk，ｒs，Ａ１，Ａ２，Ｂ，Ｃ１，Ｃ２，Ｄ，Ｅ，Ｆ，ｋ，ｓを備えている。なお、以降、レジスタＡ１に格納された値をＡ１と表記する。また、レジスタＡ１に格納された値が例えば１であるとき、Ａ１＝１と表記する。他のレジスタについても同様に表記する。制御部１１は、（ｐｎ＋ｑ）と同じ数だけのマイクロコード配列ｄ［ｉ］を生成する。マイクロコード配列ｄ［ｉ］の添え字ｉは、（（ｋ−１）ｍｏｄ（ｐｎ＋ｑ）＋１）、または、（（ｓ−１）ｍｏｄ（ｐｎ＋ｑ）＋１）によって決定される。なお、ｋ，ｓは１から始まり、１つずつインクリメントされていく。マイクロコード配列ｄ［ｉ］は、水平処理部１２および垂直処理部１３を制御するための命令コードを構成する。命令コードは、水平処理部１２および垂直処理部１３に対して発行される。マイクロコード配列ｄ［ｉ］の要素は、レジスタｒk，ｒs，Ａ１，Ａ２，Ｂ，Ｃ１，Ｃ２，Ｄ，Ｅ，Ｆに格納される。水平処理部１２に対して発行される命令コードの種類は、ｒk，Ａ１，Ａ２，Ｂ，Ｅによって決定され、垂直処理部１３に対して発行される命令コードの種類は、ｒs，Ｃ１，Ｃ２，Ｄ，Ｆによって決定される。
【００３４】
水平処理部１２は、１画素分の画素データの記憶容量をもつレジスタＧを備えている。水平処理部１２は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データｖtのそれぞれをラスタスキャンの順番に従ってクロックサイクル毎に１つずつ受け付ける。そして、水平処理部１２は、当該クロックサイクルにおいて水平処理部１２に対して発行されている命令コードの種類に応じた係数を、受け付けた画素データｖtに乗じた第１の処理用データを生成する。そして、水平処理部１２は、その命令コードの種類に応じた処理を実行する。この処理には、生成した第１の処理用データを加算していくことにより、解像度が縮小された画像を構成する複数の画素のそれぞれの一部を示す第１の処理済データｕtを生成して出力する処理が含まれる。なお、命令コードの種類と、水平処理部１２が命令コードの種類に応じて実行する処理との詳細については後述する。
【００３５】
垂直処理部１３は、解像度を縮小した後の画像の行方向の画素数、すなわちｐＬ／（ｐｎ＋ｑ）ワードの記憶容量のシフトレジスタＨを備えている。垂直処理部１３は、水平処理部１２から出力された第１の処理済データｕtを受け付ける。そして、垂直処理部１３は、当該クロックサイクルにおいて垂直処理部１３に対して発行されている命令コードの種類に応じた係数を、受け付けた第１の処理済データｕtに乗じた第２の処理用データを生成する。そして、垂直処理部１３は、その命令コードの種類に応じた処理を実行する。この処理には、生成した第２の処理用データを加算していくことにより、解像度が縮小された画像を構成する複数の画素のそれぞれを示す第２の処理済データを生成して出力する処理が含まれる。なお、命令コードの種類と、垂直処理部１３が命令コードの種類に応じて実行する処理の詳細については後述する。
【００３６】
レジスタＩは、後続の処理に応じた容量をもつシフトレジスタ、または、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）、または、フレームバッファメモリである。レジスタＩは、ＥとＦとの論理積（Ｅ×Ｆ）が１である場合に、垂直処理部１３から出力された第２の処理済データを格納する。これにより、解像度が縮小された画像を構成する複数の画素のそれぞれを示す複数の画素データｗtのそれぞれがラスタスキャンの順番に従ってレジスタＩに格納されていくことになる。なお、レジスタＩは、後続の処理が例えば閾値を用いた２値化であれば、１ワード分の容量のレジスタでよい。また、レジスタＩは、後続の処理が例えば複雑な処理であれば、ランダムアクセスが可能なフレームバッファメモリとなる。つまり、レジスタＩは、後続の処理に必要な読み出し方式に応じて決定すればよい。
【００３７】
ここで、図２に示した水平処理部１２および垂直処理部１３に対して発行される命令コードの種類と、水平処理部１２および垂直処理部１３が命令コードの種類に応じて行う処理について説明する。
【００３８】
図３は、図２に示した水平処理部１２および垂直処理部１３に対して発行される命令コードの種類を説明するための図である。また、図４は、図２に示した水平処理部１２および垂直処理部１３に対して発行される命令コードの種類毎にレジスタに格納される値の一例を示す図である。
【００３９】
命令コードの種類としては図３に示すように、ｏｐ１，ｏｐ２，ｏｐ３の３つがある。なお、ｏｐ３にだけパラメタｒが設定されている。パラメタｒは、ｒkまたはｒsであり、ｒkとｒsとはともにｐ以下の自然数である。
【００４０】
水平処理部１２および垂直処理部１３は、当該クロックサイクルにおいてそれぞれに対して発行されている命令コードの種類に応じて図３に示す処理を行う。
【００４１】
なお、命令コードの種類がｏｐ１である場合、水平処理部１２は図３に示すように、受け付けた画素データｖtをそのまま、第１の処理用データとしてレジスタＧに格納する。この動作は、受け付けた画素データｖtに１を乗じて第１の処理用データとしてレジスタＧに格納することと同意である。これは、命令コードの種類がｏｐ１である場合の垂直処理部１３の動作についても同様である。
【００４２】
また、図４に示すように、ｒk，ｒs，Ａ１，Ａ２，Ｂ，Ｃ１，Ｃ２，Ｄ，Ｅ，Ｆは、図３に示した命令コードの種類に応じて異なる。
【００４３】
垂直処理部１３は、Ｅ＝１のとき、すなわち水平処理部１２に対して発行されている命令コードがｏｐ３（ｒ）のクロックサイクルにおいてのみ、そのクロックサイクルにおいて垂直処理部１３に対して発行されている命令コードの種類に応じた処理を行う。
【００４４】
なお、図４において「Ｘ」は任意の値であり、その値が水平処理部１２および垂直処理部１３の動作に何ら影響を与えないことを示している。以降の説明では、Ｘの値を０としておく。
【００４５】
以下に、上記のように構成された変換装置１０の動作について説明する。
【００４６】
まず、図２に示した制御部１１がマイクロコード配列ｄ［ｉ］を生成する動作について説明する。
【００４７】
図５は、図２に示した制御部１１がマイクロコード配列ｄ［ｉ］を生成する動作を説明するためのフローチャートである。
【００４８】
まず、制御部１１は、ｉを１に設定する（ステップＳ１）。
【００４９】
次に、制御部１１は、ｉが１かどうかを判定する（ステップＳ２）。
【００５０】
ステップＳ２における判定の結果、ｉが１である場合、変数ｊを定義し、ｊ＝ｐとする。そして、制御部１１は、命令コードｏｐ１を構成するマイクロコード配列ｄ［ｉ］を生成し、ｊを（ｊ＋ｐ）に更新する（ステップＳ３）。
【００５１】
次に、制御部１１は、ｉを１つインクリメントする（ステップＳ４）。
【００５２】
そして、制御部１１は、ｉが（ｐｎ＋ｑ）よりも大きいかどうかを判定する（ステップＳ５）。
【００５３】
ステップＳ５における判定の結果、ｉが（ｐｎ＋ｑ）よりも大きな場合、処理を終了する。
【００５４】
一方、ステップＳ５における判定の結果、ｉが（ｐｎ＋ｑ）よりも大きくない場合には、ステップＳ２の動作へ遷移する。
【００５５】
ここで、ステップＳ２における判定の結果、ｉが１でない場合、制御部１１は、ｊが（ｐｎ＋ｑ）よりも小さいかどうかを判定する（ステップＳ６）。
【００５６】
ステップＳ６における判定の結果、ｊが（ｐｎ＋ｑ）よりも小さな場合、制御部１１は、命令コードｏｐ２を構成するマイクロコード配列ｄ［ｉ］を生成し、ｊを（ｊ＋ｐ）に更新する（ステップＳ７）。そして、ステップＳ４の動作へ遷移する。
【００５７】
一方、ステップＳ６における判定の結果、ｊが（ｐｎ＋ｑ）よりも小さくない場合には、制御部１１は、ｒ＝ｐ−（ｊ−（ｐｎ＋ｑ））によってｒを算出し、命令コードｏｐ３（ｒ）を構成するマイクロコード配列ｄ［ｉ］を生成し、ｊの値を（ｊ−（ｐｎ＋ｑ）＋ｐ）に更新する（ステップＳ８）。そして、ステップＳ４の動作へ遷移する。
【００５８】
以上が、制御部１１がマイクロコード配列ｄ［ｉ］を生成する動作である。
【００５９】
次に、図２に示した変換装置１０において画像の解像度を縮小する動作について説明する。
【００６０】
図６は、図２に示した変換装置１０において画像の解像度を縮小する動作を説明するためのフローチャートである。また、図７は、図５に示したフローに従って縮小率を２：３として生成されたマイクロコード配列ｄ［ｉ］の一例を示す図である。
【００６１】
以下に、図６および図７を参照しながら、縮小率２：３のとき、すなわちｐ＝２，ｎ＝１，ｑ＝１のときの動作について説明する。
【００６２】
まず、解像度を縮小する前の画像の行方向の画素数Ｌをｐｎ＋ｑで割り切れる値となるように、画素の削除または付加を行っておく。ここでは（ｐｎ＋ｑ）は３なので、Ｌは３の倍数となる。
【００６３】
次に、制御部１１は、レジスタｒk，ｒs，Ａ１，Ａ２，Ｂ，Ｃ１，Ｃ２，Ｄ，Ｅ，Ｆ，ｋ，ｓを初期化する（ステップＳ２１）。これにより、ｒk＝０、ｒs＝０、Ａ１＝０、Ａ２＝０、Ｂ＝０、Ｃ１＝０、Ｃ２＝０、Ｄ＝０、Ｅ＝０、Ｆ＝０、ｋ＝１、ｓ＝１となる。すなわち、図７を参照すると、水平処理部１２と垂直処理部１３との両方に対して命令コードｏｐ１が発行されていることになる。
【００６４】
次に、水平処理部１２は、時刻ｔ＝１のクロックサイクルにおいて、解像度を縮小する前の画像を構成する複数の画素を示す複数の画素データｖtのうちの１つをラスタスキャンの順番に従って受け付ける（ステップＳ２２）。ここでは、１行目の左端の画素を示す画素データｖ1を受け付ける。
【００６５】
次に、水平処理部１２および垂直処理部１３は、それぞれに対して発行されている命令コードの種類に応じた処理を実行する（ステップＳ２３）。
【００６６】
ここでは、水平処理部１２に対して命令コードｏｐ１が発行されている。従って、水平処理部１２は、受け付けた画素データｖ1をそのまま、第１の処理用データとしてレジスタＧに格納する。なお、水平処理部１２に対して命令コードｏｐ１が発行されている場合、Ｅ＝０である。そのため、垂直処理部１３は、何の処理も実行しない。
【００６７】
次に、制御部１１は、（ｋ−１）＞Ｋ（但し、Ｋ＝Ｌ／（ｐｎ＋ｑ））が成立するかどうかを判定する（ステップＳ２４）。
【００６８】
ステップＳ２４における判定の結果、（ｋ−１）＞Ｋが成立する場合、制御部１１は、ｋを１とし（ステップＳ２５）、ｓを１つインクリメントする（ステップＳ２６）。
【００６９】
一方、ステップＳ２４における判定の結果、（ｋ−１）＞Ｋが成立しない場合には、制御部１１は、ｋを１つインクリメントする（ステップＳ２７）。
【００７０】
ここでは、（ｋ−１）＞Ｋが成立しない。従って、制御部１１は、ｋを１つインクリメントする。これにより、ｋは２となり、ｓは１のままとなる。
【００７１】
次に、制御部１１は、（ｋ＝２）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、（ｄ［（ｋ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]＝ｄ［２］）によってｒk，Ａ１，Ａ２，Ｂ，Ｅを更新する（ステップＳ２８）。
【００７２】
なお、ｓは更新されていないが、制御部１１は、（ｓ＝１）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、ｄ［（ｓ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]=ｄ[１]によってｒs，Ｃ１，Ｃ２，Ｄ，Ｆを更新する（ステップＳ２９）。
【００７３】
以上の結果、ｒk＝１、ｒs＝０、Ａ１＝１、Ａ２＝１、Ｂ＝０、Ｃ１＝０、Ｃ２＝０、Ｄ＝０、Ｅ＝１、Ｆ＝０となり、図７を参照すると、水平処理部１２に対して発行された命令コードはｏｐ１からｏｐ３（１）に変更され、垂直処理部１３に対して発行された命令コードはｏｐ１のままとなる。
【００７４】
そして、ステップＳ２２の動作へ遷移し、上述したステップＳ２２〜Ｓ２９の動作が繰り返される。具体的には、以下に説明するとおりである。
【００７５】
水平処理部１２は、時刻ｔ＝２のクロックサイクルにおいて、ラスタスキャンの順番に従い、画素データｖ1が示す画像と行方向に隣接する画素を示す画素データｖ2の入力を受け付ける。
【００７６】
ここでは、水平処理部１２に対して命令コードｏｐ３（１）が発行されている。従って、水平処理部１２は、受け付けた画素データｖ2にｒk／ｐを乗じた、すなわち、１／２を乗じた第１の処理用データ（１／２）ｖ2を生成する。
【００７７】
そして、水平処理部１２は、レジスタＧに格納された第１の処理用データｖ1に、生成した第１の処理用データ（１／２）ｖ2を加算した第１の処理済データｕt（ｖ1＋（１／２）ｖ2）を生成して出力する。
【００７８】
また、水平処理部１２は、レジスタＧに格納されている第１の処理用データｖ1に代えて、受け付けた画素データｖ2に（ｐ−ｒk）／ｐを乗じて、すなわち、１／２を乗じて第１の処理用データ（（１／２）ｖ2）としてレジスタＧに格納する。
【００７９】
ここでは、Ｅ＝１であり、また、垂直処理部１３に対して命令コードｏｐ１が発行されている。従って、垂直処理部１３は、水平処理部１２から出力された第１の処理済データｕt（ｖ1＋（１／２）ｖ2）をそのまま、第２の処理用データとしてシフトレジスタＨの入力端に格納する。
【００８０】
次に、制御部１１は、上述したステップＳ２４の動作に従い、（ｋ−１）＞Ｋが成立するかどうかを判定する。
【００８１】
ここでは、（ｋ−１）＞Ｋが成立しない。従って、制御部１１は、ｋを１つインクリメントする。これにより、ｋは３となり、ｓは１のままとなる。
【００８２】
次に、制御部１１は、（ｋ＝３）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、ｄ［（ｋ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]=ｄ[３]によってｒk，Ａ１，Ａ２，Ｂ，Ｅを更新する。
【００８３】
ここでも、ｓは更新されていないが、制御部１１は、（ｓ＝１）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、ｄ［（ｓ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]=ｄ[１]によってｒs，Ｃ１，Ｃ２，Ｄ，Ｆを更新する。
【００８４】
以上の結果、ｒk＝２、ｒs＝０、Ａ１＝１、Ａ２＝１、Ｂ＝０、Ｃ１＝０、Ｃ２＝０、Ｄ＝０、Ｅ＝１、Ｆ＝０となり、図７を参照すると、水平処理部１２に対して発行された命令コードはｏｐ３（１）からｏｐ３（２）に変更され、垂直処理部１３に対して発行された命令コードはｏｐ１のままとなる。
【００８５】
そして、ステップＳ２２の動作へ遷移する。
【００８６】
水平処理部１２は、時刻ｔ＝３のクロックサイクルにおいて、ラスタスキャンの順番に従い、画素データｖ2が示す画像と行方向に隣接する画素を示す画素データｖ3の入力を受け付ける。
【００８７】
ここでは、水平処理部１２に対して命令コードｏｐ３（２）が発行されている。従って、水平処理部１２は、受け付けた画素データｖ3にｒk／ｐを乗じた、すなわち、２／２を乗じた第１の処理用データｖ3を生成する。
【００８８】
そして、水平処理部１２は、レジスタＧに格納されている第１の処理用データ（１／２）ｖ2に、生成した第１の処理用データｖ3を加算した第１の処理済データｕt（（１／２）ｖ2＋ｖ3）を生成して出力する。
【００８９】
ここでは、Ｅ＝１であり、また、垂直処理部１３に対して命令コードｏｐ１が発行されている。従って、垂直処理部１３は、シフトレジスタＨに格納されている第２の処理用データを１ワード分、出力端側へシフトする。
【００９０】
そして、垂直処理部１３は、水平処理部１２から出力された第１の処理済データｕt（（１／２）ｖ2＋ｖ3）をそのまま、第２の処理用データとしてシフトレジスタＨの入力端に格納する。これにより、シフトレジスタＨには入力端側から順番に、（（１／２）ｖ2＋ｖ3）、（ｖ1＋（１／２）ｖ2）が格納されることになる。
【００９１】
次に、制御部１１は、上述したステップＳ２４の動作に従い、（ｋ−１）＞Ｋが成立するかどうかを判定する。以降、解像度を縮小する前の画像の画素数が行方向および列方向ともに３画素の画像である場合、すなわち、Ｌ＝３の場合について説明する。
【００９２】
この場合、Ｋ＝１であるため、（ｋ−１）＞Ｋが成立する。従って、制御部１１は、ｋを１とし、ｓを１つインクリメントする。これにより、ｋは１となり、ｓは２となる。
【００９３】
次に、制御部１１は、（ｋ＝１）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、ｄ［（ｋ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]=ｄ[１]によってｒk，Ａ１，Ａ２，Ｂ，Ｅを更新する。
【００９４】
また、制御部１１は、（ｓ＝２）に基づいてマイクロコード配列ｄ［ｉ］を読み出し、ｄ［（ｓ−１）ｍｏｄ（ｐｎ＋ｑ）＋１]=ｄ[２]によってｒs，Ｃ１，Ｃ２，Ｄ，Ｆを更新する。
【００９５】
以上の結果、ｒk＝０、ｒs＝１、Ａ１＝０、Ａ２＝０、Ｂ＝０、Ｃ１＝１、Ｃ２＝１、Ｄ＝０、Ｅ＝０、Ｆ＝１となり、図７を参照すると、水平処理部１２に対して発行された命令コードはｏｐ３（２）からｏｐ１に変更され、垂直処理部１３に対して発行された命令コードはｏｐ１からｏｐ３（１）に変更される。
【００９６】
なお、垂直処理部１３に対して発行された命令コードｏｐ３（１）は、解像度を縮小する前の画像の２行目の画素データを処理する間、変更されない。従って、この間、Ｆは１のままとなる。
【００９７】
また、解像度を縮小する前の画像の２行目の複数の画素のそれぞれを示す複数の画素データのうち２番目に水平処理部１２にて受け付けられる画素データを処理する際には、水平処理部１２に対して発行される命令コードはｏｐ３（２）となり、Ｅ＝１となる。つまり、ＥとＦとの論理積が１となる。
【００９８】
従って、解像度を縮小する前の画像の２行目の複数の画素のそれぞれを示す複数の画素データのうち２番目に受け付けられる画素データを処理する際には、垂直処理部１３は、受け付けた第１の処理済データｕt（ｖL+1＋（１／２）ｖL+2）に１／２を乗じた第２の処理用データを生成する。
【００９９】
次に、垂直処理部１３は、生成した第２の処理用データ（１／２）（ｖL+1＋（１／２）ｖL+2）と、シフトレジスタＨの出力端に格納されている第２の処理用データ（ｖ1＋（１／２）ｖ2）とを加算した第２の処理済データを生成する。
【０１００】
そして、生成された第２の処理済データ（ｖ1＋（１／２）ｖ2＋（１／２）ｖL+1＋（１／４）ｖL+2）が出力されてレジスタＩに格納される。
【０１０１】
この第２の処理済データ（ｖ1＋（１／２）ｖ2＋（１／２）ｖL+1＋（１／４）ｖL+2）れが、行方向および列方向ともに３画素の画像を行方向および列方向ともに２画素の画像に解像度を縮小する場合、つまり、縮小率２：３のときの縮小後の画像を構成する複数の画素のうち１行目の左端の画素を示す画素データとなる。
【０１０２】
なお、この段階では、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれに乗じた係数の和は、１よりも大きい（２.２５となっている）。縮小した画素データの絶対値の正規化については、必要に応じて別途行うものとする。
【０１０３】
さらに、垂直処理部１３は、垂直処理部１３に対して発行されている命令コードｏｐ３（１）に従い、シフトレジスタＨに格納されている第２の処理用データを１ワード分、出力端側へシフトする。
【０１０４】
次に、垂直処理部１３は、受け付けた第１の処理済データｕt（（ｖL+1＋（１／２）ｖL+2））に１／２を乗じて生成した第２の処理用データ（１／２）（ｖL+1＋（１／２）ｖL+2）をシフトレジスタＨの入力端に格納する。
【０１０５】
そして、解像度を縮小する前の画像の３行目の複数の画像のそれぞれを示す複数の画素データのうち２番目に水平処理部１２にて受け付けられる画素データを処理する際に、垂直処理部１３は、シフトレジスタＨに格納された第２の処理用データ（（１／２）（ｖL+1＋（１／２）ｖL+2））と、受け付けた第１の処理済データｕt（ｖ2L+1＋（１／２）ｖ2L+2）を命令コードｏｐ３（２）に従って２／２を乗じて生成した第２の処理用データ（ｖ2L+1＋（１／２）ｖ2L+2）とを加算した第２の処理済データを生成する。
【０１０６】
そして、生成された第２の処理済データ（（１／２）ｖL+1＋（１／４）ｖL+2＋ｖ2L+1＋（１／２）ｖ2L+2）が出力されてレジスタＩに格納される。
【０１０７】
このとき、垂直処理部１３は、命令コードｏｐ３（２）に従い、受け付けた第１の処理済データｕt（ｖ2L+1＋（１／２）ｖ2L+2）に（０／２）を乗じた第２の処理用データを生成してシフトレジスタＨの入力端に格納する。この場合、シフトレジスタＨの入力端に格納された第２の処理用データは０となるが、解像度を縮小する前の画像の４行目の画素データを処理する間、垂直処理部１３には命令コードｏｐ１が発行され、Ｅ＝０となる。そのため、シフトレジスタＨにどのような第２の処理用データが格納されていても、結果に影響はない。
【０１０８】
上述したのと同様の動作を実行することにより、（２：３）以外の縮小率で画像の解像度を縮小することも可能である。
【０１０９】
図８は、図５に示したフローに従って縮小率を３：５として生成されたマイクロコード配列ｄ［ｉ］の一例を示す図である。つまり、図８に示す例では、ｐ＝３，ｎ＝１，ｑ＝２となっている。
【０１１０】
図８に示すようなマイクロコード配列ｄ［ｉ］によって構成される命令コードに従って水平処理部１２および垂直処理部１３が画素データを処理していくことにより、縮小率が３：５の場合にも、上述した２：３の場合と同様に画像の解像度を縮小することができる。
【０１１１】
このように本実施形態において変換装置１０は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って１つずつ受け付け、受け付けた順番と行方向の縮小率とに応じて定まる係数を当該受け付けた画素データに乗じた第１の処理用データを生成する。
【０１１２】
そして、変換装置１０は、生成した第１の処理用データを加算していくことにより、解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第１の処理済データのそれぞれを生成する。
【０１１３】
また、変換装置１０は、複数の第１の処理済データのそれぞれが生成された順番と列方向の縮小率とに応じて定まる係数を当該第１の処理済データに乗じた第２の処理用データを生成する。
【０１１４】
そして、変換装置１０は、行方向の縮小率と解像度を縮小する前の画像の行方向の画素数とに基づき、生成した第２の処理用データを加算していくことにより、解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第２の処理済データを生成する。
【０１１５】
これにより、画像の解像度を縮小する際に、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位でラインバッファに格納する必要がない。
【０１１６】
上述した実施形態においてレジスタの容量は、たかだか（ｐＬ／（ｐｎ＋ｑ）＋数ワード、すなわち（（ｐ／（ｐｎ＋ｑ））＜１）である。これは、解像度を縮小する前の画像の１行分の画素を示す画素データの格納に必要な容量よりも小さい規模である。この規模は、解像度をより縮小する（ｎを大きくする）とさらに小さくなる。
【０１１７】
従って、回路規模の増大を回避しつつ、高性能の回路を用いなくても、相互に異なる複数の縮小率で画像の解像度を縮小することが可能となる。
【０１１８】
また、水平処理部１２および垂直処理部１３の大部分はｐによって構成を決定することができる。そのため、縮小率を分数で表した場合に、分母の値が同じとなる縮小率で画像の解像度を縮小するための複数の変換装置を設計する場合に、その設計負担を減らすことができる。
【０１１９】
なお、水平処理部１２および水平処理部１２に発行される命令コードを構成するマイクロコード配列ｄ［ｉ］と、垂直処理部１３および垂直処理部１３に発行される命令コードを構成するマイクロコード配列ｄ［ｉ］とは別々に生成されている。そのため、行方向の縮小率と列方向の縮小率とを相互に独立して設定することも可能である。
【０１２０】
また、垂直処理部１３の後段に、平面処理部と上述したような制御部とを自己相似的に設ける構成にすれば、３次元の格子に対して解像度縮小を行うこともできる。これは、任意のＮ次元まで拡張することが可能である。
【０１２１】
ここまでの説明では、水平処理部１２および垂直処理部１３おいて画素データｖtに乗じる係数は、分母がｐの有理数としていたことになるが、これをすべてｐ倍することにより、画素データｖtに乗じる係数を正の整数として取り扱うこともできる。
【０１２２】
図９は、本発明の変換装置の他の形態の構成を示すブロック図である。また、図１０は、図９に示した水平処理部１１２および垂直処理部１１３に対して発行される命令コードの種類を説明するための図である。
【０１２３】
図９に示す変換装置１００を用いた場合、縮小した結果はｐ2倍されていることになるが、既知の定数倍であるので、後処理によって正規化する際に、定数で除算することによって期待する結果を得ることができる。
【０１２４】
図９および図１０に示した変換装置１００を用いた場合、図２および図３に示した変換装置１０を用いた場合に比べ、除算による桁落ちがその工程に局所化できる。そのため、変換装置１００を用いれば、上述した効果に加えて、設計時に精度を見積りやすくなるという効果が期待できる。
【符号の説明】
【０１２５】
１０，１００    変換装置
１１    制御部
１２，１１２    水平処理部
１３，１１３    垂直処理部
【図２】
0005554215.tif 000002
【図３】
0005554215.tif 000003
【図４】
0005554215.tif 000004
【図５】
0005554215.tif 000005
【図６】
0005554215.tif 000006
【図７】
0005554215.tif 000007
【図８】
0005554215.tif 000008
【図９】
0005554215.tif 000009
【図１０】
0005554215.tif 000010
【図１】
0005554215.tif 000011
【図１１】
0005554215.tif 000012