(57)【特許請求の範囲】
【請求項１】
sin(x)／xの関数を近似する区分多項式を用いた補間処理によって、補間対象画素の画素値を前記補間対象画素を囲む複数の元画素それぞれの画素値に基づいて算出する画像処理装置であって、
前記複数の元画素それぞれに対応する複数の重み係数を含む係数情報を格納する記憶部であって、前記複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、前記区分多項式によって得られる重み係数の値をそれぞれ近似する２のべき乗の値である記憶部と、
前記補間対象画素の画素値を得るために、前記係数情報に含まれる複数の重み係数を用いて前記複数の元画素の画素値の重み付け平均を算出する演算部とを具備することを特徴とする画像処理装置。
【請求項２】
前記係数情報に含まれる前記複数の重み係数の各々はｍビットの２進データによって表現され、
前記最大の重み係数を少なくとも含む１以上の重み係数の値は、前記係数情報に含まれる前記複数の重み係数それぞれの総計が２ｍであるという条件を満たす値であることを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記係数情報は、前記複数の元画素それぞれに対応する別の複数の重み係数を含み、前記別の複数の重み係数それぞれの絶対値は前記複数の重み係数それぞれの絶対値以上に設定されており、且つ前記別の複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、２のべき乗の値であり、
前記複数の元画素の内で、前記補間対象画素の近傍に位置する元画素間の画素値の差分値を検出する検出手段と、
前記検出された差分値に応じて、前記複数の重み係数および前記別の複数の重み係数の一方を選択する選択手段とをさらに具備し、
前記演算部は、前記選択された前記複数の重み係数および前記別の複数の重み係数の一方を用いて、前記複数の元画素の画素値の重み付け平均を算出することを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記別の複数の重み係数それぞれの正負の符号および前記別の複数の重み係数間の大小関係は、前記複数の重み係数それぞれの正負の符号および前記重み係数間の大小関係と同一であることを特徴とする請求項３記載の画像処理装置。
【請求項５】
sin(x)／xの関数を近似する区分多項式を用いた補間処理によって、補間対象画素の画素値を前記補間対象画素を囲む複数の元画素それぞれの画素値に基づいて算出する画像処理方法であって、
前記複数の元画素それぞれに対応する複数の重み係数を含む係数情報であって、前記複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、前記区分多項式によって得られる重み係数の値をそれぞれ近似する２のべき乗の値である係数情報を入力するステップと、
前記補間対象画素の画素値を得るために、前記係数情報に含まれる複数の重み係数を用いて前記複数の元画素の画素値の重み付け平均を算出するステップとを具備することを特徴とする画像処理方法。
【請求項６】
前記係数情報に含まれる前記複数の重み係数の各々はｍビットの２進データによって表現され、
前記最大の重み係数を少なくとも含む１以上の重み係数の値は、前記係数情報に含まれる前記複数の重み係数それぞれの総計が２ｍであるという条件を満たす値であることを特徴とする請求項５記載の画像処理方法。
【請求項７】
前記係数情報は、前記複数の元画素それぞれに対応する別の複数の重み係数を含み、前記別の複数の重み係数それぞれの絶対値は前記複数の重み係数それぞれの絶対値以上に設定されており、且つ前記別の複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、２のべき乗の値であり、
前記複数の元画素の内で、前記補間対象画素の近傍に位置する元画素間の画素値の差分値を検出するステップと、
前記検出された差分値に応じて、前記複数の重み係数および前記別の複数の重み係数の一方を選択するステップとをさらに具備し、
前記複数の元画素の重み付け平均を算出するステップは、前記選択された前記複数の重み係数および前記別の複数の重み係数の一方を用いて、前記複数の元画素の画素値の重み付け平均を算出することを特徴とする請求項５記載の画像処理方法。
【請求項８】
前記別の複数の重み係数それぞれの正負の符号および前記別の複数の重み係数間の大小関係は、前記複数の重み係数それぞれの正負の符号および前記重み係数間の大小関係と同一であることを特徴とする請求項７記載の画像処理方法。
【請求項９】
sin(x)／xの関数を近似する区分多項式を用いた補間処理によって、補間対象画素の画素値を前記補間対象画素を囲む複数の元画素それぞれの画素値に基づいて算出する画像処理をコンピュータに実行させるプログラムであって、
前記複数の元画素それぞれに対応する複数の重み係数を含む係数情報であって、前記複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、前記区分多項式によって得られる重み係数の値をそれぞれ近似する２のべき乗の値である係数情報を入力する処理を前記コンピュータに実行させる手順と、
前記補間対象画素の画素値を得るために、前記係数情報に含まれる複数の重み係数を用いて前記複数の元画素の画素値の重み付け平均を算出する処理を前記コンピュータに実行させる手順とを具備することを特徴とするプログラム。
【請求項１０】
前記係数情報に含まれる前記複数の重み係数の各々はｍビットの２進データによって表現され、
前記最大の重み係数を少なくとも含む１以上の重み係数の値は、前記係数情報に含まれる前記複数の重み係数それぞれの総計が２ｍであるという条件を満たす値であることを特徴とする請求項９記載のプログラム。
【請求項１１】
前記係数情報は、前記複数の元画素それぞれに対応する別の複数の重み係数を含み、前記別の複数の重み係数それぞれの絶対値は前記複数の重み係数それぞれの絶対値以上に設定されており、且つ前記別の複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、２のべき乗の値であり、
前記複数の元画素の内で、前記補間対象画素の近傍に位置する元画素間の画素値の差分値を検出する処理を前記コンピュータに実行させる手順と、
前記検出された差分値に応じて、前記複数の重み係数および前記別の複数の重み係数の一方を選択する処理を前記コンピュータに実行させる手順とをさらに具備し、
前記複数の元画素の重み付け平均を算出する処理は、前記選択された前記複数の重み係数および前記別の複数の重み係数の一方を用いて、前記複数の元画素の画素値の重み付け平均を算出する処理を含むことを特徴とする請求項９記載のプログラム。
【請求項１２】
前記別の複数の重み係数それぞれの正負の符号および前記別の複数の重み係数間の大小関係は、前記複数の重み係数それぞれの正負の符号および前記重み係数間の大小関係と同一であることを特徴とする請求項１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は補間処理を実行するための画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
一般に、コンピュータにおいては、画像を拡大または縮小するためのスケーリング処理が実行されている。画像の拡大は、例えば、ある元画像をコンピュータのディスプレイモニタにフルスクリーン表示する場合等に使用される。画像を拡大するための処理は、補間を用いて実行される。
【０００３】
補間の方法としては、sin(x)／xの関数を近似する区分多項式を用いた補間方法が知られている。この補間方法においては、補間対象画素を囲む例えば４×４の元画素の重み付け平均値が補間対象画素の画素値として算出される。４×４の元画素の重み付け平均値の算出には、４×４の重み係数が用いられる。
【０００４】
バイキュービック補間は、上述の補間方法の一つとして広く知られている。特許文献１には、バイキュービック補間によって表示画像を生成する装置が開示されている。
【特許文献１】特開平１１−２０３４６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、４×４の元画素を使用するバイキュービック補間においては、元画素の画素値に重み係数を掛ける乗算を１６回行い、さらに１６個の乗算結果の総和を求める必要がある。これらの演算をパーソナルコンピュータにおいてソフトウェアによって実行する場合には、コンピュータ内のプロセッサの負荷は非常に大きくなる。例えば、３０ｆｐｓのフレームレートを有する画像データの画素数を、SD（標準解像度）規格の解像度（水平７２０画素、垂直４８０画素）からHD（高解像度）規格の解像度（水平１４４０画素、垂直９６０画素）に変換するためには、１秒間に約６億６千万回（１４４０×９６０×１６×３０＝６６３５５２０００）の乗算を行う必要がある。
【０００６】
本発明は上述の事情を考慮してなされたものであり、少ない演算量で効率よく画像データの画素数を増やすことが可能な画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明は、sin(x)／xの関数を近似する区分多項式を用いた補間処理によって、補間対象画素の画素値を前記補間対象画素を囲む複数の元画素それぞれの画素値に基づいて算出する画像処理装置であって、前記複数の元画素それぞれに対応する複数の重み係数を含む係数情報を格納する記憶部であって、前記複数の重み係数の内で最大の重み係数を少なくとも含む１以上の重み係数を除く他の重み係数それぞれの値は、前記区分多項式によって得られる重み係数の値をそれぞれ近似する２のべき乗の値である記憶部と、前記補間対象画素の画素値を得るために、前記係数情報に含まれる複数の重み係数を用いて前記複数の元画素の画素値の重み付け平均を算出する演算部とを具備することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、少ない演算量で効率よく画像データの画素数を増やすことが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して、本発明の実施形態を説明する。  
まず、図１および図２を参照して、本発明の一実施形態に係る画像処理装置を搭載した情報処理装置の構成について説明する。この情報処理装置は、例えば、ノートブック型の携帯型パーソナルコンピュータ１０として実現されている。
【００１０】
図１はパーソナルコンピュータ１０のディスプレイユニットを開いた状態における斜視図である。本コンピュータ１０は、コンピュータ本体１１と、ディスプレイユニット１２とから構成されている。ディスプレイユニット１２には、ＴＦＴ−ＬＣＤ（Thin Film Transistor Liquid Crystal Display）１７から構成される表示装置が組み込まれており、そのＬＣＤ１７の表示画面はディスプレイユニット１２のほぼ中央に位置されている。ＬＣＤ１７は、例えばＨＤ（High Definition）規格に対応した表示画面サイズ（解像度）を有している。
【００１１】
ディスプレイユニット１２は、コンピュータ本体１１に対して開放位置と閉塞位置との間を回動自在に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１３、本コンピュータ１を電源オン／オフするためのパワーボタン１４、入力操作パネル１５、およびタッチパッド１６などが配置されている。
【００１２】
入力操作パネル１５は、押されたボタンに対応するイベントを入力する入力装置であり、複数の機能をそれぞれ起動するための複数のボタンを備えている。これらボタン群には、ＴＶ起動ボタン１５Ａ、ＤＶＤ／ＣＤ起動ボタン１５Ｂも含まれている。ＴＶ起動ボタン１５Ａは、ＴＶ放送番組データの再生、視聴及び記録を行うためのＴＶ機能を起動するためのボタンである。ＴＶ起動ボタン１５Ａがユーザによって押下された時、ＴＶ機能を実行するためのＴＶアプリケーションプログラムが自動的に起動される。
【００１３】
ＤＶＤ／ＣＤ起動ボタン１５Ｂは、ＤＶＤまたはＣＤに記録されたビデオコンテンツを再生するためのボタンである。ＤＶＤ／ＣＤ起動ボタン１５Ｂがユーザによって押下された時、ビデオコンテンツを再生するための再生アプリケーションプログラムが自動的に起動される。
【００１４】
次に、図２を参照して、本コンピュータ１０のシステム構成について説明する。
【００１５】
本コンピュータ１０は、図２に示されているように、ＣＰＵ１１１、ノースブリッジ１１２、主メモリ１１３、グラフィクスコントローラ１１４、サウスブリッジ１１９、ＢＩＯＳ−ＲＯＭ１２０、ハードディスクドライブ（ＨＤＤ）１２１、光ディスクドライブ（ＯＤＤ）１２２、ＴＶチューナ１２３、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４、およびネットワークコントローラ１２５等を備えている。
【００１６】
ＣＰＵ１１１は本コンピュータ１０の動作を制御するために設けられたプロセッサであり、ハードディスクドライブ（ＨＤＤ）１２１から主メモリ１１３にロードされる、オペレーティングシステム、および各種アプリケーションプログラムを実行する。本実施形態では、ＴＶアプリケーションプログラム、再生アプリケーションプログラムのようなビデオアプリケーションプログラムが実行される。
【００１７】
ビデオアプリケーションプログラムは、ＴＶチューナ１２３によって受信されたＴＶ放送番組データに含まれる画像データ（動画像データ）または光ディスクドライブ（ＯＤＤ）１２２から読み出される画像データ（動画像データ）、のような元画像に対して各種画像処理を施す。ビデオアプリケーションプログラム２０１は、画像処理機能として、図３に示すように、ノイズリダクションモジュール２１０、ＩＰ(Interlace/Progressive)変換モジュール２１１、黒伸張モジュール２１２、白伸張モジュール２１３、シャープネスモジュール２１４、および補間処理モジュール（スケーラ）２１５を備えている。
【００１８】
ノイズリダクションモジュール２１０は、例えば、ＴＶチューナ１２３によって受信される放送番組データに含まれる画像データからノイズを除去するための処理を実行する。ＩＰ変換モジュール２１１は、元画像データをインターレース映像からその２倍のデータ量を持つプログレッシブ映像に変換するためのプログレッシブ変換処理を実行する。黒伸張モジュール２１２および白伸張モジュール２１３は、それぞれ黒と白の階調を拡張補正するための処理を実行する。シャープネスモジュール２１４は、輪郭強調などのためのシャープネス処理を実行する。補間処理モジュール（スケーラ）２１５は、元画像の解像度（画像サイズ）をＬＣＤ１７の解像度に拡大するための補間処理を実行する。この補間処理により、例えば、ＳＤ（Standard Definition）規格に対応した画像サイズ（解像度）を有する元画像は、ＨＤ（High Definition）規格に対応した画像サイズ（解像度）に拡大される。
【００１９】
補間処理によって拡大された画像データは、表示ドライバ２０２を介してグラフィクスコントローラ１１４のビデオメモリ１１４Ａに書き込まれる。表示ドライバ２０２はグラフィクスコントローラ１１４を制御するためのソフトウェアである。
【００２０】
なお、補間処理は、ハードウェアによって実行することもできる。この場合、グラフィクスコントローラ１１４に設けられた補間処理部（スケーラ）３０１が上述の補間処理を実行する。
【００２１】
また、ＣＰＵ１１１は、ＢＩＯＳ−ＲＯＭ１２０に格納されたシステムＢＩＯＳ（Basic Input Output System）も実行する。システムＢＩＯＳはハードウェア制御のためのプログラムである。
【００２２】
ノースブリッジ１１２はＣＰＵ１１１のローカルバスとサウスブリッジ１１９との間を接続するブリッジデバイスである。ノースブリッジ１１２には、主メモリ１１３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１１２は、ＡＧＰ（Accelerated Graphics Port）バスなどを介してグラフィクスコントローラ１１４との通信を実行する機能も有している。
【００２３】
グラフィクスコントローラ１１４は本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７を制御する表示コントローラである。このグラフィクスコントローラ１１４はビデオメモリ（ＶＲＡＭ）１１４Ａに書き込まれた画像データをＬＣＤ１７に表示する。
【００２４】
サウスブリッジ１１９は、ＬＰＣ（Low Pin Count）バス上の各デバイス、およびＰＣＩ（Peripheral Component Interconnect）バス上の各デバイスを制御する。また、サウスブリッジ１１９は、ＨＤＤ１２１、ＯＤＤ１２２を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。さらに、サウスブリッジ１１９は、ＢＩＯＳ−ＲＯＭ１２０をアクセス制御するための機能も有している。
【００２５】
ＨＤＤ１２１は、各種ソフトウェア及びデータを格納する記憶装置である。光ディスクドライブ（ＯＤＤ）１２３は、ビデオコンテンツが格納されたＤＶＤ、ＣＤなどの記憶メディアを駆動するためのドライブユニットである。ＴＶチューナ１２３は、ＴＶ放送番組のような放送番組データを受信するための受信装置である。
【００２６】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１６を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このエンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、ユーザによるパワーボタン１４の操作に応じて本コンピュータ１０をパワーオン／パワーオフする機能を有している。本コンピュータ１０の各コンポーネントに供給される動作電源は、本コンピュータ１０に内蔵されたバッテリ１２６、またはＡＣアダプタ１２７を介して外部から供給される外部電源から生成される。
【００２７】
ネットワークコントローラ１２５は、例えばインターネットなどの外部ネットワークとの通信を実行する通信装置である。
【００２８】
次に、本実施形態の補間処理について説明する。
【００２９】
図４は、元画像データと、補間処理によって元画像データから生成される出力画像データとの間の画素位置関係を示している。
【００３０】
図４においては、補間処理の説明を簡単にするために、元画像データがP1からP25までの２５画素から構成されている場合を想定する。
【００３１】
P1からP5までは水平方向に等間隔に位置する画素であり、このP1からP5に対して垂直方向に水平方向の画素間隔と同じ間隔で離れた位置にP6からP10が存在し、同じくP6からP10に対して垂直方向に水平方向の画素間隔と同じ間隔で離れた位置にP11からP15が存在し、同じくP11からP15に対して垂直方向に水平方向の画素間隔と同じ間隔で離れた位置にP16からP20が存在し、同じくP16からP20に対して垂直方向に水平方向の画素間隔と同じ間隔で離れた位置にP21からP25が存在する。このように、P1からP25は５×５の正方格子の位置関係を有している。
【００３２】
P13からP14に向かって水平方向に1/4の距離で且つP13からP18に向かって垂直方向に1/4の距離にQ13aがあり、P13を中心にQ13aを半時計方向に９０度回転した位置にQ13bが、P13を中心にQ13bを半時計方向に９０度回転した位置にQ13cが、P13を中心にQ13cを半時計方向に９０度回転した位置にQ13dがある。
【００３３】
いま、P13に注目した場合にQ13a、Q13b、Q13c、Q13dで示されるものがP13を中心としてその周囲に作られる４画素の位置を示しており、補間処理によりP13の画素と周辺画素群とから、Q13a〜Q13dの画素が作成されることになる。また、m1〜m25は画素P1〜P25の画素値で、m13a〜m13dはQ13a〜Q13dの画素値である。
【００３４】
元画像を４倍に拡大する場合（画素密度を４倍にする場合）には、画素P1〜P25の各画素がその周辺の４画素に置換される。
【００３５】
一般に、画素補間を行う方法として、補間対象画素を囲む複数の元画素それぞれの画素値を用いて補間する方法が知られている。
【００３６】
この場合、補間関数として図５に示すようなsin(x)/xの特性を持った関数を用い、この関数と周辺画素それぞれの画素値とを掛け合わせたものを畳み込み演算すると、正確な補間を実行できることが知られている。
【００３７】
しかしながら、図５のような特性を持った補間フィルタを設計するのは現実的ではなく、従来より、図５の波形特性を近似する特性を持った関数が用いられている。
【００３８】
図５に示すsin(x)/xを近似する関数としては、双３次関数を用いた内挿法が一般的に知られている。sin(x)/xを近似する関数は、次に示す区分多項式で定義することができる。
【００３９】
区分多項式                  区間
(X3+5X2+8X+4)/2        -2 <= X < -1  --- a
(-3X3-5X2+2)/2         -1 <= X <  0  --- b
(3X3-5X2+2)/2           0 <= X <  1  --- c
(-X3+5X2-8X+4)/2        1 <= X <  2  --- d
ここにおけるXの値は画素間距離を示しており、図４における元画像の水平または垂直方向の画素間距離を１としている。双３次関数の特性を図６に示す。
【００４０】
以下、図４においてQ13の周辺にQ13a、Q13b、Q13c、Q13dの４画素を作成する場合の例について述べる。
【００４１】
補間対象画素Q13aを作成する場合は、補間対象画素Q13aを囲む１６個の元画素P7、P8、P9、P10、P12、P13、P14、P15、P17、P18、P19、P20、P22、P23、P24、P25それぞれの画素値が使用される。
【００４２】
Q13b、Q13c、Q13dを作成する場合には、使用される周辺画素はP13を中心に半時計回りに順に９０度回転させた画素群となる。すなわち、補間対象画素Q13bを作成する場合は、P17、P12、P7、P2、P18、P13、P8、P3、P19、P14、P9、P4、P20、P15、P10、P5それぞれの画素値が使用される。補間対象画素Q13cを作成する場合は、P19、P18、P17、P16、P14、P13、P12、P11、P9、P8、P7、P6、P4、P3、P2、P1それぞれの画素値が使用される。補間対象画素Q13dを作成する場合は、P9、P14、P19、P24、P8、P13、P18、P23、P7、P12、P17、P22、P6、P11、P16、P21それぞれの画素値が使用される。
【００４３】
ここで、Q13aを作成する場合の演算処理について説明する。
【００４４】
P7、P8、P9、P10、P12、P13、P14、P15、P17、P18、P19、P20、P22、P23、P24、P25の画素値は、m7、m8、m9、m10、m12、m13、m14、m15、m17、m18、m19、m20、m22、m23、m24、m25なので、これら画素値とこれら画素値それぞれに対する重み係数との関係は以下のようになる。
【００４５】
各画素位置に対応する画素値
m7      m8      m9      m10
m12     m13     m14     m15
m17     m18     m19     m20
m22     m23     m24     m25
各画素位置に対応する重み係数
w7      w8      w9      w10
w12     w13     w14     w15
w17     w18     w19     w20
w22     w23     w24     w25
各画素位置における重み係数は、実際には、補間対象画素と各元画素との位置関係により区分多項式から求められる。補間対象画素Q13aの画素値m13aは、複数の元画素それぞれの画素値と対応する重み係数との掛け算の総和により求められる。即ち、Q13aの画素値m13aは、
m13a=m7×w7+m8×w8+m9×w9+m10×w10+m12×w12+m13×w13+m14×w14+m15×w15+m17×w17+m18×w18+m19×w19+m20×w20+m22×w22+m23×w23+m24×w24+m25×w25
となる。
【００４６】
区分多項式を用いて得られる具体的な４×４の重み係数の例を基本演算係数として以下に示す。基本演算係数は、補間処理に用いられる１６個の元画素それぞれに対応する１６個の重み係数から構成される。基本演算係数は例えば16bit精度で表現されている。補間対象画素の画素値は、複数の元画素それぞれの画素値と対応する重み係数との掛け算の総和を求めた後に、その総和を65536（=216）で割ることによって得られる。すなわち、Q13aの画素値m13aは、４×４の重み係数を用いて、１６個の元画素の重み付け平均を算出することによって生成される。
【００４７】
区分多項式により得られる基本演算係数
324   -3996   -1044     108
-3996   49284   12876   -1332
-1044   12876    3364    -348
108   -1332    -348      36
通常の双３次関数を用いた内挿法では、以上のような方式により補間対象画素の画素値が求められる。
【００４８】
しかしながら、このような画素補間方式では、非常に多くの乗算を実行することが必要となる。例えば、３０ｆｐｓのフレームレートを有する元画像データの画素数を、SD（標準解像度）規格の解像度（水平７２０画素、垂直４８０画素）からHD（高解像度）規格の解像度（水平１４４０画素、垂直９６０画素）に変換するためには、１秒間に約６億６千万回（１４４０×９６０×１６×３０＝６６３５５２０００）の乗算を行う必要がある。
【００４９】
したがって、パーソナルコンピュータにおいてソフトウェアによって補間処理を実行する場合には、コンピュータ内のＣＰＵの負荷は非常に大きくなる。
【００５０】
本実施形態の補間処理においては、ＣＰＵ負荷を軽減するために、乗算をビットシフト演算により実現できるように各重み係数に工夫を加えている。
【００５１】
本実施形態で用いられる１６個の重み係数の例を第１の演算係数として以下に示す。
【００５２】
第１の演算係数
256   -4096   -1024     128
-4096   40928   16384   -1024
-1024   16384    4096    -256
128   -1024    -256      32
第１の演算係数に含まれる各重み係数をべき乗表示したものを以下に示す。
【００５３】
第１の演算係数（べき乗表示）
28      -212     -210      27
-212   40928       214     -210
-210      214       212     -28
27      -210      -28      25
このように、第１の演算係数に含まれる１６個の重み係数の内で、最大の重み係数を除く他の重み係数それぞれの値は、区分多項式によって得られる重み係数の値をそれぞれ近似する２のべき乗の値に設定されている。
【００５４】
すなわち、重み係数w7は、区分多項式により得られる重み係数（＝324）に最も近い２のべき乗の値（=256=28）に設定されている。重み係数w8は、区分多項式により得られる重み係数（＝-3996）に最も近い２のべき乗の値（=-4096=-212）に設定されている。重み係数w9は、区分多項式により得られる重み係数（＝-1044）に最も近い２のべき乗の値（=-1024=-210）に設定されている。重み係数w10は、区分多項式により得られる重み係数（＝108）に最も近い２のべき乗の値（=128=27）に設定されている。
【００５５】
重み係数w12は、区分多項式により得られる重み係数（＝-3996）に最も近い２のべき乗の値（=-4096=-212）に設定されている。重み係数w14は、区分多項式により得られる重み係数（＝12876）に最も近い２のべき乗の値（=16384=214）に設定されている。重み係数w15は、区分多項式により得られる重み係数（＝-1332）に最も近い２のべき乗の値（=-1024=-210）に設定されている。
【００５６】
重み係数w17は、区分多項式により得られる重み係数（＝-1044）に最も近い２のべき乗の値（=-1024=-210）に設定されている。重み係数w18は、区分多項式により得られる重み係数（＝12876）に最も近い２のべき乗の値（=16384=214）に設定されている。重み係数w19は、区分多項式により得られる重み係数（＝3364）に最も近い２のべき乗の値（=4096=212）に設定されている。重み係数w20は、区分多項式により得られる重み係数（＝-348）に最も近い２のべき乗の値（=-256=-28）に設定されている。
【００５７】
重み係数w22は、区分多項式により得られる重み係数（＝108）に最も近い２のべき乗の値（=128=27）に設定されている。重み係数w23は、区分多項式により得られる重み係数（＝-1332）に最も近い２のべき乗の値（=-1024=-210）に設定されている。重み係数w24は、区分多項式により得られる重み係数（＝-348）に最も近い２のべき乗の値（=-256=-28）に設定されている。重み係数w25は、区分多項式により得られる重み係数（＝36）に最も近い２のべき乗の値（=32=25）に設定されている。
【００５８】
補間対象画素Q13aに最も近接する元画素P13に対応する重み係数w13、つまり第１の演算係数内に含まれる最大の重み係数の値（=40928）は、第１の演算係数内に含まれる１６個の重み係数それぞれの総計が65536(=216)であるという条件を満たす値に設定されている。各重み係数をｍビットの２進データによって表現した場合、つまり各重み係数の精度がｍビットである場合には、第１の演算係数内に含まれる最大の重み係数の値（=40928）は、第１の演算係数内に含まれる１６個の重み係数それぞれの総計が2mであるという条件を満たすように設定される。
【００５９】
このように、１５個の重み係数w7,w8,w9,w10,w12,w14,w15,w17,w18,w19,w20,w22,w23,w24,w25をそれぞれ２のべき乗の値に設定することにより、m7×w7,m8×w8,m9×w9,m10×w10,m12×w12,m14×w14,m15×w15,m17×w17,m18×w18,m19×w19,m20×w20,m22×w22,m23×w23,m24×w24,m25×w25の各演算を、乗算ではなく、ビットシフト演算によって実行することができる。
【００６０】
一般に、乗算を実行する場合のＣＰＵの負荷よりもビットシフト演算を実行する場合のＣＰＵの負荷の方が小さい。典型的なＣＰＵにおいては、ビットシフト演算は、乗算よりも４．５倍早い速度で実行することができる。したがって、１５個の重み係数w7,w8,w9,w10,w12,w14,w15,w17,w18,w19,w20,w22,w23,w24,w25をそれぞれ２のべき乗の値に設定することにより、ＣＰＵの負荷を大幅に低減することができる。また、区分多項式により得られる重み係数に近似する２のべき乗の値を用いているので、区分多項式により得られる１６個の重み係数を用いて補間処理を実行した場合とほぼ同等の画質の出力画像を得ることが可能となる。
【００６１】
なお、値の大きい上位３つの重み係数w13,w14,w18以外の各重み係数を２のべき乗の値に設定し、重み係数w13,w14,w18それぞれの値を、第１の演算係数内に含まれる１６個の重み係数それぞれの総計が2mであるという条件を満たすように設定してもよい。
【００６２】
図７には、補間処理部３０１の具体的な構成例が示されている。
【００６３】
補間処理部３０１は、sin(x)／xの関数を近似する区分多項式を用いた補間処理によって、補間対象画素の画素値を当該補間対象画素を囲む複数の元画素それぞれの画素値に基づいて算出する画像処理装置である。補間処理部３０１は、演算回路２０１および記憶部２０２を含む画素置換回路２００から構成されている。
【００６４】
記憶部２０２は、上述の第１の演算係数を示す係数情報を格納している。演算回路２０１は、記憶部２０２に格納された係数情報によって示される第１の演算係数（１６個の重み係数）を用いて、補間対象画素を囲む１６の元画素の画素値の重み付け平均を算出する。この場合、演算回路２０１は、m7×w7,m8×w8,m9×w9,m10×w10,m12×w12,m14×w14,m15×w15,m17×w17,m18×w18,m19×w19,m20×w20,m22×w22,m23×w23,m24×w24,m25×w25の各演算を、乗算ではなく、ビットシフト演算によって実行する。
【００６５】
次に、図８のフローチャートを参照して、補間処理部３０１の動作を説明する。
【００６６】
補間処理部３０１は、まず、記憶部２０２から上述の第１の演算係数を示す係数情報を読み出すことによって、１６個の重み係数を入力する（ステップＳ１）。そして、補間処理部３０１は、１６個の重み係数と補間対象画素を囲む１６個の元画素それぞれの画素値とに基づいて、１６個の元画素の画素値の重み付け平均を算出する（ステップＳ２）。
【００６７】
なお、補間処理部３０１の代わりに、ＣＰＵ１１１が図８のフローチャートで示される手順を実行してもよい。
【００６８】
次に、図９を参照して、補間処理部３０１の他の構成例について説明する。
【００６９】
補間処理によって画像データを拡大することによって得られる出力画像においては、ぼけ感が発生してしまう。
【００７０】
図９の補間処理部３０１は、ぼけ感の発生を低減できるように構成されている。図９の補間処理部３０１によって実行される補間処理においては、補間対象画素の近傍に位置する元画素間の画素値の差分値に応じて、予め用意された複数種の演算係数の一つが選択される。そして、選択された演算係数を用いて、補間対象画素を囲む複数の元画素の重み付け平均が算出される。これにより、信号の変化の大きい部分の過補正や、不自然な特異点の発生を抑制しつつも、微小信号成分を効果的に際立たせることができ、生成画像の立体感を演出することが可能となる。
【００７１】
以下、補間処理部３０１の具体的な構成を説明する。
【００７２】
補間処理部３０１は画素置換回路３００および画素値差分検出回路４００から構成されている。
【００７３】
画素置換回路３００は入力画像信号から出力画像信号を生成するためのものであり、演算回路３１０、記憶部３２０、および係数切替スイッチ３３０から構成されている。記憶部３２０は、複数種の演算係数ｋ１〜ｋｎをそれぞれ示す係数情報を格納している。演算係数ｋ１〜ｋｎの各々は、１６画素それぞれに対応する１６個の重み係数から構成されている。
【００７４】
入力画像信号は、画素置換回路３００と画素値差分検出回路４００に供給される。画素値差分検出回路４００は、補間対象画素の近傍に位置する所定の２つの元画素間の画素値の差分値を検出し、その検出した差分値を係数切替信号として係数切替スイッチ３３０に供給する。
【００７５】
係数切替スイッチ３３０は、係数切替信号に応じて、複数種の演算係数ｋ１〜ｋｎの内の一つを選択する。演算回路３１０は、選択された演算係数（１６個の重み係数）を用いて、補間対象画素を囲む１６の元画素の重み付け平均を算出し、その算出した重み付け平均値を補間対象画素の画素値として出力する。
【００７６】
ここで、記憶部３２０に格納された各演算係数について説明する。ここでは、Ｋ＝３、つまり３種類の演算係数が記憶部３２０に格納されている場合を想定する。
【００７７】
第１の演算係数ｋ１は、上述の第１の演算係数から構成されている。第２の演算係数ｋ２および第３の演算係数ｋ３においては、各重み付け係数の値は、第１の演算係数ｋ１と異なっている。第２の演算係数ｋ２および第３の演算係数ｋ３それぞれの数値例を以下に示す。
【００７８】
第２の演算係数
512   -8192   -2048     256
-8192   53184   16384   -2048
-2048   16384    4096    -512
256   -2048    -512      64
第２の演算係数に含まれる各重み係数をべき乗表示したものを以下に示す。
【００７９】
第２の演算係数(べき乗表示)
29      -213    -211       28
-213   53184      214      -211
-211      214      212      -29
28      -211    -29        26
第３の演算係数
1024   -8192   -2048     512
-8192   53120   16384   -2048
-2048   16384    4096   -1024
512   -2048   -1024     128
第３の演算係数に含まれる各重み係数をべき乗表示したものを以下に示す。
【００８０】
第３の演算係数(べき乗表示)
210     -213    -211      29
-213   53120     214     -211
-211     214      212     -210
29     -211     -210      27
第２、第３の演算係数以外にも多くの数値例が考えられるがここでは省略する。第２、第３の演算係数の各々に含まれる１６個の重み係数の総和は、第１の演算係数に含まれる１６個の重み係数の総和（＝65536）と同じである。また、第２、第３の演算係数の各々においては、個々の重み係数の絶対値は、第１の演算係数に含まれる対応する重み係数の絶対値よりも小さくない。この場合、第３の演算係数に含まれる個々の重み係数の絶対値は、第２の演算係数に含まれる対応する重み係数の絶対値以上の値である。
【００８１】
さらに、第２、第３の演算係数の各々においては、個々の重み係数の正負の符号は、第１の演算係数に含まれる対応する重み係数の正負の符号と同一である。また、第２、第３の演算係数の各々においても、第１の演算係数における重み係数間の大小関係がそのまま維持されている。つまり、第２、第３の演算係数の各々に含まれる１６個の重み係数間の大小関係は、第１の演算係数に含まれる１６個の重み係数間の大小関係と同一である。
【００８２】
またさらに、第２および第３の各演算係数においても、最大の重み係数以外の他の重み係数それぞれの値は、２のべき乗の値である。
【００８３】
なお、第２および第３の各演算係数においても、値の大きい上位３つの重み係数w13,w14,w18以外の各重み係数を２のべき乗の値に設定し、重み係数w13,w14,w18それぞれの値を、１６個の重み係数それぞれの総計が2mであるという条件を満たすように設定してもよい。
【００８４】
第２および第３の各演算係数においては、補間対象画素に対する各周辺画素の影響度は、第１の演算係数よりも大きい。したがって、第２または第３の演算係数のみを用いて画素補間を行うと、出力画像全体にメリハリを生じさせることができるが、画素値の変化の大きいところでは、不自然な出力画像になったり、出力画像内に特異点が発生する場合がある。従って、本実施形態では、画素値の変化の大きいところと、小さいところで、使用する演算係数を動的に切り替えている。
【００８５】
画素値差分検出回路４００では、補間対象画素の周辺画素間の画素値の変化を検出しているが、以下に具体例について説明する。
【００８６】
補間対象画素が図４のQ13aである場合、画素値差分検出回路４００は、Q13aの最近隣画素P13の周辺画素値の変化を調べる。例えば、画素値差分検出回路４００は、P13とQ13aを結ぶ直線の延長線上にある元画素P7と元画素P19との間の画素値の差分値の絶対値、即ち｜m7-m19｜を算出する。そして、画素値差分検出回路３００は、画素差分値の絶対値｜m7-m19｜を予め設けておいた閾値と比較して、｜m7-m19｜と閾値との間の大小関係を判別する。画素差分値の絶対値が閾値以上である場合には、係数切替スイッチ３３０によって第１の演算係数が選択される。画素差分値の絶対値が閾値よりも小さい場合においては、画素差分値の絶対値が小さくなるに従って、使用される演算係数は、第２の演算係数、第３の演算係数の順で切り替えられる。
【００８７】
このように、画素差分値の絶対値に応じて適用的に４×４の重み係数の値を変化させることにより、補間処理によって拡大された画像は自然でメリハリのある画像となる。
【００８８】
なお、比較する元画素数は２つである必要はなく、補間対象画素Q13a近傍の複数の画素それぞれの画素値に基づいて、補間対象画素Q13aの周辺画素値の変化を調べればよい。
【００８９】
次に、図１０のフローチャートを参照して、本実施形態の補間処理の手順を説明する。
【００９０】
まず、補間対象画素の近傍の２つ以上の画素間の画素差分値の絶対値が検出される（ステップＳ１１）。そして、画素差分値の絶対値の大きさに応じて、第１の演算係数、第２の演算係数、および第３の演算係数の内の１つが選択される（ステップＳ１２〜Ｓ１５）。この後、選択された演算係数に含まれる４×４の重み係数を用いて、補間対象画素を囲む４×４の元画素の重み付け平均値を補間対象画素の画素値として算出する補間処理が実行される（ステップＳ１６）。
【００９１】
なお、本実施形態では、画像データサイズ（解像度）を４倍に拡大する場合を例示して説明したが、拡大率は４倍に限られるものではない。また、補間画素を作成する場合に利用する周辺画素を４×４の１６画素を基本として説明を行ったが、必ずしも１６画素である必要はなく、係数精度も必ずしも16bitである必要もない。
【００９２】
また以上の説明において、画素値は、輝度／色差信号でも、RGB信号のどちらでもよいことは言うまでもない。また、輝度信号のみを用いて補間処理を行うことも可能である。また、他の画素補間方式である双３次畳み込み内挿法やフルーエンシ理論（特開平11-353472）による内挿法でも、本実施形態で述べた構成とすることにより同様の効果が得られることも言うまでもない。
【００９３】
また、本実施形態の補間処理は全てコンピュータプログラムによって実行することができる。したがって、この補間処理の手順をコンピュータに実行させるコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータに導入するだけで、本実施形態と同様の効果を容易に得ることができる。
【００９４】
また、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９５】
【図１】本発明の一実施形態に係るコンピュータの概観を示す斜視図。
【図２】図１のコンピュータのシステム構成を示すブロック図。
【図３】図１のコンピュータで用いられるビデオアプリケーションプログラムの機能構成を示すブロック図。
【図４】図１のコンピュータによって補間処理される画像データの例を説明するための図。
【図５】sin(x)／xの関数を説明するための図。
【図６】sin(x)／xを近似する双３次関数の特性を説明するための図。
【図７】図１のコンピュータに設けられた補間処理部の構成例を示すブロック図。
【図８】図１のコンピュータにおいて実行される補間処理の手順の例を説明するフローチャート。
【図９】図１のコンピュータに設けられた補間処理部の構成例を示すブロック図。
【図１０】図１のコンピュータにおいて実行される補間処理の手順の他の例を説明するフローチャート。
【符号の説明】
【００９６】
１０…コンピュータ、１１１…ＣＰＵ、１１４…グラフィクスコントローラ、２０１…ビデオアプリケーションプログラム、２００，３００…画素置換回路、２０１，３１０…演算回路、２０２，３２０…記憶部、３３０…係数切替スイッチ、４００…画素値差分検出回路。
【図１】
0004550766.tif 000002
【図２】
0004550766.tif 000003
【図３】
0004550766.tif 000004
【図４】
0004550766.tif 000005
【図５】
0004550766.tif 000006
【図６】
0004550766.tif 000007
【図７】
0004550766.tif 000008
【図８】
0004550766.tif 000009
【図９】
0004550766.tif 000010
【図１０】
0004550766.tif 000011