(57)【要約】【課題】割り算器や浮動小数点演算器を用いることなしに画像を任意の倍数で拡大縮小できる画像の拡大縮小処理装置を提供する。【解決手段】画像の拡大縮小処理で使用される補間係数を算出する係数演算回路と、入力画像データを構成する入力画素のそれぞれに対応するように係数演算回路から与えられる補間係数とを乗算する乗算器と、乗算器から出力される乗算済みデータの加算を繰り返し、入力画素の所定個数分について乗算済みデータの総和を取る加算器と、所定個数分の入力画素について乗算済みデータの総和が得られるタイミングで乗算済みデータの総和を出力するセレクタと、セレクタの出力をシフト演算することで、出力画像データのビット数を入力画像データのビット数に調整するシフト回路とを備え、係数演算回路で算出される補間係数は、その総和が、所定数の２の累乗と同じとなるように整数化されている。【選択図】図７
2015089115.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データに対して画素を補間することでＵ／Ｄ倍（Ｕ、Ｄは自然数）に変換して出力画像データとする画像の拡大縮小処理装置であって、
前記画像の拡大縮小処理で使用される補間係数を算出する係数演算回路と、
前記入力画像データを構成する入力画素のそれぞれに対応するように前記係数演算回路から与えられる前記補間係数を乗算する乗算器と、
前記乗算器から出力される乗算済みデータの加算を繰り返し、前記入力画素の所定個数分について前記乗算済みデータの総和を取る加算器と、
前記所定個数分の前記入力画素について前記乗算済みデータの総和が得られるタイミングで前記乗算済みデータの総和を出力するセレクタと、
前記セレクタの出力をシフト演算することで、前記出力画像データのビット数を前記入力画像データのビット数に調整するシフト回路と、を備え、
前記係数演算回路で算出される前記補間係数は、その総和が、所定数の２の累乗と同じとなるように整数化されていることを特徴とする、画像の拡大縮小処理装置。
【請求項２】
前記係数演算回路は、
前記入力画像データに対して補間される画素の内挿点の座標を算出する座標演算回路と、
前記所定個数分の前記入力画素に対応する補間係数をそれぞれ出力する複数の係数演算回路とを有し、
前記複数の係数演算回路のうちの１つは、前記所定数の２の累乗の値から他の係数演算回路で算出された前記補間係数の和を差し引くことで残り１つの補間係数を算出する、請求項１記載の画像の拡大縮小処理装置。
【請求項３】
前記座標演算回路は、
先に得られた内挿点の座標にＤ／Ｕを加算することで次の内挿点の座標を算出し、そのうち、最初の内挿点の座標は、予め定めた初期値にＤ／Ｕを加算することで座標を算出し、
算出された内挿点の座標の小数部分を切り捨てる演算を行って、その演算結果を前記内挿点と前記所定個数分の前記入力画素のうちの１つの入力画素との基準距離とし、前記基準距離に基づいて、前記内挿点と前記所定個数分の前記入力画素の他の入力画素との距離を算出し、前記基準距離を含めて内挿点入力画素間距離として前記他の係数演算回路に与える、請求項２記載の画像の拡大縮小処理装置。
【請求項４】
前記座標演算回路は、
現在の内挿点の座標と次の内挿点の座標とを整数化し、両者の差分値により、前記入力画素を前記所定個数分単位の選択範囲を、所定画素数ずつずらす、あるいはずらさないことを規定するスキップ数を決定する、請求項３記載の画像の拡大縮小処理装置。
【請求項５】
前記他の係数演算回路は、
前記座標演算回路から与えられる前記内挿点入力画素間距離どうしの乗算および所定の係数の乗算を行って、入力された前記内挿点入力画素間距離に対応した補間関数を演算すると共に、前記補間関数の演算結果を四捨五入することで、入力された前記内挿点入力画素間距離に対応した補間係数を算出する、請求項３記載の画像の拡大縮小処理装置。
【請求項６】
入力画像データに対して画素を補間することでＵ／Ｄ倍（Ｕ、Ｄは自然数）に変換して出力画像データとする画像の拡大縮小処理方法であって、
（ａ）前記画像の拡大縮小処理で使用される補間係数を算出するステップと、
（ｂ）前記入力画像データを構成する入力画素のそれぞれに対応するように、前記ステップ（ａ）で得られた前記補間係数を乗算するステップと、
（ｃ）前記ステップ（ｂ）で得られた乗算済みデータの加算を繰り返し、前記入力画素の所定個数分について前記乗算済みデータの総和を取るステップと、
（ｄ）前記所定個数分の前記入力画素について前記乗算済みデータの総和が得られるタイミングで前記乗算済みデータの総和を出力するステップと、
（ｅ）前記ステップ（ｄ）で得られる前記乗算済みデータの総和をシフト演算することで、前記出力画像データのビット数を前記入力画像データのビット数に調整するステップと、を備え、
前記ステップ（ａ）で算出される前記補間係数は、その総和が、所定数の２の累乗と同じとなるように整数化されていることを特徴とする、画像の拡大縮小処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の拡大縮小処理で使用される補間係数を算出する係数演算回路を有した画像の拡大縮小演算装置に関する。
【背景技術】
【０００２】
一般的な画像の拡大縮小処理装置としては、例えば特許文献１に開示されるように、まず、原画像をＵ倍に拡大した後、１／Ｄ倍に縮小するという手順で、整数倍だけでなく有理数倍も含めたＵ／Ｄ倍任意拡大縮小処理を実現している。しかしながら、この方法では、原画像をＵ倍に拡大するための演算が必要であると共に、Ｕ倍に拡大した画像データを格納するためのメモリが必要となり、演算およびメモリが冗長性を含むこととなる。
【０００３】
一方、特許文献２には、原画像から中間画像（Ｕ倍画像）を求めずにいきなり最終画像（Ｕ／Ｄ倍画像）を求める技術が開示されており、冗長性が解消されているが、補間処理については従来的な手法を用いており、割り算器や浮動小数点演算器を用いる必要があると考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−６３８２６号公報
【特許文献２】特開２０００−１６５６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上説明したように、従来の画像の拡大縮小処理においては、割り算器や浮動小数点演算器を用いる必要があり、装置構成が複雑になるという問題があった。
【０００６】
本発明は上記のような問題点を解消するためになされたもので、割り算器や浮動小数点演算器を用いることなしに画像を任意の倍数で拡大縮小できる画像の拡大縮小処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る画像の拡大縮小処理装置の第１の態様は、入力画像データに対して画素を補間することでＵ／Ｄ倍（Ｕ、Ｄは自然数）に変換して出力画像データとする画像の拡大縮小処理装置であって、前記画像の拡大縮小処理で使用される補間係数を算出する係数演算回路と、前記入力画像データを構成する入力画素のそれぞれに対応するように前記係数演算回路から与えられる前記補間係数とを乗算する乗算器と、前記乗算器から出力される乗算済みデータの加算を繰り返し、前記入力画素の所定個数分について前記乗算済みデータの総和を取る加算器と、前記所定個数分の前記入力画素について前記乗算済みデータの総和が得られるタイミングで前記乗算済みデータの総和を出力するセレクタと、前記セレクタの出力をシフト演算することで、前記出力画像データのビット数を前記入力画像データのビット数に調整するシフト回路とを備え、前記係数演算回路で算出される前記補間係数は、その総和が、所定数の２の累乗と同じとなるように整数化されている。
【０００８】
本発明に係る画像の拡大縮小処理装置の第２の態様は、前記係数演算回路が、前記入力画像データに対して補間される画素の内挿点の座標を算出する座標演算回路と、前記所定個数分の前記入力画素に対応する補間係数をそれぞれ出力する複数の係数演算回路とを有し、前記複数の係数演算回路のうちの１つは、前記所定数の２の累乗の値から他の係数演算回路で算出された前記補間係数の和を差し引くことで残り１つの補間係数を算出する。
【０００９】
本発明に係る画像の拡大縮小処理装置の第３の態様は、前記座標演算回路が、先に得られた内挿点の座標にＤ／Ｕを加算することで次の内挿点の座標を算出し、そのうち、最初の内挿点の座標は、予め定めた初期値にＤ／Ｕを加算することで座標を算出し、算出された内挿点の座標の小数部分を切り捨てる演算を行って、その演算結果を前記内挿点と前記所定個数分の前記入力画素のうちの１つの入力画素との基準距離とし、前記基準距離に基づいて、前記内挿点と前記所定個数分の前記入力画素の他の入力画素との距離を算出し、前記基準距離を含めて内挿点入力画素間距離として前記他の係数演算回路に与える。
【００１０】
本発明に係る画像の拡大縮小処理装置の第４の態様は、前記座標演算回路が、現在の内挿点の座標と次の内挿点の座標とを整数化し、両者の差分値により、前記入力画素を前記所定個数分単位の選択範囲を、所定画素数ずつずらす、あるいはずらさないことを規定するスキップ数を決定する。
【００１１】
本発明に係る画像の拡大縮小処理装置の第５の態様は、前記他の係数演算回路が、前記座標演算回路から与えられる前記内挿点入力画素間距離どうしの乗算および所定の係数の乗算とを行って、入力された前記内挿点入力画素間距離に対応した補間関数を演算すると共に、前記補間関数の演算結果を四捨五入することで、入力された前記内挿点入力画素間距離に対応した補間係数を算出する。
【００１２】
本発明に係る画像の拡大縮小処理方法は、入力画像データに対して画素を補間することでＵ／Ｄ倍（Ｕ、Ｄは自然数）に変換して出力画像データとする画像の拡大縮小処理方法であって、前記画像の拡大縮小処理で使用される補間係数を算出するステップ（ａ）と、前記入力画像データを構成する入力画素のそれぞれに対応するように、前記ステップ（ａ）で得られた前記補間係数を乗算するステップ（ｂ）と、前記ステップ（ｂ）で得られた乗算済みデータの加算を繰り返し、前記入力画素の所定個数分について前記乗算済みデータの総和を取るステップ（ｃ）と、前記所定個数分の前記入力画素について前記乗算済みデータの総和が得られるタイミングで前記乗算済みデータの総和を出力するステップ（ｄ）と、前記ステップ（ｄ）で得られる前記乗算済みデータの総和をシフト演算することで、前記出力画像データのビット数を前記入力画像データのビット数に調整するステップ（ｅ）とを備え、前記ステップ（ａ）で算出される前記補間係数は、その総和が、所定数の２の累乗と同じとなるように整数化されている。
【発明の効果】
【００１３】
本発明によれば、補間係数の総和が、所定数の２の累乗と同じとなるように整数化されているので、割り算器や浮動小数点演算器を用いることなしに画像を任意の倍数で拡大縮小処理を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】Ｕ／Ｄ倍任意拡大縮小処理を模式的に示すブロック図である。
【図２】画像をＵ倍に拡大する場合の伝達関数を示す図である。
【図３】画像を１／Ｄ倍に縮小する場合の伝達関数を示す図である。
【図４】画像をＵ／Ｄ倍に拡大する場合の伝達関数を示す図である。
【図５】画像をＵ／Ｄ倍に縮小する場合の伝達関数を示す図である。
【図６】キュービックコンボリューションによる補間を説明する図である。
【図７】本発明に係る実施の形態の画像の拡大縮小処理装置の基本構成を示すブロック図である。
【図８】Ｕ／Ｄ倍する場合のＰｉｔｃｈと初期値との関係を説明する図である。
【図９】Ｕ／Ｄ倍する場合のＰｉｔｃｈと初期値との関係を説明する図である。
【図１０】入力画像の画素データの選択範囲をスキップさせる動作を説明する図である。
【図１１】入力画像の画素データの選択範囲をスキップさせる動作を説明する図である。
【図１２】入力画像の画素データの選択範囲をスキップさせる動作を説明する図である。
【図１３】入力画像の画素データの選択範囲をスキップさせる動作を説明する図である。
【図１４】係数演算回路の構成を示すブロック図である。
【図１５】座標演算回路の構成を示すブロック図である。
【図１６】係数演算回路の構成を示すブロック図である。
【図１７】係数演算回路の構成を示すブロック図である。
【図１８】座標演算回路の変形例の構成を示すブロック図である。
【図１９】座標演算回路の変形例の構成を示すブロック図である。
【図２０】座標演算回路の変形例の構成を示すブロック図である。
【図２１】プロセッサの構成を説明するブロック図である。
【発明を実施するための形態】
【００１５】
＜始めに＞
実施の形態の説明に先立って、本発明の前提となる画像の拡大縮小処理について説明する。
【００１６】
＜伝達関数を用いた例＞
まず、伝達関数を用いた画像の拡大縮小処理の例として、冗長性を排除したＵ／Ｄ倍任意拡大縮小処理の手順について説明する。
【００１７】
図１は、Ｕ／Ｄ倍任意拡大縮小処理を模式的に示すブロック図であり、入力画像データｘ（ｎ）がアップサンプラＵＰに入力され、アップサンプリングされた画像データがローパスフィルタであるデジタルフィルタＤＦに与えられ、デジタルフィルタＤＦで帯域制限を受けた画像データｄ（ｎ）がダウンサンプラＤＷに与えられ、ダウンサンプリングされた出力画像データｙ（ｎ）が出力される構成となっている。
【００１８】
ここで、アップサンプラＵＰは、原画像信号の各信号間に画素Ｕ−１個分の０値を挿入する処理を行い、ダウンサンプラＤＷは、画像データからＤ画素ごとに残し、残りを間引く処理を行う。また、デジタルフィルタＤＦのインパルス応答はｈＵＤ（ｎ）であり、図１の処理は畳み込み演算を示す以下の数式（１）で表される。
【００１９】
【数１】
2015089115.tif 000003
【００２０】
ここで、画像をＵ倍に拡大する場合の理想的なフィルタのインパルス応答ｈＵ（ｎ）の伝達関数ＨＵ（ｚ）は、ｚ軸（ｚ＝ｅｘｐ（ｊωＴ））上の表現で図２のように表され、また、１／Ｄ倍に縮小する場合の理想的なフィルタのインパルス応答ｈＤ（ｎ）の伝達関数ＨＤ（ｚ）は図３のように表される。なお。図２および図３において、横軸は正規化角周波数（ω）を表し、縦軸は振幅を表している。
【００２１】
これに対し、Ｕ／Ｄ倍に拡大する場合、すなわちＵ＞Ｄの場合の理想的なフィルタのインパルス応答ｈＵＤ（ｎ）の伝達関数ＨＵＤ（ｚ）は図４のように表される。また、Ｕ／Ｄ倍に縮小する場合、すなわちＵ＜Ｄの場合の理想的なフィルタのインパルス応答ｈＵＤ（ｎ）の伝達関数ＨＵＤ（ｚ）は図５のように表される。なお、図４および図５において、横軸は正規化角周波数（ω）を表し、縦軸は振幅を表している。
【００２２】
なお、図４と図２に示す画像をＵ倍に拡大する場合の伝達関数ＨＵ（ｚ）は同じであり、共に遮断角周波数はπ／Ｕであるので、Ｕ倍に拡大する場合のフィルタを、Ｕ／Ｄ倍に拡大する場合のフィルタとして使用可能である。また、図５の画像をＵ／Ｄ倍に縮小する場合の伝達関数ＨＵＤ（ｚ）の遮断角周波数はπ／Ｄになる。
【００２３】
このように、デジタルフィルタＤＦをインパルス応答ｈＵＤ（ｎ）のフィルタとすることで、画像の拡大用フィルタと縮小用フィルタの２つを備える必要がなくなり、演算量を削減することができる。また、一旦、Ｕ倍に拡大する必要がないので、Ｕ倍に拡大した画像データを格納するためのメモリも不要となる。
【００２４】
ここで、画像を任意の倍数で拡大縮小する場合、フィルタを適切に選ばないと画素周期Ｕで碁盤目状のひずみ（チェス盤ひずみ（checkerboard distortion））が発生する。
【００２５】
これに対しては、以下の数式（２）で表されるように、インパルス応答ｈＵＤ（ｎ）を画素Ｕ個ごとの区切りとみなして、それぞれの区切りの０番目の総和、１番目の総和〜Ｕ−１番目の総和が、それぞれ一定値になるような伝達関数を設定することでチェス盤ひずみを回避することができる。
【００２６】
【数２】
2015089115.tif 000004
【００２７】
＜補間関数を用いた例＞
伝達関数を用いて、画像の拡大縮小を行う方法の他に、キュービックコンボリューションや線形補間、３次補間、ラグランジュ補間、スプライン補間、ランツォシュ補間などの補間関数を用いて画像データを内挿（補間）し、画像の拡大縮小を行う方法がある。
【００２８】
例えば、特開２００１−１８９８５０号公報では、キュービックコンボリューションを用いた内挿の例が説明されている。以下、キュービックコンボリューションを用いた内挿について説明する。
【００２９】
【数３】
2015089115.tif 000005
【００３０】
上記数式（３）はキュービックコンボリューションで用いる補間関数ｈ（ｔ）を表す数式である。
【００３１】
数式（３）において、ａは補間関数の性質を制御するための変数（−０．５〜−２）であり、ｔは隣接する画素から内挿点までの距離を表す。
【００３２】
また、図６にはキュービックコンボリューションの内挿点の一例を示している。図６においては、直列に等間隔で並んだ４点の画素Ｐｉ、Ｐｉ＋１、Ｐｉ＋２およびＰｉ＋３がある場合に、画素Ｐｉ＋１と画素Ｐｉ＋２との間に内挿点Ｘが内挿される場合を示している。
【００３３】
そして、内挿点Ｘからの画素Ｐｉ、Ｐｉ＋１、Ｐｉ＋２およびＰｉ＋３までの距離をそれぞれｔｉ、ｔｉ＋１、ｔｉ＋２およびｔｉ＋３とし、画素間の距離を１．０として示している。それぞれの画素に対する補間関数ｈ（ｔｉ）、ｈ（ｔｉ＋１）、ｈ（ｔｉ＋２）およびｈ（ｔｉ＋３）は以下の数式（４）で表される。なお、距離ｔｉ、ｔｉ＋１ｔｉ＋２およびｔｉ＋３は内挿点入力画素間距離と呼称する場合もある。
【００３４】
【数４】
2015089115.tif 000006
【００３５】
上記数式（４）で表される補間関数ｈ（ｔｉ）、ｈ（ｔｉ＋１）、ｈ（ｔｉ＋２）およびｈ（ｔｉ＋３）を画素Ｐｉ、Ｐｉ＋１、Ｐｉ＋２およびＰｉ＋３の座標にそれぞれ掛け合わせた総和が内挿点Ｘの位置となる。これを表す数式が、以下に示す数式（５）である。
【００３６】
【数５】
2015089115.tif 000007
【００３７】
＜実施の形態＞
＜拡大縮小処理装置の基本構成＞
図７は本発明に係る実施の形態の画像の拡大縮小処理装置１００の基本構成を示すブロック図である。なお、以下においては、拡大縮小処理装置１００は、図１に示したＵ／Ｄ倍任意拡大縮小処理を行うものとして説明する。
【００３８】
図７に示されるように、画像の拡大縮小処理装置１００は、ＤＭＡ（Direct Memory Access）バス１９を介して主記憶装置３０に格納された入力画像データｘ（ｎ）を直接に読み出すＤＭＡ読み取り装置（ＤＭＡＲ）５と、ＤＭＡバス１９を介して主記憶装置３０に出力画像データｙ（ｎ）を直接に書き込むＤＭＡ書き込み装置（ＤＭＡＷ）６とをデータ入出力部として備えている。
【００３９】
ＤＭＡＲ５が読み出した１画素分の入力画像データｘ（ｎ）は、セレクタ１を介してピンポンバッファ１０に書き込まれる。ピンポンバッファ１０は、セレクタ１の２つの出力と、セレクタ２の２つの入力との間に互いに並列に接続されたバッファ１１およびバッファ１２を有しており、バッファ１１および１２は書き込み用と読み取り用に順番に入れ替わるように制御される。なお、ピンポンバッファ１０は、デュアルポートＳＲＡＭで構成することも可能である。デュアルポートＳＲＡＭは、データを入出力するためのポートを２つ有し、一方のポートからデータを読み出すのと同時に他方のポートからデータを書き込むことが可能であり、バッファ１１および１２を有する場合と同様の動作が可能である。
【００４０】
セレクタ１は、バッファ１１および１２のうち、書き込み可能な方のバッファを選択し、入力画像データｘ（ｎ）を書き込む。セレクタ２は、バッファ１１および１２のうち、入力画像データｘ（ｎ）が書き込み済みのバッファから画像データを読み出す。
【００４１】
従って、例えば、バッファ１１に入力画像データｘ（ｎ）が書き込まれているタイミングでは、バッファ１２から、既に書き込まれた入力画像データｘ（ｎ）が読み出されていることとなる。
【００４２】
なお、セレクタ１による書き込み可能なバッファの選択は制御装置７によりセレクタ１が制御されることで実行され、セレクタ２による書き込み済みのバッファの選択は制御装置７によりセレクタ２が制御されることで実行される。
【００４３】
セレクタ２を介してピンポンバッファ１０から読み出された入力画像データｘ（ｎ）は、乗算器８に入力され、また、デジタルフィルタＤＦ（図１）のインパルス応答ｈＵＤ（ｎ）を補間係数として演算する係数演算回路２０からは、セレクタ３を介して補間係数が出力され、乗算器８に入力される。
【００４４】
なお、係数演算回路２０では、拡大、縮小の倍率にそれぞれ対応した補間係数、例えば、２倍、３倍、あるいは１／２倍、３／４倍などに対応した補間係数を制御装置７が係数演算回路２０を制御して算出することができる。
【００４５】
乗算器８では、入力画像データｘ（ｎ）と補間係数ｈＵＤ（ｎ）の乗算を行い、乗算済みデータが加算器９に与えられる。加算器９には、フリップフロップ１３内に格納されている加算済みデータがセレクタ４を介して与えられ、加算器９で、乗算器８から与えられる乗算済みデータと加算される。
【００４６】
乗算済みデータが加算された加算済みデータは、フリップフロップ１３に格納されることでフリップフロップ１３のデータを更新する。なお、フリップフロップ１３の初期値は０であり、１画素分の画像データに対して最初に加算器９で乗算済みデータに加算されるのは初期値０である。
【００４７】
加算器９での加算は数式（１）で表されるｈＵＤ（Ｄｎ−Ｕｋ）とｘ（ｋ）の積の累積算である。なお、乗算器８と加算器９とをそれぞれ複数備えることで、演算の並列性が高まり処理速度を高速化することが可能である。
【００４８】
セレクタ４は、予め設定された選択範囲の画素数分の画像データに対して数式（１）の累積算が終了するまでは加算器３に対してフリップフロップ１３に格納されたデータを与えるが、予め設定された選択範囲の画素数分の画像データに対する累積算が終了した後はフリップフロップ１３に格納されたデータをシフト回路１４に与え、フリップフロップ１３が０に初期化される。なお、セレクタ４の選択動作は制御装置７により制御される。
【００４９】
シフト回路１４は、シフトレジスタなどで構成され、セレクタ４より出力された累積演算結果のデータをシフト演算することで、出力画像データのビット数を入力画像データのビット数と一致させクリップ回路１５に与える。なお、シフト回路１４は、出力画像データのビット数は入力画像データのビット数と一致させる場合や演算精度を高くするために出力画像データのビット数が入力画像より大きい場合や演算精度を低くするために出力画像データのビット数が入力画像より小さい場合がある。
【００５０】
クリップ回路１５は、シフト回路１４より出力され、ビット数が調整された演算結果のデータを、予め設定される最小値と最大値の範囲にデータを切り取り、出力画像データｙ（ｎ）を生成する。出力画像データｙ（ｎ）はＤＭＡＷ６からＤＭＡバス１９を介して、主記憶装置３０に直接に書き込まれる。
【００５１】
＜出力画像データの作成方法＞
このようにして得られた出力画像データｙ（ｎ）は、予め設定された画素数分の入力画像データに基づいて作成された１画素分の画像データであり、同じ処理を異なる選択範囲の予め設定された画素数分の画素に対して行い、次の出力画像データｙ（ｎ）を得る。
【００５２】
これを、１画像の全ての画素に対して繰り返し実行することで、数式（１）に基づいて拡大あるいは縮小された画像が得られる。
【００５３】
図７に示す拡大縮小処理装置１００においては、伝達関数からインパルス応答ｈＵＤ（ｎ）を算出し、補間係数を係数演算回路２０で算出する構成を採っている。
【００５４】
ここで、図６に示される内挿点Ｘを出力ｙ（０）とし、その座標を初期値ｂ０とし、出力ｙ（ｊ）の座標をｂｊとすると、座標ｂｊと座標ｂ０の関係は以下の数式（６）の第１式のように表され、また、ｔｉ、ｔｉ＋１、ｔｉ＋２およびｔｉ＋３は、第２式〜第５式のように表される。
【００５５】
【数６】
2015089115.tif 000008
【００５６】
なお、上記数式（６）の第３式のＩＮＴ（ｂｊ）は、座標ｂｊから小数点以下を切り捨てる演算を表し、また、座標ｂｊの値は前の座標ｂｊ−１の整数部より桁上がりした値で規定される。
【００５７】
また、上記数式（６）は、以下の数式（７）のように変形することができる。
【００５８】
【数７】
2015089115.tif 000009
【００５９】
ここで、図８を用いて、Ｕ／Ｄ倍する場合のＰｉｔｃｈと初期値ｂ０の関係を説明する。図８においては、入力画像の画素データがｘ（０）、ｘ（１）、・・・ｘ（Ｄ−２）およびｘ（Ｄ−１）のＤ個、出力画像の画素データがｙ（０）、ｙ（１）、ｙ（２）・・・ｙ（Ｕ／２−１）、ｙ（Ｕ／２）・・・ｙ（Ｕ−３）、ｙ（Ｕ−２）、ｙ（Ｕ−１）のＵ個あるものとして示している。
【００６０】
入力画像の画素データ間の距離を１．０とし、出力画像の画素データ間の距離をＰｉｔｃｈとすると、図８より以下の数式（８）を得ることができる。
【００６１】
【数８】
2015089115.tif 000010
【００６２】
ここで、Ｐｉｔｃｈ＝Ｄ／Ｕとして数式（８）に代入すると、初期値ｂ０は以下の数式（９）で表すことができる。
【００６３】
【数９】
2015089115.tif 000011
【００６４】
なお、図８では、入力される画像と出力される画像の中心を同じにする場合を示しており、この場合、Ｕ＝３、Ｄ＝２の場合（３／２倍）では、初期値はｂ０＝−１／６となる。
【００６５】
図８のように入力される画像と出力される画像の中心を同じにすると、出力画像の画素データｙ（０）およびｙ（Ｕ−１）が、入力画像の画素データｘ（０）〜ｘ（Ｄ−１）の外側に位置することになる。出力画像の画素データｙ（０）およびｙ（Ｕ−１）が、それぞれ入力画像の画素データｘ（０）およびｘ（Ｄ−１）と同じ位置になるようにしたい場合は、初期値ｂ０＝０とすることで図９のようにすることができる。この場合、Ｐｉｔｃｈは以下の数式（１０）で表すことができる。
【００６６】
【数１０】
2015089115.tif 000012
【００６７】
また、図６に示したように、４点の画素に対して１つの内挿点を設定する場合を例に採ると、出力画像の画素データは、入力画像の画素データの選択範囲を所定方向にずらすことで得られる。以下、その動作を図１０〜図１３を用いて説明する。
【００６８】
図１０においては、入力画像の画素データｘ（−１）、ｘ（０）、ｘ（１）およびｘ（２）に基づいて内挿点となる出力画像データｙ（０）を作成する（補間する）動作を模式的に表しており、画素データｘ（−１）、ｘ（０）、ｘ（１）およびｘ（２）に、それぞれ係数演算回路２０で算出した補間係数を乗算することで出力画像の画素データｙ（０）を得る。
【００６９】
なお、画素データｘ（−１）は、画像で言うと左端の画素のない領域の画素データであり、画像を折り返して使用する対称拡張法により画素データが生成されている。
【００７０】
また、図１１においては、入力画像の画素データｘ（−１）、ｘ（０）、ｘ（１）およびｘ（２）に基づいて内挿点となる出力画像の画素データｙ（１）を補間する動作を模式的に表しており、画素データｘ（−１）、ｘ（０）、ｘ（１）およびｘ（２）に、それぞれ係数演算回路２０で算出した補間係数を乗算することで出力画像の画素データｙ（１）を得る。
【００７１】
また、図１２においては、画素データの選択範囲を右に１画素分ずらし（スキップし）、入力画像の画素データｘ（０）、ｘ（１）、ｘ（２）およびｘ（３）に基づいて内挿点となる出力画像の画素データｙ（２）を補間する動作を模式的に表しており、画素データｘ（０）、ｘ（１）、ｘ（２）およびｘ（３）に、それぞれ係数演算回路２０で算出した補間係数を乗算することで出力画像の画素データｙ（２）を得る。
【００７２】
また、図１３においては、画素データの選択範囲を右に１画素分スキップし、入力画像の画素データｘ（１）、ｘ（２）、ｘ（３）およびｘ（４）に基づいて内挿点となる出力画像の画素データｙ（３）を補間する動作を模式的に表しており、画素データｘ（１）、ｘ（２）、ｘ（３）およびｘ（４）に、それぞれ係数演算回路２０で算出した補間係数を乗算することで出力画像の画素データｙ（３）を得る。
【００７３】
なお、出力画像のｙ（４）の計算に際しては画素データの選択範囲はスキップせずに、補間係数を変えることで対応する。
【００７４】
このように、補間対象となる入力画像の画素データの選択範囲を、画像の左端から所定画素数ずつ右にスキップさせたり、あるいはスキップさせずに、係数演算回路２０で算出した補間係数を乗算することで出力画像データを得る。
【００７５】
このような入力画像の画素データの選択範囲のスキップ数については、以下に示す数式（１１）により決定することができる。
【００７６】
【数１１】
2015089115.tif 000013
【００７７】
上記数式（１１）はフロア関数を表しており、隣り合う画素の座標をそれぞれフロア関数で表し、その差によりスキップ数が決定されることを表している。フロア関数は数値を整数化する関数であり、例えば「１．５」をフロア関数で処理すると「１」、「２．５」ならば「２」となる。
【００７８】
以上説明した方法により、予め設定された画素数分の入力画像データに基づいて出力画像データを得ることができる。
【００７９】
＜補間係数の算出方法＞
補間係数の算出には種々の方法が考えられるが、例えば、キュービックコンボリューションを用いた内挿法を説明する数式（４）を、整数の乗算と加減算とデータのシフトのみで実現できるように下記の数式（１２）のように変形することができる。
【００８０】
【数１２】
2015089115.tif 000014
【００８１】
数式（１２）においては、補間関数ｈ（ｔｉ）に２の累乗２ｎ（ｎは係数の精度を表し、正の整数）を乗算してｒｏｕｎｄ演算した値をｈ（ｔｉ）’とし、補間関数ｈ（ｔｉ＋１）に２ｎを乗算してｒｏｕｎｄ演算した値をｈ（ｔｉ＋１）’とし、補間関数ｈ（ｔｉ＋２）に２ｎを乗算してｒｏｕｎｄ演算した値をｈ（ｔｉ＋２）’とし、２ｎからｈ（ｔｉ）’、ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を差し引いた値をｈ（ｔｉ＋３）’としている。このため、上記数式（１２）を図７に示した係数演算回路２０に実装する場合、距離ｔｉ＋３に対応する補間係数については減算により算出することができる。
【００８２】
図１４は、係数演算回路２０の構成を示すブロック図である。図１４に示すように、係数演算回路２０は、制御装置７に接続された座標演算回路２０１、座標演算回路２０１に接続された係数演算回路２０２、２０３および２０４、係数演算回路２０２〜２０４の出力を受ける係数演算回路２０５を有している。なお、係数演算回路２０２〜２０４の出力は、それぞれセレクタ３にも与えられる。
【００８３】
係数演算回路２０５は、係数演算回路２０２〜２０４の出力を加算する加算器２０５１と、精度設定部２０５０で設定された２ｎから係数演算回路２０２〜２０４の出力の加算値を減算する減算器２０５２とを有し、減算器２０５２の出力がセレクタ３に与えられる構成となっている。なお、精度設定部２０５０では、補間係数の精度に合わせてｎの値を設定する部位であり、補間係数の精度が１０ビットであればｎ＝１０となり、２１０＝１０２４となる。
【００８４】
係数演算回路２０は、制御装置７からの制御信号により演算を開始し、座標演算回路２０１では、数式（７）に基づいて内挿点の座標ｂｊを算出する。
【００８５】
ここで、数式（１２）を係数演算回路２０に実装した場合の座標演算回路２０１の構成について図１５を用いて説明する。図１５に示すように、座標演算回路２０１は、制御装置７に接続される加算器２０１１、加算器２０１１の出力を受けるフリップフロップ２０１２、フリップフロップ２０１２の出力を分岐して出力するセレクタ２０１３を有している。セレクタ２０１３は、フリップフロップ２０１２の出力を小数演算回路２０１４、整数演算回路２０１５および加算器２０１１に与え、小数演算回路２０１４では、演算結果の小数部分を切り捨てる演算を行い、その結果をｔｉ＋１として出力する。なお、この距離ｔｉ＋１は、他の距離を算出するために用いられるので、便宜的に基準距離と呼称する場合もある。
【００８６】
また、小数演算回路２０１４の出力は加算器２０１８に与えられ、加算器２０１８において数値１．０との加算を行って、その結果をｔｉとして出力する。
【００８７】
また、小数演算回路２０１４の出力は減算器２０１９に与えられ、減算器２０１９において数値１．０との減算を行って、その結果をｔｉ＋２として出力する。
【００８８】
座標演算回路２０１では、制御装置７からＰｉｔｃｈがＤ／Ｕとして与えられ、これに先に得られた内挿点の座標を加算することで新たな内挿点の座標を得るが、最初の座標の算出に際しては、初期値ｂ０がフリップフロップ２０１２に与えられ、Ｄ／Ｕと加算されて座標ｂｊとなる。
【００８９】
その後の内挿点の座標の算出に際しては、フリップフロップ２０１２に格納された現在の座標ｂｊとＤ／Ｕとの加算を加算器２０１１で行って次の座標ｂｊ＋１を得る。
【００９０】
また、整数演算回路２０１５では、フリップフロップ２０１２の出力をフロア関数を用いて整数化する演算を行い、その結果を、加算器２０１１の出力をフロア関数を用いて整数化する整数演算回路２０１６での演算結果から減算器２０１７を用いて減算することで、スキップ数を算出し、制御装置７に与える。これは、数式（１１）を用いて説明した演算に該当する。
【００９１】
内挿点の座標ｂｊが得られると、ｔｉ、ｔｉ＋１およびｔｉ＋２が求まるので、係数演算回路２０２〜２０４では数式（４）から補間関数ｈ（ｔｉ）、ｈ（ｔｉ＋１）およびｈ（ｔｉ＋２）を求め、数式（１２）に基づいて、それぞれ補間係数ｈ（ｔｉ）’、ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を算出する。また、係数演算回路２０５では、２ｎから補間係数ｈ（ｔｉ）’、ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を差し引いた値を補間係数ｈ（ｔｉ＋３）’として算出する。
【００９２】
これらの補間係数はセレクタ３を介して乗算器８に与えられ、入力画像の画素データに乗算される。
【００９３】
なお、上述したように、座標演算回路２０１では、数式（１１）を用いて、入力画像の画素データの選択範囲をスキップさせるスキップ数も算出して制御装置７に与え、制御装置７では、当該スキップ数に基づいて、次の演算対象となる入力画像の画素データを決定する。
【００９４】
ここで、係数演算回路２０２〜２０４における補間係数の算出について図１６および図１７を用いて説明する。
【００９５】
図１６は、補間係数ｈ（ｔｉ）’およびｈ（ｔｉ＋３）’を算出する係数演算系統図であり、併せて係数演算回路２０２の構成を示す図である。
【００９６】
図１６において、「ｔ」は座標演算回路２０１から出力された距離ｔｉまたはｔｉ＋３の値であり、簡単化のため「ｔ」としている。なお、先に説明したように数式（１２）を実装する場合は、距離ｔｉ＋３の補間係数については座標演算回路２０５で算出するので、係数演算回路２０２では補間係数ｈ（ｔｉ）’を算出することになる。
【００９７】
図１６に示すように、係数演算回路２０２は、座標演算回路２０１から出力されたｔの値どうしを、乗算器ＭＬ１において乗算することでｔ２を算出し、乗算器ＭＬ１が出力するｔ２の値と座標演算回路２０１から出力されたｔの値とを乗算器ＭＬ２において乗算することでｔ３を算出する。
【００９８】
その後、ｔ、ｔ２およびｔ３に対して、それぞれ乗算器ＭＬ３、ＭＬ４およびＭＬ５において、定数８ａ、−５ａおよびａを乗算し、それぞれの演算結果と−４ａとを加算器ＡＤ１で加算することで関数ｈ（ｔ）を得る。そして、当該関数ｈ（ｔ）の演算結果をｒｏｕｎｄ演算回路ＲＤ１で、例えば四捨五入することで補間係数ｈ（ｔ）’を得る。なお、この場合、補間係数ｈ（ｔ）’は補間係数ｈ（ｔｉ）’である。
【００９９】
図１７は、補間係数ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を算出する係数演算系統図であり、併せて係数演算回路２０３および２０４の構成を示す図である。
【０１００】
図１７において、「ｔ」は座標演算回路２０１から出力されたｔｉ＋１またはｔｉ＋２の値であり、簡単化のため「ｔ」としている。
【０１０１】
図１７に示すように、係数演算回路２０３（２０４も同じ）は、座標演算回路２０１から出力されたｔの値どうしを、乗算器ＭＬ１１において乗算することでｔ２を算出し、乗算器ＭＬ１１が出力するｔ２の値と座標演算回路２０１から出力されたｔの値とを乗算器ＭＬ１２において乗算することでｔ３を算出する。
【０１０２】
その後、ｔ２およびｔ３に対して、それぞれ乗算器ＭＬ１３およびＭＬ１４において、定数ａ＋２および−（ａ＋３）乗算し、それぞれの演算結果と１とを加算器ＡＤ１１で加算することで関数ｈ（ｔ）を得る。そして、当該関数ｈ（ｔ）の演算結果をｒｏｕｎｄ演算回路ＲＤ１１で、例えば四捨五入することで補間係数ｈ（ｔ）’を得る。なお、この場合、補間係数ｈ（ｔ）’は補間係数ｈ（ｔｉ＋１）’またはｈ（ｔｉ＋２）’である。
【０１０３】
＜変形例＞
なお、上記の説明では、数式（１２）に示されるように、ｈ（ｔｉ）’、ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を個々に求めた後、２ｎからｈ（ｔｉ）’、ｈ（ｔｉ＋１）’およびｈ（ｔｉ＋２）’を差し引いた値をｈ（ｔｉ＋３）’としていたが、これに限定されるものではない。
【０１０４】
例えば、以下に示す数式（１３）のように、ｈ（ｔｉ＋１）’、ｈ（ｔｉ＋２）’、ｈ（ｔｉ＋３）’を個々に求めた後、２ｎからｈ（ｔｉ＋１）’、ｈ（ｔｉ＋２）’、ｈ（ｔｉ＋３）’を差し引くことでｈ（ｔｉ）’を求めても良い。
【０１０５】
【数１３】
2015089115.tif 000015
【０１０６】
ここで、数式（１３）を係数演算回路２０に実装した場合の座標演算回路２０１の構成について図１８を用いて説明する。図１８に示すように、座標演算回路２０１は、制御装置７に接続される加算器２０１１、加算器２０１１の出力を受けるフリップフロップ２０１２、フリップフロップ２０１２の出力を分岐して出力するセレクタ２０１３を有している。セレクタ２０１３は、フリップフロップ２０１２の出力を小数演算回路２０１４、整数演算回路２０１５および加算器２０１１に与え、小数演算回路２０１４では、演算結果の小数部分を切り捨てる演算を行い、その結果をｔｉ＋１として出力する。
【０１０７】
また、小数演算回路２０１４の出力は減算器２０２０に与えられ、減算器２０２０において数値１．０との減算を行って、その結果をｔｉ＋２として出力する。
【０１０８】
また、小数演算回路２０１４の出力は減算器２０２１に与えられ、減算器２０２１において数値２．０との減算を行って、その結果をｔｉ＋３として出力する。
【０１０９】
この場合、係数演算回路２０２〜２０４のそれぞれに、距離ｔｉ＋１、ｔｉ＋２、ｔｉ＋３を与えることになるので、係数演算回路２０２および２０３では図１７に示した係数演算を行う構成を採り、係数演算回路２０４では図１６に示した係数演算を行う構成を採ることとなる。
【０１１０】
なお、その他、図１５に示した座標演算回路２０１と同一の構成については同一の符号を付し、重複する説明は省略する。
【０１１１】
また、以下に示す数式（１４）のように、ｈ（ｔｉ）’、ｈ（ｔｉ＋２）’、ｈ（ｔｉ＋３）’を個々に求めた後、２ｎからｈ（ｔｉ）’、ｈ（ｔｉ＋２）’、ｈ（ｔｉ＋３）’を差し引くことでｈ（ｔｉ＋１）’を求めても良い。
【０１１２】
【数１４】
2015089115.tif 000016
【０１１３】
ここで、数式（１４）を係数演算回路２０に実装した場合の座標演算回路２０１の構成について図１９を用いて説明する。図１９に示すように、座標演算回路２０１は、制御装置７に接続される加算器２０１１、加算器２０１１の出力を受けるフリップフロップ２０１２、フリップフロップ２０１２の出力を分岐して出力するセレクタ２０１３を有している。セレクタ２０１３は、フリップフロップ２０１２の出力を小数演算回路２０１４、整数演算回路２０１５および加算器２０１１に与え、小数演算回路２０１４では、演算結果の小数部分を切り捨てる演算を行い、その結果をｔｉ＋１として出力する。
【０１１４】
また、小数演算回路２０１４の出力は加算器２０２２に与えられ、加算器２０２２において数値１．０との加算を行って、その結果をｔｉとして出力する。
【０１１５】
また、小数演算回路２０１４の出力は減算器２０２３に与えられ、減算器２０２３において数値１．０との減算を行って、その結果をｔｉ＋２として出力する。
【０１１６】
また、また、小数演算回路２０１４の出力は減算器２０２４に与えられ、減算器２０２４において数値２．０との減算を行って、その結果をｔｉ＋３として出力する。
【０１１７】
この場合、係数演算回路２０２〜２０４のそれぞれに、距離ｔｉ、ｔｉ＋２、ｔｉ＋３を与えることになるので、係数演算回路２０２および２０４では図１６に示した係数演算を行う構成を採り、係数演算回路２０３では図１７に示した係数演算を行う構成を採ることとなる。
【０１１８】
なお、その他、図１５に示した座標演算回路２０１と同一の構成については同一の符号を付し、重複する説明は省略する。
【０１１９】
また、以下に示す数式（１５）のように、ｈ（ｔｉ）’、ｈ（ｔｉ＋１）’、ｈ（ｔｉ＋３）’を個々に求めた後、２ｎからｈ（ｔｉ）’、ｈ（ｔｉ＋１）’、ｈ（ｔｉ＋３）’を差し引くことでｈ（ｔｉ＋２）’を求めても良い。
【０１２０】
【数１５】
2015089115.tif 000017
【０１２１】
ここで、数式（１５）を係数演算回路２０に実装した場合の座標演算回路２０１の構成について図２０を用いて説明する。図２０に示すように、座標演算回路２０１は、制御装置７に接続される加算器２０１１、加算器２０１１の出力を受けるフリップフロップ２０１２、フリップフロップ２０１２の出力を分岐して出力するセレクタ２０１３を有している。セレクタ２０１３は、フリップフロップ２０１２の出力を小数演算回路２０１４、整数演算回路２０１５および加算器２０１１に与え、小数演算回路２０１４では、演算結果の小数部分を切り捨てる演算を行い、その結果をｔｉ＋１として出力する。
【０１２２】
また、小数演算回路２０１４の出力は加算器２０２５に与えられ、加算器２０２５において数値１．０との加算を行って、その結果をｔｉとして出力する。
【０１２３】
また、小数演算回路２０１４の出力は減算器２０２６に与えられ、減算器２０２６において数値２．０との減算を行って、その結果をｔｉ＋３として出力する。
【０１２４】
この場合、係数演算回路２０２〜２０４のそれぞれに、距離ｔｉ、ｔｉ＋１、ｔｉ＋３を与えることになるので、係数演算回路２０２および２０４では図１６に示した係数演算を行う構成を採り、係数演算回路２０３では図１７に示した係数演算を行う構成を採ることとなる。
【０１２５】
なお、その他、図１５に示した座標演算回路２０１と同一の構成については同一の符号を付し、重複する説明は省略する。
【０１２６】
以上の説明では、画像を拡大する場合を例に採って説明したが、画像を縮小する場合も同様に本発明を適用できることは言うまでもない。
【０１２７】
また、以上の説明では、水平方向についての画像の拡大縮小についてのみ述べたが、垂直方向についても本発明を適用することで画像の拡大縮小を行うことができることは言うまでもない。その場合、水平方向と垂直方向とで別々に発明を適用すれば良い。
【０１２８】
＜プロセッサでの実現＞
以上の説明においては画像の拡大縮小処理をハードウェアを用いて実現する構成を示したが、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサ上で動作するソフトウェアにより実現することも可能である。
【０１２９】
ＣＰＵは一般的に図２１に示すような構成を有している。すなわち、命令をメモリから読み出す命令フェッチャ（Instruction fetcher）１０１、命令フェッチャ１０１が読み出した命令を処理する命令デコーダ（Instruction decoder）１０２、ＣＰＵ内のメモリとして動作するレジスタ（Registers）１０３、レジスタ１０３に格納されたデータに基づいて四則演算や論理演算などの算術的な処理を行うＡＬＵ（Arithmetic and Logic Unit）１０４および図示されない外部のメモリとの間でのデータの授受を行うメモリインターフェース１０５を有している。
【０１３０】
このような構成を有するプロセッサ上で本発明に係る画像の拡大縮小処理を実現する場合には、入力画像データに対して画素を補間することでＵ／Ｄ倍（Ｕ、Ｄは自然数）に変換して出力画像データとするために、ＡＬＵ１０４を使用して、予め拡大縮小処理で使用される補間係数を算出する係数演算を行い、算出した補間係数をレジスタ１０３または図示されないメモリに保存しておく。
【０１３１】
そして、入力画像データを構成する入力画素のそれぞれに対応するように、レジスタ１０３または図示されないメモリに保存された補間係数を乗算するステップ、得られた乗算済みデータの加算を繰り返し、入力画素の所定個数分について乗算済みデータの総和を取るステップ、所定個数分の入力画素について乗算済みデータの総和が得られるタイミングで乗算済みデータの総和を出力するステップ、得られた乗算済みデータの総和をシフト演算することで、出力画像データのビット数を入力画像データのビット数に調整するステップをＡＬＵ１０４で実行することで画像の拡大縮小処理を実現することができる。
【０１３２】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【０１３３】
４  セレクタ
８  乗算器
９  加算器
１４  シフト回路
２０  係数演算回路
２０１  座標演算回路
２０２〜２０５  係数演算回路
【図１】
2015089115.tif 000018
【図２】
2015089115.tif 000019
【図３】
2015089115.tif 000020
【図４】
2015089115.tif 000021
【図５】
2015089115.tif 000022
【図６】
2015089115.tif 000023
【図７】
2015089115.tif 000024
【図８】
2015089115.tif 000025
【図９】
2015089115.tif 000026
【図１０】
2015089115.tif 000027
【図１１】
2015089115.tif 000028
【図１２】
2015089115.tif 000029
【図１３】
2015089115.tif 000030
【図１４】
2015089115.tif 000031
【図１５】
2015089115.tif 000032
【図１６】
2015089115.tif 000033
【図１７】
2015089115.tif 000034
【図１８】
2015089115.tif 000035
【図１９】
2015089115.tif 000036
【図２０】
2015089115.tif 000037
【図２１】
2015089115.tif 000038