(57)【特許請求の範囲】
【請求項１】
空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置において、
局所的なエネルギーの計算が行われる前に、前記原画像のエッジを太くするエッジ変換手段と、
前記原画像の局所的なエネルギーを計算するエネルギー計算手段と、
前記エネルギー計算手段により計算された前記局所的なエネルギーに基づいて、エッジの方向を検出する検出手段と、
前記検出手段により検出された前記エッジの方向に基づいて、原画像の画素から新たな画素を補間する補間手段と、
前記エネルギー計算手段により計算された前記局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調手段と
を備え、
前記エッジ変換手段は、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値を、他の２つの画素の値の平均値とする
画像処理装置。
【請求項２】
前記補間手段と前記エッジ強調手段は、前記原画像の垂直方向と水平方向のそれぞれの方向について処理を行う
請求項１に記載の画像処理装置。
【請求項３】
前記補間手段は、検出された前記エッジの方向の２つの画素から新たな１つの画素を補間する
請求項１に記載の画像処理装置。
【請求項４】
前記補間手段は、前記検出手段により前記エッジが検出されないとき、線形補間処理を行う
請求項１に記載の画像処理装置。
【請求項５】
前記補間手段により補間された画素の上の画素と、前記補間された画素との間の画素値の変化の方向と、前記補間された画素と、前記補間された画素の下の画素との間の画素値の変化の方向が異なる方向である場合、前記補間手段は、線形補間処理を行う
請求項１に記載の画像処理装置。
【請求項６】
前記エネルギー計算手段は、前記原画像の大きさに対応するエネルギーマップを作成する
請求項１に記載の画像処理装置。
【請求項７】
前記補間手段と前記エッジ強調手段の処理は、前記値Ｚの値が２より大きい場合、前記値Ｚの値が２であるときの処理をＮ回行った後、前記値Ｚの値が２以下であるときの処理を１回行う
請求項１に記載の画像処理装置。
【請求項８】
空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置の画像処理方法において、
局所的なエネルギーの計算が行われる前に、前記原画像のエッジを太くするエッジ変換ステップと、
前記原画像の局所的なエネルギーを計算するエネルギー計算ステップと、
前記エネルギー計算ステップの処理により計算された前記局所的なエネルギーに基づいて、エッジの方向を検出する検出ステップと、
前記検出ステップの処理により検出された前記エッジの方向に基づいて、原画像の画素から新たな画素を補間する補間ステップと、
前記エネルギー計算ステップの処理により計算された前記局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調ステップと
を含み、
前記エッジ変換ステップの処理においては、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値が、他の２つの画素の値の平均値とされる
画像処理方法。
【請求項９】
空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置のプログラムにおいて、
局所的なエネルギーの計算が行われる前に、前記原画像のエッジを太くするエッジ変換ステップと、
前記原画像の局所的なエネルギーを計算するエネルギー計算ステップと、
前記エネルギー計算ステップの処理により計算された前記局所的なエネルギーに基づいて、エッジの方向を検出する検出ステップと、
前記検出ステップの処理により検出された前記エッジの方向に基づいて、原画像の画素から新たな画素を補間する補間ステップと、
前記エネルギー計算ステップの処理により計算された前記局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調ステップと
を含み、
前記エッジ変換ステップの処理においては、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値が、他の２つの画素の値の平均値とされる
コンピュータが読み取り可能なプログラムが記録されている記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理装置および方法、並びに記録媒体に関し、特に、静止画および動画像など様々なソースに適用でき、そして人間の視覚系にアピールする方法で鮮明で自然なエッジを再描画し、高画質な高解像度画像を得ることができるようにした画像処理装置および方法、並びに記録媒体に関する。
【０００２】
【従来の技術】
デジタル画像に基づく機器(デジタルカメラやカメラ一体型ビデオテープレコーダなど)の使用機会が多くなるにつれ、いわゆるデジタルズーム処理の必要性が高まってきた。それにともない、デジタル画像の解像度を上げるための様々な方法が開発されてきた。従来の主な手法として、以下の３つの手法が存在する。
第１の手法は、最近隣画素をそのまま用いた補間方法(0次補間(zero-order-hold interpolation))であり、特にハードウェアの観点で簡単な補間法である。第２の手法は、最近隣２画素の平均値を計算し、垂直方向と水平方向に新しい画素を挿入する双線形補間方法(bilinear  interpolation)であり、隣接画素の補間にはかなり良い手法だと考えられている。
第３の手法は、ノイズにも強く、モザイクパターンが出現しない、B-スプライン(B-spline)補間法である。
【０００３】
【発明が解決しようとする課題】
しかしながら、第１の方法は、特に高倍率で効果が少なく、拡大された画像には、有名な「モザイクパターン」というノイズが出てしまう。そして、エッジが大幅に破壊され、非常に目障りなジャギーが出現してしまう。
第２の方法は、画像全体がぼやけてしまうという欠点があり、画像の解像度は改善されない。加えて、高倍率の際にモザイク現象がたくさん出てしまう。
第３の方法は、画像はかなりぼやけてしまい、それにもかかわらず相対的に見るとハードウェアは複雑になってしまう。
本発明は、このような状況に鑑みてなされたものであり、少ない計算処理で、効果的かつ簡単に、コンピュータグラフィックスから写真までの範囲に及ぶ様々なタイプの静止画および動画像の解像度を変更することができるようにするものである。
【０００４】
【課題を解決するための手段】
本発明の画像処理装置は、空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置において、局所的なエネルギーの計算が行われる前に、原画像のエッジを太くするエッジ変換手段と、原画像の局所的なエネルギーを計算するエネルギー計算手段と、エネルギー計算手段により計算された局所的なエネルギーに基づいて、エッジの方向を検出する検出手段と、検出手段により検出されたエッジの方向に基づいて、原画像の画素から新たな画素を補間する補間手段と、エネルギー計算手段により計算された局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調手段とを備え、エッジ変換手段は、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値を、他の２つの画素の値の平均値とする。
【０００８】
前記補間手段とエッジ強調手段には、原画像の垂直方向と水平方向のそれぞれの方向について処理を行わせるようにすることができる。
【０００９】
前記補間手段には、検出されたエッジの方向の２つの画素から新たな１つの画素を補間させるようにすることができる。
【００１０】
前記補間手段には、検出手段により前記エッジが検出されないとき、線形補間処理を行わせるようにすることができる。
【００１１】
前記補間手段により補間された画素の局所的構造の整合性を判定する整合性判定手段をさらに設けさせ、整合性判定手段により整合性がないと判定されたとき、補間手段には、線形補間処理を行わせるようにすることができる。
【００１２】
前記エネルギー計算手段には、原画像の大きさに対応するエネルギーマップを作成させるようにすることができる。
【００１３】
前記補間手段とエッジ強調手段の処理では、値Ｚの値が２より大きい場合、値Ｚの値が２であるときの処理をＮ回行った後、値Ｚの値が２以下であるときの処理を１回行わせるようにすることができる。
【００１４】
本発明の画像処理方法は、空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置の画像処理方法において、局所的なエネルギーの計算が行われる前に、原画像のエッジを太くするエッジ変換ステップと、原画像の局所的なエネルギーを計算するエネルギー計算ステップと、エネルギー計算ステップの処理により計算された局所的なエネルギーに基づいて、エッジの方向を検出する検出ステップと、検出ステップの処理により検出されたエッジの方向に基づいて、原画像の画素から新たな画素を補間する補間ステップと、エネルギー計算ステップの処理により計算された局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調ステップとを含み、エッジ変換ステップの処理においては、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値が、他の２つの画素の値の平均値とされる。
【００１５】
本発明の記録媒体のプログラムは、空間解像度を垂直方向と水平方向にそれぞれＺ倍することにより原画像の解像度を変換する画像処理装置のプログラムにおいて、局所的なエネルギーの計算が行われる前に、原画像のエッジを太くするエッジ変換ステップと、原画像の局所的なエネルギーを計算するエネルギー計算ステップと、エネルギー計算ステップの処理により計算された局所的なエネルギーに基づいて、エッジの方向を検出する検出ステップと、検出ステップの処理により検出されたエッジの方向に基づいて、原画像の画素から新たな画素を補間する補間ステップと、エネルギー計算ステップの処理により計算された局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジを強調するエッジ強調ステップとを含み、エッジ変換ステップの処理においては、２×２画素における対角線上に位置する画素の値に基づいて、所定の１つの画素の値が、他の２つの画素の値の平均値とされる。
【００１６】
本発明の画像処理装置および方法、並びに記録媒体のプログラムにおいては、局所的なエネルギーの計算が行われる前に、原画像のエッジを太くすることが行われ、局所的なエネルギーに基づいて、エッジの方向が検出され、検出されたエッジの方向に基づいて、画素が補間されるとともに、局所的なエネルギーの値が所定の閾値より大きい場合、1次元エッジビルディングフィルタの係数を、対応する画素に乗算し、その積を加算する1次元フィルタ処理を行うことによってエッジが強調される。
【００１７】
【発明の実施の形態】
図１は、本発明を適用した画像処理装置の構成例を表している。この画像処理装置１０においては、画像入力部１が処理対象とされる画像データを、記録媒体から読み取ったり、ネットワークを介して伝送されてくるものを受信して入力し、画像処理部２に出力している。画像処理部２は、画像入力部１より入力された画像の解像度を変更し（拡大または縮小し）、画像出力部３に出力している。画像出力部３は、画像処理部２より供給された画像データを表示部に表示させたり、記録媒体に記録するか、あるいは、伝送媒体を介して、他の装置に伝送する。
【００１８】
画像処理部２には、エッジコネクタ処理部１１が設けられている。このエッジコネクタ処理部１１は、画像のエッジを太くする処理を実行する。すなわち、小さいサイズの画像は、低解像度であり、信頼できる情報が少ないため、拡大するのが困難である。エッジが１画素と同じくらい細い（薄い）と、後述する高速垂直アップサンプリング処理部１２，垂直アップサンプリング処理部１３，高速水平アップサンプリング処理部１４、または、水平アップサンプリング処理部１５におけるエッジ検出が困難になり、エッジ方向に沿った補間処理を正確に行うことが困難になる。そこで原画像に前処理を行い、エッジを検出し易くする。この画像情報を破壊しない前処理は、例えばコンピュータのアイコンやワードプロセッサのフォントなどの弱接続（loose connection）を持つ画像に対して行われる。
【００１９】
高速垂直アップサンプリング処理部１２と垂直アップサンプリング処理部１３は、それぞれ原画像の解像度を垂直方向にＺ倍する処理を行う。高速垂直アップサンプリング処理部１２は、Ｚの値が１より大きく２より小さい場合の処理を行い、垂直アップサンプリング処理部１３は、Ｚの値が２である場合の処理を行う。
【００２０】
高速水平アップサンプリング処理部１４と水平アップサンプリング処理部１５は、それぞれ原画像の解像度を水平方向にＺ倍する処理を行う。高速水平アップサンプリング処理部１４は、Ｚの値が１より大きく２より小さい場合の処理を行い、水平アップサンプリング処理部１５は、Ｚの値が２である場合の処理を行う。
【００２１】
線形縮小処理部１６は、原画像の解像度を縮小する（（ZZ＜１）倍する）処理を行う。
【００２２】
１次元垂直エッジビルダ処理部１７と１次元水平エッジビルダ処理部１８は、それぞれ垂直方向または水平方向に画像データをフィルタ処理し、エッジを強調するとともに、残りのエラーを除去する。すなわち、高速垂直アップサンプリング処理部１２、垂直アップサンプリング処理部１３、高速水平アップサンプリング処理部１４、または水平アップサンプリング処理部１５のアップサンプリング処理により、画像がぼけてしまう恐れがある。そこで、エッジ情報を保持しながら画像を拡大するため、または画像の鮮明さとコントラストを保持するために、エッジビルダ処理が行われる。
【００２３】
すなわち、エッジ近辺には、エッジの鮮明さに影響を及ぼす潜在的ノイズが存在するため、画像のエッジの方向の識別が、相対的に不正確になり、拡大処理過程でエラーが伝搬してしまうことがある。この場合、エッジ近辺の画素が間違って計算される恐れもあり、わずかであるが、歪みが発見されるおそれもある。
【００２４】
そこでこのエッジビルダ処理により、局所的にローパスフィルタをかけ、その不完全な画素と最も近傍の画素を混合することにより、このような問題に対処するのである。また、このエッジビルダ処理により、ハイパスフィルタをかけ、鮮鋭化処理することで、画質を大幅に向上させる。
【００２５】
次に、図２のフローチャートを参照して、画像処理部２のズーム処理について説明する。最初にステップＳ１において、画像処理部２は、変数ｚに倍率Ｚの値を設定する。次にステップＳ２において、画像処理部２は、変数ｚの値が２以上であるか否かを判定し、２未満である場合には、ステップＳ３に進み、変数ｚの値が１より大きく２より小さい値であるか否かが判定される。変数ｚの値が１より大きく２より小さい場合にはステップＳ４に進み、画像処理部２は、高速ズーム処理を行う。この高速ズーム処理の詳細は、図３のフローチャートを参照して後述する。その後、ステップＳ７において、出力表示処理が実行される。
【００２６】
ステップＳ３において変数ｚの値が１と２の間の値ではないと判定された場合、ステップＳ５に進み、その変数ｚの値は、０であるか否かが判定される。その変数ｚの値が０でない場合には（変数ｚの値が１未満である場合には）、ステップＳ６に進み、標準的な線形縮小処理が実行される。その後、ステップＳ７において、出力表示処理が実行される。すなわち、生成された画像が、画像出力部３により、表示部に表示される。
【００２７】
これに対してステップＳ５において、変数ｚの値が０であると判定された場合、ステップＳ６におけるズーム処理を所定回数実行した結果、拡大処理は既に完了しているため、ステップＳ７に進み、出力表示処理が実行される。
【００２８】
ステップＳ２において、変数ｚの値が２以上であると判定された場合、ステップＳ８に進み、画像処理部２は、ズーム処理を実行する。このズーム処理の詳細は、図３４のフローチャートを参照して後述する。
【００２９】
ステップＳ８の次にステップＳ９に進み、画像処理部２は、変数ｚの値を２で除算する。その後、処理はステップＳ２に戻り、それ以降の処理が繰り返し実行される。
【００３０】
すなわち、変数ｚの値が２以上である場合には、ステップＳ８の処理が変数ｚの値が２より小さくなるまで所定回数繰り返し行われる。そして、変数ｚの値が２より小さくなった場合には、変数ｚの値が１と２の間の値であるとき、ステップＳ４で高速ズーム処理が行われ、変数ｚの値が１未満である場合には、ステップＳ６で標準的な線形縮小処理が行われる。この標準的な線形縮小処理は、例えば、バイリニアフィルタを用いて実現することができる。
【００３１】
次に、図３のフローチャートを参照して、ステップＳ４の高速ズーム処理について説明する。最初にステップＳ１１において、画像処理部２は、ユーザより設定されているモードが、画像モードであるか否かを判定する。設定されているモードが画像モードでない場合には（処理対象の画像が、エッジコネクタ処理を必要とするアイコンやフォントなどの弱接続の画像である場合には）、ステップＳ１６に進み、エッジコネクタ処理が行われる。このエッジコネクタ処理の詳細は、図３０と図３１を参照して後述するが、この処理で、弱接続の画像が強接続の画像に前処理される。
【００３２】
ステップＳ１１で設定されているモードが画像モードであると判定された場合（処理対象の画像が強接続の画像である場合）、およびステップＳ１６の処理の後、ステップＳ１２に進み、画像処理部２は、高速垂直アップサンプリング処理を実行する。この高速垂直アップサンプリング処理は、例えば、図４に示されるように、画像入力部１より入力された原画像の画素数を垂直方向に拡大する処理を意味する。この高速垂直アップサンプリング処理は、高速垂直アップサンプリング処理部１２により実行される。
【００３３】
高速垂直アップサンプリング処理の詳細は、図５のフローチャートに示されている。高速垂直アップサンプリング処理部１２は、最初にステップＳ２１において、Ｈバッファ３１（後述する図７）と２Ｙバッファ４１（後述する図１３）を作成する。画像入力部１より入力された原画像（I_image）のサイズが、In_width×In_heightである場合、Ｈバッファ３１のサイズは、In_width×(alpha_Z×In_height)となる。ここで、alpha_Zは、原画像を垂直方向に拡大する倍率を表し、今の場合、高速垂直アップサンプリングであるので、その値は１より大きく、２より小さい値である（ステップＳ３，Ｓ４）。
【００３４】
２Ｙバッファ４１は、サイズがIn_width×１とされる。この２Ｙバッファ４１には、補間された画素が一次的に格納される。
【００３５】
次に、ステップＳ２２において、高速垂直アップサンプリング処理部１２は、サイズがIn_width×In_heightのエネルギーマップを作成する。さらに、ステップＳ２３において、高速垂直アップサンプリング処理部１２は、ケース１乃至ケース３に対応する処理を実行する。
【００３６】
このケース１乃至ケース３の処理は、Ｈバッファ３１のＹ行の補間データを生成する処理である。Ｙ行の補間データが、ケース１乃至ケース３のいずれの処理により生成されるかは、次のように決定される。
【００３７】
すなわち、本実施の形態においては、原画像I_imageを垂直方向に２倍に拡大した画像としての仮想垂直２倍拡大画像2Y_imageが想定される。Ｈバッファ３１に格納する画像は、原画像I_imageを垂直方向にalpha_Z倍した画像であるから、仮想垂直２倍拡大画像2Y_imageの行を2Y_lineとし、Ｈバッファ３１に格納する画像の行をＹとすると、次の比例式が成立する。
【００３８】
Y:2Y_line=alpha_Z:2                                      ・・・（１）
この式を整理すると、次式が得られる。
2Y_line＝Y×2/alpha_Z                                    ・・・（２）
【００３９】
上記（２）式より計算された値2Y_lineが整数且つ偶数である場合（2Y_line=2nであり、ｎが整数である場合）、Ｙ行の補間データは、ケース１の処理で生成される。値2Y_lineが整数且つ奇数である場合（2Y_line=2n+1であり、ｎが整数である場合）、Ｙ行の補間データは、ケース２の処理で生成される。その他の場合、すなわち値2Y_lineが実数である場合、Ｙ行の補間データは、ケース３の処理で生成される。
【００４０】
ケース１の場合、図６のフローチャートに示す処理が実行される。すなわち、ケース１の場合、Ｈバッファ３１の行Ｙの値を、原画像I_image中の所定の行の値（2Y_line/2=n）と対応させることができる。このため、ステップＳ３１において、原画像I_imageの2Y_line/2行をＨバッファ３１のＹ行にそのままコピーする処理が実行される。
【００４１】
図７は、この場合の処理を模式的に表している。すなわち、ケース１の場合、Ｈバッファ３１の行Ｙの値が原画像I_imageの行ｎの値と等しいため、原画像のｎ（=2Y_line/2）行がＨバッファ３１のＹ行にそのままコピーされる。
【００４２】
次に、図８のフローチャートを参照して、ケース２の場合の処理について説明する。このケース２の場合、(2n+1)/2の値は整数ではないので、Ｈバッファ３１の行Ｙの値を、原画像I_image中の所定の行の値に対応させることができない。しかしながら、仮想垂直２倍拡大画像2Y_image中の所定の行(2n+1)とは、対応させることができる。
【００４３】
そこで、この場合、ステップＳ４１において、原画像I_image中の所定の範囲（Ｎ画素）の上行up_lineと下行down_lineの画素を抽出する処理が実行される。Ｎの値は可変とされる。従って、上行up_lineの中心座標は、(X+N/2,n)となり、下行down_lineの中心座標は、(X+N/2,n+1)となる。
【００４４】
次にステップＳ４２において、局所エネルギーE(N)が次式より計算される。
【００４５】
E(N)=ΣI=0，N-1ABS（up_line(I)−down_line(N-I-1)）        ・・・（３）
【００４６】
上記（３）式の計算は、up_lineの個々の画素から対角線上に位置する
down_lineの画素を減算し、その絶対値の和を積算することを意味する。
【００４７】
図９は、局所エネルギーE(N)の計算の例を表している。同図に示されるように、上行up_lineの画素と、下行down_lineの画素のうち、対角線上に位置する上の画素から下の画素の画素値が減算され、その差の絶対値の和が局所エネルギーE(N)とされる。図９の例では、画素Ｙ0,0の値（３０）から、画素Ｙ1,4の値（２５５）が減算される。また画素Ｙ0,1の画素値（１５０）から、画素Ｙ1,3の画素値（２３０）が減算される。以下同様に、画素Ｙ0,2の画素値（１５０）から画素Ｙ1,2の画素値（２００）が減算され、画素Ｙ0,3の画素値（２００）から画素Ｙ1,1の画素値（２００）が減算され、画素Ｙ0,4の画素値（２５５）から、画素Ｙ1,0の画素値（３０）が減算される。そしてそれぞれの差分の絶対値の和が局所エネルギーとされる。
【００４８】
ステップＳ４３において、高速垂直アップサンプリング処理部１２は、ステップＳ４２で計算された局所エネルギーE(N)を、ステップＳ２２で生成されたエネルギーマップの座標（X+N/2,n）に格納する。この局所エネルギーは、後述するステップＳ１３の１次元垂直エッジビルダ処理で用いられる。
【００４９】
次に、ステップＳ４４において、高速垂直アップサンプリング処理部１２は、局所エネルギーE(N)が予め設定されている所定の閾値Ｔより大きいか否かを判定する。局所エネルギーE(N)が閾値Ｔと等しいか、それより小さい場合、その領域は、エッジを含まない平坦な低エネルギーの領域と見なされる。この場合、潜在的エッジの方向を計算する必要がない。このため、ステップＳ５０に進み、高速垂直アップサンプリング処理部１２は、Ｈバッファ３１中の座標（X+N/2,Y）の画素データとして、隣接する上行中心画素up_line(N/2)と、隣接する下行中心画素down_line(N/2)の平均値を演算し、Ｈバッファ３１のその座標（X+N/2,Y)に格納する。すなわち、ステップＳ５０においては、次の式に基づいて、標準的な線形補間処理が行われる。
【００５０】
H_buffer(X+N/2,Y)=0.5×(up_line(N/2)+down_line(N/2))    ・・・（４）
【００５１】
ステップＳ４４において、局所エネルギーE(N)の値が閾値Ｔより大きいと判定された場合、その領域は、潜在的エッジを含んだ高エネルギー領域と見なされる。このとき、ステップＳ４５において、エッジ方向を試験的に計算する処理が実行される。具体的には、以下に示す演算が、x=N-1からｘをデクリメントし、ｘが−１より大きいとき行われる。
【００５２】
Energy=ABS(up_line(N-x-1)−down_line(x))                ・・・（５）
【００５３】
上記（５）式で計算されたエネルギーの値のうち、最も小さいものが選択され、その２つの画素が対応する対角線の方向が局所的なエッジの方向と見なされる。
【００５４】
図１０は、この場合の具体的な例を表している。この例においては、画素Ｙ0,0の画素値（３０）と、画素Ｙ1,4の画素値（２５５）との差、画素Ｙ0,1の画素値（１５０）と、画素Ｙ1,3の画素値（２３０）との差、画素Ｙ0,2の画素値（１５０）と、画素Ｙ1,2の画素値（２００）との差、画素Ｙ0,3の画素値（２００）と、画素Ｙ1,1の画素値（２００）との差、および画素Ｙ0,4の画素値（２５５）と、画素Ｙ1,0の画素値（３０）との差が、それぞれ演算される。そしてそれらの値の絶対値のうち、最も小さい値（この例の場合、画素Ｙ0,3と画素Ｙ1,1を結ぶ方向）が局所的なエッジ方向と見なされる。
【００５５】
図１１は、Ｈバッファ３１に保持されている上行up_lineの３画素と下行down_lineの３画素との差から局所的なエッジ方向が推測される例を表している。図１１の例においては、Ｎの値が３とされているが、このＮの値としてより大きな値を用いることで、より正確に、かつより多くの方向のエッジの検出が可能となる。
【００５６】
ステップＳ４５の処理で、エッジ方向が検出された場合、さらにステップＳ４６において、その検出されたエッジ方向の画素を用いて、補間処理が行われる（方向補間処理が行われる）。この方向補間処理は、エッジ方向に対応する２つの画素の画素値に基づいて、その間に位置する画素の画素値を補間することを意味する。例えば、図１０の例では、画素Ｙ0,3と画素Ｙ1,1の画素値の平均値（２００）が、両者の間の画素の画素値とされる。
【００５７】
これにより、全ての場合において、上行中心画素と下行中心画素の平均値を新たな画素の画素値とする標準的な線形補間処理（ステップＳ５０の処理）に較べ、元の画像の鮮明さとコントラストを保存し、画像のボケを抑制することが可能となる。
【００５８】
次に、ステップＳ４７に進み、高速垂直アップサンプリング処理部１２は、構造コレクタ処理を実行する。この構造コレクタ処理は、座標(X+N/2,Y)に補間された画素と、その垂直の近傍画素、すなわち座標up_line(N/2)と、座標down_line(N/2)との関係を解析することで、更新された局所構造（ステップＳ４６の方向補間処理で生成された画素とその上下の画素）の整合性をチェックする処理である。
【００５９】
すなわち、この構造コレクタ処理では、上行の中心画素から更新された画素を減算する処理が行われ、さらに、更新された画素から下行の中心画素を減算する処理が行われる。さらに、以上のようにして得られた２つの減算結果を乗算することで、垂直方向の変化を表す値V(N/2)が計算される。すなわち、ステップＳ４７においては、次の式で示す演算が行われる。
【００６０】
V(N/2)=(up_line(N/2)−H-buffer(X+N/2,Y))×(H-buffer(X+N/2,Y)−down_line(N/2))                                        ・・・（６）
【００６１】
次に、ステップＳ４８において、高速垂直アップサンプリング処理部１２は、ステップＳ４７での演算結果に基づいて、更新された局所構造の整合性があるか否かを判定する。この判定は、上記式（６）で演算された値V(N/2)が正であるか否かに基づいて行われる。値V(N/2)が正である場合には、整合性があると見なされ、ステップＳ４９において、ステップＳ４６の方向補間処理で生成された画素がＨバッファ３１の行Ｙに格納される。またこの画素値は、ステップＳ２１の処理（図５）で生成された２Ｙバッファ４１（図１３）にも格納される。
【００６２】
これに対して、ステップＳ４８において、値V(N/2)が負であると判定された場合、整合性はないと見なされる。すなわち、局所方向の識別が誤っており、ステップＳ４６で生成された画素値は、適切でないと判断される。この場合、局所エッジの方向は、識別不可能と見なされ、ステップＳ５０に進み、ステップＳ４４において、局所エネルギーE(N)の値が閾値Ｔより小さいと判定された場合と同様に、式（４）を用いた標準的な線形補間処理が行われる。すなわち、上行中心画素up_line(N/2)と、下行中心画素down_line(N/2)との平均値が、その間のＨバッファ３１の新しい画素(X+N/2,Y)の画素値とされる。
【００６３】
図８のケース２の処理を模式的に表すと、図１２に示されるようになる。
【００６４】
すなわち、ステップＳ４２において、局所エネルギーが計算され、その値が閾値Ｔより小さい場合（低エネルギーの場合）には、ステップＳ５０において、線形補間処理が実行される。これに対して、局所エネルギーが閾値Ｔより大きい場合（高エネルギーの場合）には、ステップＳ４５において、エッジ方向計算処理が行われる。そしてステップＳ４６において、ステップＳ４５で得られたエッジ方向に基づいて、方向補間処理が実行される。さらに、ステップＳ４７において、構造コレクタ処理が行われ、整合性がある場合には、ステップＳ４６の方向補間処理で生成された画素値がＨバッファ３１に格納されるが、整合性がないと判定された場合には、ステップＳ５０において、線形補間処理が実行される。
【００６５】
図１３は、図８のフローチャートで示されるケース２の場合の処理を、原画像I_image、Ｈバッファ３１、２Ｙバッファ４１、および仮想垂直２倍拡大画像2Y_imageの関係から表している。Ｈバッファ３１のＹ行が仮想垂直２倍拡大画像2Y_imageの所定の行2Y_lineと所定の関係にある場合には、原画像I_imageのｎ行と、ｎ＋１行に基づいて、方向補間処理が行われ、得られたデータは２Ｙバッファ４１に格納される。そして、２Ｙバッファ４１に格納されたデータがＨバッファ３１の行Ｙにコピー（格納）される。
【００６６】
次に、図１４のフローチャートを参照して、ケース３の処理について説明する。このケースは、2n＜2Y_line＜2n+1、または、2n-1＜2Y_line＜2nの場合、つまり、Ｈバッファ３１中の行Ｙの値が、仮想垂直２倍拡大画像2Y_imageの行2Y_lineのいずれにも対応せず、かつ、原画像I_imageのどの行とも対応しない場合である。
【００６７】
この場合、ステップＳ６１において、2Y_lineの値が2nより大きく、且つ2n+1より小さいか否かが判定される。2Y_lineの値が2nより大きく、且つ2n+1より小さい場合、仮想垂直２倍拡大画像2Y_imageの2n+1行と2n行から、Ｈバッファ３１のＹ行が生成される。
【００６８】
そこで、この場合、ステップＳ６２において、高速垂直アップサンプリング処理部１２は、仮想垂直２倍拡大画像2Y_imageの2n+1行を、隣接する上行2n行と、下行2n+2行（原画像I_imageにおけるｎ行とn+1行）を用いて、図８のケース２のフローチャートに示すステップＳ４１乃至ステップＳ５０の処理で計算する。ステップＳ６２で計算された結果は、Ｈバッファ３１における次のn+1行の計算に使用する可能性があるので、ステップＳ６３において、２Ｙバッファ４１に格納される。
【００６９】
さらに、ステップＳ６４において、ステップＳ６２で計算された2n+1行（２Ｙバッファ４１に記憶されている値）と、仮想垂直２倍拡大画像2Y_imageの2n行（原画像I_imageのｎ行）から、Ｈバッファ３１のＹ行が次式から演算され、Ｈバッファ３１のＹ行に記憶される。
【００７０】
H_buffer(X,Y)=（2Y_line−2n）×2Y-buffer(X)+(2n+1−2Y_line)×I_image(X,n)                                                    ・・・（７）
【００７１】
このように、ステップＳ６２乃至Ｓ６４の処理では、原画像I_imageを垂直方向に２倍に拡大した画像を生成し、その画像と原画像I_imageとから、alpha_Z倍の画像を生成していることになる。
【００７２】
一方、ステップＳ６１において、2Y_lineが2nより大きく、且つ2n+1より小さいと判定されなかった場合（2Y_lineが2n-1より大きく、2nより小さいと判定された場合）、仮想垂直２倍拡大画像2Y_imageの2n-1行と2n行から、Ｈバッファ３１のＹ行が生成される。この2n-1行は、Ｈバッファ３１中の前行を求める際に計算され、２Ｙバッファ４１に既に格納されている場合がある。そこでステップＳ６５において、2n-1行が２Ｙバッファ４１に既に格納されているか否かが判定され、格納されている場合には、ステップＳ６８において、2n-1行のデータが２Ｙバッファ４１から取り出される。
【００７３】
これに対して、ステップＳ６５において、2n-1行のデータが２Ｙバッファ４１にまだ格納されていないと判定された場合、ステップＳ６６に進み、仮想垂直２倍拡大画像2Y_imageの2n-1行を、上行2n-2行と下行2n行（原画像I_imageのn-1行とｎ行）を用い、図８のケース２のフローチャートのステップＳ４１乃至ステップＳ５０の処理により計算する処理が実行される。ステップＳ６６で計算された2n-1行の値は、ステップＳ６７において、Ｈバッファ３１における次のY+1行の計算に使用する可能性があるので、２Ｙバッファ４１に格納される。
【００７４】
ステップＳ６７、またはステップＳ６８の処理の後、ステップＳ６９に進み、得られた2n-1行と、仮想垂直２倍拡大画像2Y_imageの2n行（原画像I_imageのｎ行）からＨバッファ３１のＹ行が次式に従って補間される。
【００７５】
H-buffer(X,Y)=(2n−2Y_line)×2Y−buffer(X)+(2Y_line−(2n−1))×I_image(X,n)                                                    ・・・（８）
【００７６】
この処理は、Ｘ＝０からIn_widthより小さい値である期間、Ｘの値をインクリメントしつつ行われる。
【００７７】
Ｈバッファ３１の個々の未知の行の各画素を求めるため、（−１＜X＜In_width−N+1）と、（−１＜Ｙ＜alpha_Z×In_height-1）の条件を満たす座標（X+N/2,Y）で、同様の処理が繰り返し実行される。
【００７８】
このように、ケース３の処理においては、仮想垂直２倍拡大画像2Y_image中の2n行と2n+1行、または2n-1行と2n行を用いて、重み付け補間が実行される。
【００７９】
以上の図１４のケース３に示す処理を模式的に表すと、図１５に示すようになる。仮想垂直２倍拡大画像2Y_imageの2Y_line行の値が2nより大きく、且つ2n+1関係の場合とＨバッファ３１のＹ行とが所定の原画像I_imageのｎ行とn+1行から方向補間処理により2n+1行、または2n-1行のデータが生成され、２Ｙバッファ４１に記憶される。そして、２Ｙバッファ４１に記憶された値と、仮想垂直２倍拡大画像2Y_imageの2n行のデータから、Ｈバッファ３１のＹ行のデータが重み付け補間される。
【００８０】
図３のフローチャートに戻って、以上のようにして、ステップＳ１２の高速垂直アップサンプリング処理が行われた後、ステップＳ１３に進み、１次元垂直エッジビルダ処理が行われる。エッジビルダ処理は、後述するステップＳ１５における１次元水平エッジビルダ処理とともに構成される２次元フィルタ処理の一部の処理である。この例に示されるように、２次元フィルタ処理は、１次元垂直エッジビルダ処理と、１次元水平エッジビルダ処理とに分離することが可能であるが、２次元フィルタ処理として実行される場合には、例えば図１６に示すような５×５個のフィルタ係数が、対応する５×５個の画素データに乗算され、その積和値が５×５個の画素値の中央の画素値とされる。
【００８１】
図１６に示されるフィルタ係数を構成するパラメータαは、０．５より大きく、１．４以下の値とされる。この値αは、次式で決定される。
【００８２】
α＝１．４−（０．１×alpha_Z）                          ・・・（９）
【００８３】
なお、alpha_Zは、ユーザが設定する倍率であり、この値を調整することでエラー訂正およびエッジ強調を調整することができる。
【００８４】
次に、図１７のフローチャートを参照して、図３のステップＳ１３における１次元垂直エッジビルダ処理の詳細について説明する。この処理は、１次元垂直エッジビルダ処理部１７により実行される。
【００８５】
最初にステップＳ８１において、画素（Ｘ，Ｙ）が（１＜Ｘ＜２×In_width−３）および、（１＜Ｙ＜２×In_height−３）の条件を満足しているとき、画素（Ｘ，Ｙ）を中心とした５個の画素が１組としてＨバッファ３１のＸ列から抽出される。次に、ステップＳ８２において、５個の画素の中心の画素のエネルギーE(X,Y/2)の値が、予め設定されている所定の閾値Ｔより大きいか否かが判定される。このエネルギーE(X,Y/2)は、図８のステップＳ４２の処理で計算され、ステップＳ４３の処理でエネルギーマップに格納されたものである。
【００８６】
ステップＳ８２において、エネルギーE(X,Y/2)の値が閾値Ｔより大きいと判定された場合、ステップＳ８３に進み、１次元垂直エッジビルダ処理フィルタにより畳み込み処理が行われる。畳み込み処理された結果は、ステップＳ８４において、バッファに格納される。
【００８７】
ステップＳ８２において、エネルギーE(X,Y/2)の値が、閾値Ｔと等しいか、それより小さいと判定された場合、ステップＳ８３の処理はスキップされ、ステップＳ８１で抽出された５個の画素がそのままバッファに格納される。
【００８８】
図１８は、１次元垂直エッジビルダ処理の具体的例を表している。この例においては、５個の画素の中の中心画素のエネルギーＥが、エネルギーマップから読み出され、その値が所定の閾値Ｔより大きい場合には、１次元垂直エッジビルダ処理フィルタにより畳み込み処理が行われる。すなわち、この例では、５個の画素値はそれぞれ３０，３０，８０，８５，８５とされ、対応するフィルタ係数は、ａ，ｂ，ｃ，ｂ，ａとされている。ａ，ｂ，ｃの値は、それぞれ以下の式で示される。
【００８９】
ａ＝（１／４−α／２）
ｂ＝１／４
ｃ＝α
【００９０】
畳み込み処理の結果は、従って次式で表される。
畳み込み演算値＝３０ａ＋３０ｂ＋８０ｃ＋８５ｂ＋８５ａ
【００９１】
畳み込み演算値は、５個の画素の中心画素値に対応する一次的なバッファにそのまま格納される。
【００９２】
図３に戻って、以上のようにして、ステップＳ１３において１次元垂直エッジビルダ処理が完了した後、ステップＳ１４に進み、高速水平アップサンプリング処理が実行される。この高速水平アップサンプリング処理は、高速水平アップサンプリング処理部１４により実行される。高速水平アップサンプリング処理は、図１９に示されるように、画素を水平方向に補間する処理である。
【００９３】
図２０は、高速水平アップサンプリング処理の詳細を表している。ステップＳ１０１で高速水平アップサンプリング処理部１４は、Ｖバッファ５１（後述する図２２）と２Ｘバッファ６１（後述する図２５）を作成する。Ｖバッファ５１は、サイズが、（alpha_Z×In_width）×（alpha_Z×In_height）とされ、２Ｘバッファ６１は、そのサイズが１×（alpha_Z×In_height）とされる。２Ｘバッファ６１には、仮想水平２倍拡大画像2X_imageのＸ座標（奇数座標）の一列のデータが格納される。
【００９４】
さらに、ステップＳ１０２において、サイズがIn_width×（alpha_Z×In_height）のエネルギーマップが作成される。その後、ステップＳ１０３において、ケース１乃至ケース３に対応する処理が実行される。ケース１乃至ケース３のいずれの処理が実行されるかは、次式を演算することにより判断される。
【００９５】
2X_column=X×2/alpha_Z                                ・・・（１０）
【００９６】
上記演算により求められた2X_columnの値が整数であり、且つ偶数である場合（2X_column=2nであり、ｎが整数である場合）、ケース１とされ、2X_columnが整数且つ奇数である場合（2X_column=2n+1であり、ｎが整数である場合）、ケース２とされ、2X_columnが実数である場合（その他の場合）、ケース３とされる。
【００９７】
ケース１の場合、図２１のフローチャートに示す処理が実行される。このケースは、仮想水平２倍拡大画像2X_imageにおける2X_column=2n列が、前もって計算されたＨバッファ３１の2X_column/2=n列と対応する場合である。この場合、高速水平アップサンプリング処理部１４は、ステップＳ１１１において、Ｈバッファ３１の2X_column/2列をＶバッファの列Ｘにコピーする。
【００９８】
図２２は、このケース１の処理を概念的に表している。仮想水平２倍拡大画像2X_imageにおける2n列が、Ｖバッファ５１のｎ列と対応する場合、Ｈバッファ３１のｎ列が、Ｖバッファ５１の列Ｘにコピーされる。
【００９９】
図２３は、図２０のステップＳ１０３のケース２のＶバッファ５１に対する処理のフローチャートを示している。このケースは、Ｖバッファ５１中の列Ｘの値を、仮想水平２倍拡大画像2X_image中の所定の列（2n+1）と対応させることができるが、Ｈバッファ３１中の所定の列の値に対応させることはできない場合である。
【０１００】
この場合、ステップＳ１２１において、Ｈバッファ３１中の所定の範囲（Ｎ画素）の左列left_column、および右列right_columnが抽出される。左列left_columnの中心座標は、（n，Y＋N/2）とされ、右列right_columnの矩形の中心座標は、（n＋1,Y＋N/2）とされる。
【０１０１】
次にステップＳ１２２において、局所エネルギーE(N)が、左列left_columnの個々の画素から、対角線上に位置する右列right_columnの画素を減算し、その絶対値の和を演算することで求められる。すなわち、この処理では次式が演算される。
【０１０２】
E(N)=ΣI=0,N-1ABS(left_column(I)−right_column(N−I−1)・・・（１１）
【０１０３】
得られた局所エネルギーE(N)は、ステップＳ１０２で生成された、サイズがIn_width×alpha_Z×In_heightのエネルギーマップの座標（n,Y＋N/2）に格納される。
【０１０４】
次にステップＳ１２４において、エネルギーE(N)が予め設定された閾値Ｔより大きいか否かが判定される。エネルギーE(N)が閾値Ｔと等しいか、それより小さい場合、その領域はエッジを含まない平坦な低エネルギー領域と見なされる。この場合、潜在的なエッジの方向を計算する必要がない。このためステップＳ１３０に進み、標準的な線形補間処理が行われる。すなわち、次式に示すように、隣接する左列の中心画素left_column(N/2)と、隣接する右列の中心画素right_column(N/2)の平均値から、新しい画素（X＋N/2,Y）の画素値が演算される(標準的な線形補間処理が行われる)。
【０１０５】
V-buffer(X+N/2,Y)＝０．５×(left_column(N/2)+right_column(N/2))・・・（１２）
【０１０６】
ステップＳ１２４において、エネルギーE(N)が閾値Ｔより大きいと判定された場合、その領域は潜在的にエッジを含んでいる高エネルギー領域と見なされる。そこで、この場合、ステップＳ１２５に進み、次式にしたがってエッジ方向計算処理が実行される。
【０１０７】
Energy=ABS（left_column(N−x−1)−right_column(x)）    ・・・（１３）
【０１０８】
上記演算は、ｘ＝Ｎ−１からｘの値を順次ディクリメントし、ｘが−１より大きい間繰り返される。具体的には、図２４に示されるように、左列の画素から対角線上の右列の画素を減算する処理が、右列の上側から実行される。
【０１０９】
計算されたエネルギーのうち、最も小さい値に対応する画素の対角線の方向が局所的なエッジの方向と判定される。図２４においては、N＝３とされているが、このNの値をより大きい値とすることで、より多くの方向の判定が可能となる。
【０１１０】
ステップＳ１２５でエッジ方向が判定されると、ステップＳ１２６において、ステップＳ１２５で判定されたエッジ方向の２つの画素の平均値を演算することで、その間の画素が補間される（方向補間処理が実行される）。これにより、標準的な線形補間による画像のボケを防止し、元の画像の鮮明さとコントラストを保存することが可能となる。
【０１１１】
次に、ステップＳ１２７において、構造コレクタ処理が実行される。すなわちＶバッファ５１中の座標（X，Y＋N/2）に補間された画素と、その垂直方向の近傍画素である座標left_column(N/2)の画素、およびright_column(N/2)の画素との関係を解析することで局所構造の整合性をチェックする処理が行われる。このため、次式に従って、補間された画素を左列の中心の画素から減算し、右列の中心画素を補間された画素から減算することで２つの減算結果を得、さらに２つの減算結果を乗算することで、水平方向の変化を表す値H(N/2)が計算される。
【０１１２】
H(N/2)＝（left_line(N/2)−V-buffer(X＋N/2,Y)）×（V-buffer(X+N/2,Y)−right_column(N/2)）                                  ・・・（１４）
【０１１３】
ステップＳ１２８において、ステップＳ１２７で演算された値H(N/2)に基づき、補間された局所構造に整合性があるか否かが判定される。具体的には、値H(N/2)が正であるか否かが判定される。値H(N/2)が正である場合には、ステップＳ１２６の方向補間処理で求められた画素は正しい（整合性がある）ものとされ、ステップＳ１２９において、Ｖバッファ５１の列Ｘに格納される。またこの値は、２Ｘバッファ６１にも格納される。
【０１１４】
ステップＳ１２８において、値H(N/2)が負であると判定された場合（整合性がない）、すなわち、ステップＳ１２６の方向補間処理で生成された画素値は適切でないと判定された場合、ステップＳ１３０に進み、ステップＳ１２４でエネルギーE(N)が閾値Ｔより判定された場合と同様に、標準の線形補間処理が行われる。また、その値は、２Ｘバッファ６１にも格納される。
【０１１５】
図２５は、以上のケース２の処理を概念的に表したものである。同図に示されるように、Ｖバッファ５１の列Ｘが、仮想水平２倍拡大画像2X_image中の所定の列と所定の関係にある場合、Ｈバッファ３１のｎ列と、ｎ＋１列から方向補間処理により生成されたデータが２Ｘバッファ６１に記憶され、それがＶバッファ５１の列Ｘにコピーされる。
【０１１６】
次に、図２６のフローチャートを参照して、図２０のステップＳ１０３におけるケース３のＶバッファに対する処理について説明する。
【０１１７】
このケースは、2n＜2X_column＜2n+1、または、2n-1＜2X_column＜2nのケースの場合、つまり、Ｖバッファ５１中の列Ｘの値が、仮想水平２倍拡大画像2X_imageの列2X_columnのいずれにも対応せず、かつ、Ｈバッファ３１のどの列とも対応しない場合である。
【０１１８】
この場合、ステップＳ１４１において、2X_columnの値が2nより大きく、且つ2n+1より小さいか否かが判定される。2X_columnの値が2nより大きく、且つ2n+1より小さい場合、仮想水平２倍拡大画像2X_imageの2n＋1列と2nから、Ｖバッファ５１のＸ列が生成される。
【０１１９】
そこで、この場合、ステップＳ１４２において、高速水平アップサンプリング処理部１５は、仮想水平２倍拡大画像2X_imageの2n+1列を、隣接する上列2n列と、下列2n+2列（Ｈバッファ３１におけるｎ列とn+1列）を用いて、図２３のケース２のフローチャートに示すステップＳ１２１乃至ステップＳ１３０の処理で計算する。ステップＳ１４２で計算された結果は、Ｖバッファ５１における次のn+1列の計算に使用する可能性があるので、ステップＳ１４３において、２Ｘバッファ６１に格納される。
【０１２０】
さらに、ステップＳ１４４において、ステップＳ１４２で計算された2n+1列（２Ｘバッファ６１に記憶されている値）と、仮想水平２倍拡大画像2X_imageの2n列（Ｈバッファ３１のｎ列）から、Ｖバッファ５１のＸ列が次式から演算され、Ｖバッファ５１の列Ｘに記憶される。
【０１２１】
V_buffer(Ｘ,Ｙ)=(2X_column-2n)×2X-buffer(Ｘ)+(2n+1-2X_column)×I_image(ｎ,Ｙ)                                        ・・・（１５）
【０１２２】
一方、ステップＳ１４１において、2X_columnが2nより大きく、且つ2n+1より小さいと判定されなかった場合（2X_columnが2n-1より大きく、2nより小さいと判定された場合）、仮想水平２倍拡大画像2X_imageの2n-1列と2n列から、Ｖバッファ５１のＸ列が生成される。この2n-1列は、Ｖバッファ５１中の前列を求める際に計算され、２Ｘバッファ６１に既に格納されている場合がある。そこでステップＳ１４５において、2n-1列が２Ｘバッファ６１に既に格納されているか否かが判定され、格納されている場合には、ステップＳ１４８において、2n-1列が２Ｘバッファ６１から取り出される。
【０１２３】
これに対して、ステップＳ１４５において、2n-1列のデータが２Ｘバッファ６１にまだ格納されていないと判定された場合、ステップＳ１４６に進み、仮想水平２倍拡大画像2X_imageの2n-1列を、上列2n-2列と下列2n列（Ｈバッファ３１のn-1列とｎ列）を用い、図２３のケース２のフローチャートのステップＳ１２１乃至ステップＳ１３０の処理により計算する処理が実列される。ステップＳ１４６で計算された2n-1列の値は、ステップＳ１４７において、Ｖバッファ５１における次のＸ+1列の計算に使用する可能性があるので、２Ｘバッファ６１に格納される。
【０１２４】
ステップＳ１４７、またはステップＳ１４８の処理の後、ステップＳ１４９に進み、得られた2n-1列と、仮想水平２倍拡大画像2X_imageの2n列（Ｈバッファ３１のｎ列）からＶバッファ５１のＸ列が次式に従って補間される。
【０１２５】
Ｖ-buffer(Ｘ,Ｙ)=(2n−2X_column)×2X-buffer(Ｙ)+(2X_column−(2n-1))×I_image(ｎ,Ｙ)                                        ・・・（１６）
【０１２６】
この処理は、Ｙ＝０からIn_height×alpha_Zより小さい値である期間、Ｙの値をインクリメントしつつ行われる。
【０１２７】
Ｖバッファ５１の個々の未知の列の各画素を求めるため、（−１＜Ｙ＜alpha_Z×In_height−N+1）と、（−１＜Ｙ＜alpha_Z×In_width−１）の条件を満たす座標（X,Y+N/2）で、同様の処理が繰り返し実行される。
【０１２８】
このように、ケース３の処理においては、仮想水平２倍拡大画像2X_image中の2n列と2n+1列、または2n-1列と2n列を用いて、重み付け補間が実行される。
【０１２９】
以上の図２６のケース３に示す処理を模式的に表すと、図２７に示すようになる。Ｖバッファ５１中の列Ｘの値が、仮想水平２倍拡大画像2X_imageの列と所定の関係にある場合、原画像I_imageのｎ列と、n+1列から方向補間処理により2n+1列、または2n-1列のデータが生成され、２Ｘバッファ６１に記憶される。そして、２Ｘバッファ６１に記憶された値と、仮想水平２倍拡大画像2X_imageの2n列のデータから、Ｖバッファ５１のＸ列のデータが重み付け補間される。
【０１３０】
図３に戻って、以上のようにして、ステップＳ１４で高速水平アップサンプリング処理が行われた後、ステップＳ１５に進み、１次元水平エッジビルダ処理が実行される。
【０１３１】
次に、図２８のフローチャートを参照して、この１次元水平エッジビルダ処理の詳細について説明する。この処理は、１次元水平エッジビルダ処理部１８により実行される。
【０１３２】
最初にステップＳ１６１において、画素（Ｙ，Ｙ）が（１＜Ｘ＜２×In_width−３）および、（１＜Ｙ＜２×In_height−３）の条件を満足しているとき、画素（Ｘ，Ｙ）を中心とした５個の画素が１組として、Ｖバッファ５１のＹ行から抽出される。次に、ステップＳ１６２において、５個の画素の中心の画素のエネルギーＥ（X/2,Ｙ）の値が、予め設定されている所定の閾値Ｔより大きいか否かが判定される。このエネルギーＥ（X/2,Ｙ）は、図２３のステップＳ１２２の処理で計算され、ステップＳ１２３の処理でエネルギーマップに格納されている。
【０１３３】
ステップＳ１６２において、エネルギーＥ（X/2,Ｙ）の値が閾値Ｔより大きいと判定された場合、ステップＳ１６３に進み、１次元水平エッジビルダ処理フィルタにより畳み込み処理が行われる。畳み込み処理された結果は、ステップＳ１６４において、バッファに格納される。
【０１３４】
ステップＳ１６２において、エネルギーＥ（X/2，Ｙ）の値が、閾値Ｔと等しいか、それより小さいと判定された場合、ステップＳ１６３の処理はスキップされ、ステップＳ１６１で抽出された５個の画素がそのままバッファに格納される。
【０１３５】
図２９は、図２８の１次元水平エッジビルダ処理の具体例を表している。Ｙ行の５画素のエネルギーE(X/2,Y)が閾値Ｔより大きい場合、１次元水平ビルディングフィルタにより畳み込み処理が行われる。この例の場合、５画素の値はそれぞれ３０，３０，８０，８５，８５とされ、対応する係数は、それぞれａ，ｂ，ｃ，ｂ，ａとされる。その結果、畳み込み処理結果は、次式で表される。
【０１３６】
畳み込み処理結果＝３０ａ＋３０ｂ＋８０ｃ＋８５ｂ＋８５ａ
なお、この例では、ａ，ｂ，ｃはそれぞれ次の値とされている。
【０１３７】
ａ＝１／４−α／２
ｂ＝１／４
ｃ＝α
【０１３８】
以上のようにして、ステップＳ１１において、設定されているモードが、画像モードであると判定された場合、ステップＳ１２乃至ステップＳ１５の処理が行われるのであるが、ステップＳ１１において、設定されているモードが画像モードではないと判定された場合（コンピュータのアイコンやワードプロセッサのフォントなどの弱接続の画像が処理される場合）、ステップＳ１２乃至ステップＳ１５の処理が行われる前に、ステップＳ１６において、エッジコネクタ処理が実行される。図３０と図３１は、このエッジコネクタ処理の詳細を表している。このエッジコネクタ処理は、エッジコネクタ処理部１１により実行される。
【０１３９】
最初にステップＳ１８１において、所定の画素（Ｘ，Ｙ）に対応して、２×２個の画素が切り出される。そしてステップＳ１８２とステップＳ１８３において、それぞれ右対角エネルギーと、左対角エネルギーが計算される。右対角エネルギーは、２×２個の画素のうち、右上の画素から左下の画素を減算することで求められ、左対角エネルギーは、左上画素から右下画素を減算することで求められる。  例えば、画素（Ｘ，Ｙ）を図３２（Ａ）における画素（ピクセル）０とした場合、右対角エネルギーは、図３２（Ａ）に示されるように、ピクセル１からピクセル２の値を減算することで求められ、左対角エネルギーは、図３２（Ｂ）に示されるように、ピクセル０からピクセル３の値を減算することにより求められる。
【０１４０】
次に、ステップＳ１８４において、左対角線上の画素値は、右対角線上の画素値より小さいか否かが判定される。図３２の例の場合、ピクセル０とピクセル３の画素値が、ピクセル１とピクセル２の画素値より小さいか否かが判定される。
【０１４１】
ステップＳ１８４において、左対角線上の画素値が右対角線上の画素値より小さいと判定された場合、ステップＳ１８５に進み、ステップＳ１８３で演算された左対角エネルギーは、予め設定されている所定の閾値より小さいか否かが判定される。左対角エネルギーが閾値より小さい場合、ステップＳ１８６に進み、画素（ピクセル）２は、画素（ピクセル）１より小さいか否かが判定される。画素２が画素１より小さい場合には、ステップＳ１８７において、画素１を、画素０と画素３の平均値とする処理が実行される。ステップＳ１８６において、画素２が画素１より小さくない（等しいか大きいと判定された場合）、ステップＳ１８８に進み、画素２を、画素０と画素３の平均値とする処理が実行される。
【０１４２】
図３３（Ａ）は、ステップＳ１８７の処理の結果、画素１の値が画素０と画素３の平均値とされた場合を表している。
【０１４３】
ステップＳ１８５において、左対角エネルギーが閾値と等しいか閾値より大きいと判定された場合、ステップＳ１８６乃至ステップＳ１８８の処理はスキップされる。
【０１４４】
ステップＳ１８４において、左対角線上の画素値が右対角線上の画素値より小さくないと判定された場合（等しいかより大きいと判定された場合）、ステップＳ１８９に進み、ステップＳ１８２で演算された右対角エネルギーが、予め設定されている所定の閾値より小さいか否かが判定される。右対角エネルギーが閾値より小さい場合には、ステップＳ１９０に進み、画素３は、画素０より小さいか否かが判定される。画素３が画素０より小さい場合には、ステップＳ１９１において、画素０を、画素１と画素２の平均値とする処理が行われる。ステップＳ１９０において、画素３が画素０より小さくない（等しいかより大きい）と判定された場合、ステップＳ１９２に進み、画素３を、画素１と画素２の平均値とする処理が実行される。
【０１４５】
図３３（Ｂ）は、ステップＳ１９２における処理により、画素３が、画素１と画素２の平均値とされた場合の例を示している。
【０１４６】
ステップＳ１８９において、右対角エネルギーが閾値より小さくないと判定された場合、ステップＳ１９０乃至ステップＳ１９２の処理はスキップされる。
【０１４７】
アイコンやフォントなどの弱接続を有するエッジを、以上のエッジコネクタ処理により厚くすることで、エッジ構造を強くすることができる。これにより、図３２に示されるように、エッジが局所的に、たった２つの対角線上にしか存在しない弱接続が存在する場合に、図８のステップＳ４５におけるエッジ方向計算処理、或いは、図２３におけるステップＳ１２５のエッジ方向計算処理などにより、エッジ方向を認識する際、極端な誤解を引き起こしてしまい、結果的にエッジの連続性を破壊してしまうようなことが抑制される。
【０１４８】
次に、図２のステップＳ８のズーム処理について説明する。このズーム処理の詳細は、図３４のフローチャートに示されている。図３４におけるステップＳ２１１乃至ステップＳ２１５の処理は、図３の高速ズーム処理におけるステップＳ１１乃至ステップＳ１５の処理と基本的に同様の処理となっている。
【０１４９】
図３４のステップＳ２１６におけるエッジコネクタ処理、ステップＳ２１３における１次元垂直エッジビルダ処理、およびステップＳ２１５における１次元水平エッジビルダ処理は、それぞれ、図３のステップＳ１６のエッジコネクタ処理、ステップＳ１３の１次元垂直エッジビルダ処理、およびステップＳ１５の１次元水平エッジビルダ処理と同様の処理であるので、その説明は省略する。以下においては、ステップＳ２１２における垂直アップサンプリング処理と、ステップＳ２１４における水平アップサンプリング処理についてのみ説明する。
【０１５０】
最初に図３５のフローチャートを参照して、ステップＳ２１２における垂直アップサンプリング処理について説明する。この処理は、垂直アップサンプリング処理部１３により実行される。
【０１５１】
最初にステップＳ２３１において、Ｈバッファ３１が作成される。そのサイズは、In_width×(2×In_height)とされる。また、このとき、Ｈバッファ３１と同じサイズのエネルギーマップも作成される。次に、ステップＳ２３２において、図３６に示されるように、原画像I_imageのＹ行をＨバッファ３１の行２Ｙにコピーする処理が行われる。Ｈバッファ３１の最後の行には、原画像I_imageの最後の行がコピーされる。
【０１５２】
次に、ステップＳ２３３において、原画像I_image中の上行up_lineと下行down_lineのＮ画素を抽出する処理が実行される。上行up_lineの中心座標は、(X+N/2,n)となり、下行down_lineの中心座標は、(X+N/2,n+1）となる。
【０１５３】
次にステップＳ２３４において、局所エネルギーE(N)が次式より計算される。
E(N)=ΣI=0，N-1ABS（up_line(I)−down_line(N-I-1)）    ・・・（１７）
【０１５４】
上記（１７）式の計算は、up_lineの個々の画素から対角線上に位置する
down_lineの画素を減算し、その絶対値の和を積算することを意味する。
【０１５５】
ステップＳ２３５において、垂直アップサンプリング処理部１３は、ステップＳ２３４で計算された局所エネルギーE(N)を、ステップＳ２３１で生成されたエネルギーマップの座標（X+N/2,n）に格納する。この局所エネルギーは、後述するステップＳ２１３の１次元垂直エッジビルダ処理で用いられる。
【０１５６】
次に、ステップＳ２３６において、高速垂直アップサンプリング処理部１３は局所エネルギーE(N)が予め設定されている所定の閾値Ｔより大きいか否かを判定する。局所エネルギーE(N)が閾値Ｔと等しいか、それより小さい場合、その領域は、エッジを含まない平坦な低エネルギーの領域と見なされる。この場合、潜在的エッジの方向を計算する必要がない。このため、ステップＳ２４２に進み、垂直アップサンプリング処理部１３は、Ｈバッファ３１中の座標（X+N/2,Y）の画素データとして、隣接する上行中心画素ab_line(N/2)と、隣接する下行中心画素down_line(N/2)の平均値を演算し、Ｈバッファ３１のその座標（X+N/2,Y)に格納する。すなわち、ステップＳ２４２においては、次の式に基づいて、標準的な線形補間処理が行われる。
【０１５７】
H_buffer(X+N/2,Y)=0.5×(up_line(N/2)+down_line(N/2))  ・・・（１８）
【０１５８】
ステップＳ２３６において、局所エネルギーE(N)の値が閾値Ｔより大きいと判定された場合、その領域は、潜在的エッジを含んだ高エネルギー領域と見なされる。このとき、ステップＳ２３７において、エッジ方向を試験的に計算する処理が実行される。具体的には、以下に示す演算が、x=N-1から−１より大きくなるまで行われる。
【０１５９】
Energy=ABS(up_line(N-x-1)−down_line(x))              ・・・（１９）
【０１６０】
上記（１９）式で計算されたエネルギーの値のうち、最も小さいものが選択され、その２つの画素が対応する対角線の方向が局所的なエッジの方向と見なされる。
【０１６１】
ステップＳ２３７の処理で、エッジ方向が検出された場合、さらにステップＳ２３８において、その検出されたエッジ方向の画素を用いて、補間処理が行われる（方向補間処理が行われる）。この方向補間処理は、エッジ方向に対応する２つの画素の画素値に基づいて、その間に位置する画素の画素値を補間することを意味する。
【０１６２】
これにより、全ての場合において、上行中心画素と下行中心画素の平均値を新たな画素の画素値とする標準的な線形補間処理（ステップＳ２４２の処理）に較べ、元の画像の鮮明さとコントラストを保存し、画像のボケを抑制することが可能となる。
【０１６３】
次に、ステップＳ２３９に進み、垂直アップサンプリング処理部１３は、構造コレクタ処理を実行する。この構造コレクタ処理は、座標(X+N/2,Y)に補間された画素と、その垂直の近傍画素、すなわち座標up_line(N/2)と、座標down_line(N/2)との関係を解析することで、更新された局所構造（ステップＳ２３８の方向補間処理で生成された画素とその上下の画素）の整合性をチェックする処理である。
【０１６４】
すなわち、この構造コレクタ処理では、上行の中心画素から更新された画素を減算する処理が行われ、さらに、更新された画素から下行の中心画素を減算する処理が行われる。さらに、以上のようにして得られた２つの減算結果を乗算することで、垂直方向の変化を表す値V(N/2)が計算される。すなわち、ステップＳ２３９においては、次の式で示す演算が行われる。
【０１６５】
V(N/2)=(up_line(N/2)−H-buffer(X+N/2,Y))×(H-buffer(X+N/2,Y)−down_line(N/2))                                      ・・・（２０）
【０１６６】
次に、ステップＳ２４０において、垂直アップサンプリング処理部１３は、ステップＳ２３９での演算結果に基づいて、更新された局所構造の整合性があるか否かを判定する。この判定は、上記式（２０）で演算された値V(N/2)が正であるか否かに基づいて行われる。値V(N/2)が正である場合には、整合性があると見なされ、ステップＳ２４１において、ステップＳ２３８の方向補間処理で生成された画素がＨバッファ３１の行Ｙに格納される。
【０１６７】
これに対して、ステップＳ２４０において、値V(N/2)が負であると判定された場合、整合性はないと見なされる。すなわち、局所方向の識別が誤っており、ステップＳ２３８で生成された画素値は、適切でないと判断される。この場合、局所エッジの方向は、識別不可能と見なされ、ステップＳ２４２に進み、ステップＳ２３６において、局所エネルギーE(N)の値が閾値Ｔより小さいと判定された場合と同様に、式（１８）を用いた標準的な線形補間処理が行われる。すなわち、上行中心画素up_line(N/2)と、下行中心画素down_line(N/2)との平均値が、その間のＨバッファ３１の新しい画素(X+N/2,Y)の画素値とされる。
【０１６８】
図３７は、図３４のステップＳ２１４における水平アップサンプリング処理の詳細を表している。この処理は、水平アップサンプリング処理部１５により実行される。
【０１６９】
最初にステップＳ２６１において、Ｖバッファ５１が作成される。そのサイズは、２×In_width×２×In_heightとされる。このとき、同じサイズのエネルギーマップが作成される。このとき、同じサイズのエネルギーマップが作成される。ステップＳ２６２において、Ｈバッファ３１のＸ列をＶバッファ５１の２Ｘ列にコピーする処理が実行される。Ｘの値は−１より大きく、In_widthより小さい値とされる。
【０１７０】
ステップＳ２６３において、Ｈバッファ３１中の左列left_column、および右列right_columnが抽出される。左列left_columnの中心座標は、（ｎ，Y＋N/2）とされ、右列right_columnの矩形の中心座標は、（n＋1,Y＋N/2）とされる。
【０１７１】
次にステップＳ２６４において、局所エネルギーE(N)が、左列left_columnの個々の画素から、対角線上に位置する右列right_columnの画素を減算し、その絶対値の和を演算することで求められる。すなわち、この処理では次式が演算される。
【０１７２】
E(N)=ΣI=0,N-1ABS(left_column(I)−right_column(N-i-1))  ・・・（２１）
【０１７３】
得られた局所エネルギーE(N)は、ステップＳ２６１で生成された、サイズが、２×In_width×In_heightのエネルギーマップの座標（ｎ,Y＋N/2）に格納される。
【０１７４】
次にステップＳ２６６において、エネルギーE(N)が予め設定された閾値Ｔより大きいか否かが判定される。エネルギーE(N)が閾値Ｔと等しいか、それより小さい場合、その領域はエッジを含まない平坦な低エネルギー領域と見なされる。この場合、潜在的なエッジの方向を計算する必要がない。このためステップＳ２７２に進み、標準的な線形補間処理が行われる。すなわち、次式に示すように、隣接する左列の中心画素left_column(N/2)と、隣接する右列の中心画素right_column(N/2)の平均値から、新しい画素（X＋N/2,Y）の画素値が演算される。
【０１７５】
V-buffer(X+N/2,Y)＝０．５×(left_column(N/2)+right_column(N/2))・・・（２２）
【０１７６】
ステップＳ２６６において、エネルギーE(N)が閾値Ｔより大きいと判定された場合、その領域は潜在的にエッジを含んでいる高エネルギー領域と見なされる。そこで、この場合、ステップＳ２６７に進み、次式にしたがってエッジ方向計算処理が実行される。
【０１７７】
Energy=ABS（left_column(N−x−1)−right_column(x)）    ・・・（２３）
【０１７８】
上記演算は、ｘ＝Ｎ−１からｘの値を順次ディクリメントし、ｘが−１より大きい間繰り返される。
【０１７９】
計算されたエネルギーのうち、最も小さい値に対応する画素の対角線の方向が局所的なエッジの方向と判定される。
【０１８０】
ステップＳ２６７でエッジ方向が判定されると、ステップＳ２６８において、ステップＳ２６７で判定されたエッジ方向の２つの画素の平均値を演算することで、その間の画素が補間される（方向補間処理が実行される）。これにより、標準的な線形補間による画像のボケを防止し、元の画像の鮮明さとコントラストを保存することが可能となる。
【０１８１】
次に、ステップＳ２６９において、構造コレクタ処理が実行される。すなわち、Ｖバッファ５１中の座標（Ｘ,Y＋N/2）に補間された画素と、その垂直方向の近傍画素である座標left_column(N/2)の画素、およびright_column(N/2)の画素との関係を解析することで局所構造の整合性をチェックする処理が行われる。このため、次式に従って、補間された画素を左列の中心の画素から減算し、右列の中心画素を補間された画素から減算することで２つの減算結果を得、さらに２つの減算結果を乗算することで、水平方向の変化を表す値H(N/2)が計算される。
【０１８２】
H(N/2)＝（left_line(N/2)−V-buffer(X＋N/2,Y)）×（V-buffer(X+N/2,Y)−right_column(N/2)）                                  ・・・（２４）
【０１８３】
ステップＳ２７０において、ステップＳ２６９で演算された値H(N/2)に基づき、補間された局所構造に整合性があるか否かが判定される。具体的には、値H(N/2)が正であるか否かが判定される。値H(N/2)が正である場合には、ステップＳ２６８の方向補間処理で求められた画素は正しい（整合性がある）ものとされ、ステップＳ２７１において、Ｖバッファ５１の行Ｘに格納される。
【０１８４】
ステップＳ２７０において、値H(N/2)が負である場合（整合性がない、すなわち、ステップＳ２６８の方向補間処理で生成された画素値は適切でないと判定された場合）、ステップＳ２７２に進み、ステップＳ２６６でエネルギーE(N)が閾値Ｔより判定された場合と同様に、標準の線形補間処理が行われる。
【０１８５】
図３８は、以上の図３７おける水平アップサンプリング処理の概念を表している。同図に示されるように、Ｈバッファ３１のＸ列のデータが、Ｖバッファ５１の２Ｘ列にコピーされる。そして、その間の列のデータが補間される。
【０１８６】
以上のようにして、画像の解像度を任意の倍率で変更することができる。この場合、例えば、画像を６倍に拡大するとき、ズーム処理を２回繰り返し、４倍の画像を得た後、３／２倍の高速ズーム処理を行うこともできるし、ズーム処理を３回繰り返し、８倍の画像を得た後、３／４倍の線形縮小処理を行うこともできる。
【０１８７】
また、ズーム処理または高速ズーム処理において、画像を垂直方向に拡大した後、垂直（１次元）エッジビルダ処理を行い、さらに水平方向に拡大した後、水平（１次元）エッジビルダ処理を行うようにしたが、画像を垂直方向と水平方向に拡大した後、２次元エッジビルダ処理を行うようにしてもよい。
【０１８８】
図３９は、図１に示した機能ブロックを有する画像処理装置１０のハードウエアの構成例を表している。CPU（Central Processing Unit）１１１は、ROM（Read Only Memory）１１２に記憶されているプログラム、または記憶部１１８からRAM（Random Access Memory）１１３にロードされたプログラムに従って各種の処理を実行する。RAM１１３にはまた、CPU１１１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１８９】
CPU１１１、ROM１１２、およびRAM１１３は、バス１１４を介して相互に接続されている。このバス１１４にはまた、入出力インタフェース１１５も接続されている。
【０１９０】
入出力インタフェース１１５には、キーボード、マウスなどよりなる入力部１１６、CRT，LCDなどよりなるディスプレイ、並びにスピーカなどよりなる出力部１１７、ハードディスクなどより構成される記憶部１１８、モデム、ターミナルアダプタなどより構成される通信部１１９が接続されている。通信部１１９は、インターネットなどに代表されるネットワークを介しての通信処理を行う。
【０１９１】
入出力インタフェース１１５にはまた、必要に応じてドライブ１２０が接続され、磁気ディスク１３１、光ディスク１３２、光磁気ディスク１３３、或いは半導体メモリ１３４などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部１１８にインストールされる。
【０１９２】
上述した一連の処理は、ハードウエアにより実行させることもできるが、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１９３】
この記録媒体は、図３９に示す装置では、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１３１（フロッピディスクを含む）、光ディスク１３２（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク１３３（MD（Mini-Disk）を含む）、もしくは半導体メモリ１３４などよりなるパッケージメディアにより構成されるだけでなく、装置に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１１２や、記憶部１１８に含まれるハードディスクなどで構成される。
【０１９４】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１９５】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１９６】
【発明の効果】
以上の如く、本発明の画像処理装置および方法、並びに記録媒体のプログラムによれば、局所的なエネルギーに基づいて、エッジの方向を検出し、エッジの方向に基づいて、画素を補間するようにしたので、少ない計算処理で、効果的且つ簡単に画像の解像度を変更することが可能となる。
【図面の簡単な説明】
【図１】本発明を適用した画像処理装置の構成例を示すブロック図である。
【図２】図１の画像処理装置のズーム処理を説明するフローチャートである。
【図３】図２のステップＳ４における高速ズーム処理を説明するフローチャートである。
【図４】高速垂直アップサンプリング処理を説明する図である。
【図５】図３のステップＳ１２における高速垂直アップサンプリング処理の詳細を説明するフローチャートである。
【図６】図５のステップＳ２３におけるケース１の処理を説明するフローチャートである。
【図７】図６のケース１の処理を説明する図である。
【図８】図５のステップＳ２３におけるケース２の処理を説明するフローチャートである。
【図９】図８のステップＳ４２における局所エネルギーの計算を説明する図である。
【図１０】図８のステップＳ４５におけるエッジ方向計算処理を説明する図である。
【図１１】図８のステップＳ４５におけるエッジ方向計算処理を説明する図である。
【図１２】図８のケース２の処理を説明する図である。
【図１３】図８のケース２の処理を説明する図である。
【図１４】図５のステップＳ２３におけるケース３の処理を説明するフローチャートである。
【図１５】図１４におけるケース３の処理を説明する図である。
【図１６】エッジビルダの２次元フィルター係数を説明する図である。
【図１７】図３のステップＳ１３における１次元垂直エッジビルダ処理の詳細を説明するフローチャートである。
【図１８】図１７のステップＳ８３における畳み込み処理を説明する図である。
【図１９】図３のステップＳ１４における高速水平アップサンプリングを説明する図である。
【図２０】図３のステップＳ１４における高速水平アップサンプリング処理の詳細を説明するフローチャートである。
【図２１】図２０のステップＳ１０３におけるケース１の処理を説明するフローチャートである。
【図２２】図２１のケース１の処理を説明する図である。
【図２３】図２０のステップＳ１０３におけるケース２の処理を説明するフローチャートである。
【図２４】図２３のケース２の処理を説明する図である。
【図２５】図２３のケース２の処理を説明する図である。
【図２６】図２０のステップＳ１０３におけるケース３の処理を説明するフローチャートである。
【図２７】図２６のケース３の処理を説明する図である。
【図２８】図３のステップＳ１５における１次元水平エッジビルダ処理の詳細を説明するフローチャートである。
【図２９】図２８のステップＳ１６３における畳み込み処理を説明する図である。
【図３０】図３のステップＳ１６におけるエッジコネクタ処理の詳細を説明するフローチャートである。
【図３１】図３のステップＳ１６におけるエッジコネクタ処理の詳細を説明するフローチャートである。
【図３２】図３０のステップＳ１８２とステップＳ１８３における右対角エネルギーと左対角エネルギーを説明する図である。
【図３３】図３０のステップＳ１８７と図３１のステップＳ１９２における処理を説明する図である。
【図３４】図２のステップＳ８におけるズーム処理を説明するフローチャートである。
【図３５】図３４におけるステップＳ２１２の垂直アップサンプリング処理の詳細を説明するフローチャートである。
【図３６】図３５の垂直アップサンプリング処理を説明する図である。
【図３７】図３４のステップＳ２１４における水平アップサンプリング処理を説明するフローチャートである。
【図３８】図３７の水平アップサンプリング処理を説明する図である。
【図３９】図１の画像処理装置のハードウェアの構成例を示すブロック図である。
【符号の説明】
１  画像入力部，  ２  画像処理部，  ３  画像出力部，  １０  画像処理装置，  １１  エッジコネクタ処理部，  １２  高速垂直アップサンプリング処理部，  １３  垂直アップサンプリング処理部，  １４  高速水平アップサンプリング処理部，  １５  水平アップサンプリング処理部，  １６  線形縮小処理部，  １７  １次元垂直エッジビルダ処理部，  １８  １次元水平エッジビルダ処理部
【図１】
0004150947.tif 000002
【図２】
0004150947.tif 000003
【図３】
0004150947.tif 000004
【図４】
0004150947.tif 000005
【図５】
0004150947.tif 000006
【図６】
0004150947.tif 000007
【図７】
0004150947.tif 000008
【図８】
0004150947.tif 000009
【図９】
0004150947.tif 000010
【図１０】
0004150947.tif 000011
【図１１】
0004150947.tif 000012
【図１２】
0004150947.tif 000013
【図１３】
0004150947.tif 000014
【図１４】
0004150947.tif 000015
【図１５】
0004150947.tif 000016
【図１６】
0004150947.tif 000017
【図１７】
0004150947.tif 000018
【図１８】
0004150947.tif 000019
【図１９】
0004150947.tif 000020
【図２０】
0004150947.tif 000021
【図２１】
0004150947.tif 000022
【図２２】
0004150947.tif 000023
【図２３】
0004150947.tif 000024
【図２４】
0004150947.tif 000025
【図２５】
0004150947.tif 000026
【図２６】
0004150947.tif 000027
【図２７】
0004150947.tif 000028
【図２８】
0004150947.tif 000029
【図２９】
0004150947.tif 000030
【図３０】
0004150947.tif 000031
【図３１】
0004150947.tif 000032
【図３２】
0004150947.tif 000033
【図３３】
0004150947.tif 000034
【図３４】
0004150947.tif 000035
【図３５】
0004150947.tif 000036
【図３６】
0004150947.tif 000037
【図３７】
0004150947.tif 000038
【図３８】
0004150947.tif 000039
【図３９】
0004150947.tif 000040