(57)【要約】【課題】画像のぼやけを高速に検出する。【解決手段】プリンタ１００は、ＪＰＥＧデータを入力すると、その画像の上部２０％の領域をスキップ領域として設定する。そして、このスキップ領域を除く領域のＪＰＥＧデータに対して、ハフマン復号および逆量子化を行ってＤＣＴ係数を求め、このＤＣＴ係数に基づき、ブロック内の画像がぼやけているか否かを判定する。そして、１カ所でも合焦しているブロックが検出されれば、その画像はぼやけていないと判定する。【選択図】図７
2008028886.tif 000002
【特許請求の範囲】
【請求項１】
複数の画素からなるブロックの集合として構成された画像のぼやけを検出する画像処理装置であって、
前記ブロックを単位として画素値を周波数領域に変換して得られた係数が該ブロック毎に記録されて構成された画像データを入力する画像データ入力部と、
前記入力した画像データが表す画像の所定の領域に、ぼやけの検出の対象としないスキップ領域を設定するスキップ領域設定部と、
前記入力した画像データを構成する各ブロックが、前記スキップ領域に属するか否かを判断する領域判断部と、
前記スキップ領域に属しないと判断されたブロックの前記係数に基づき、前記画像のぼやけを判定するぼやけ判定部と
を備える画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記スキップ領域設定部は、前記画像データが表す画像の最上部から所定の幅を有する領域に前記スキップ領域を設定する
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記スキップ領域設定部は、前記画像データの最上部から該画像の高さに対して１５％から２５％までの範囲内で前記所定の幅を設定する
画像処理装置。
【請求項４】
請求項１に記載の画像処理装置であって、
前記画像データには、該画像が撮影された際の撮影条件を示す情報が記録されており、
前記スキップ領域設定部は、前記撮影条件に応じて前記スキップ領域の大きさを設定する
画像処理装置。
【請求項５】
請求項４に記載の画像処理装置であって、
前記撮影条件とは、絞り値、シャッタスピード、焦点距離の少なくともいずれか１つであり、
前記スキップ領域設定部は、前記絞り値が小さいほど、または、前記シャッタスピードが遅いほど、または、前記焦点距離が長いほど、前記スキップ領域を狭く設定する
画像処理装置。
【請求項６】
請求項１ないし請求項５のいずれかに記載の画像処理装置であって、
前記画像データは、ＪＰＥＧ規格に基づいて生成されたデータであり、
前記各ブロックを構成する係数は、前記ＪＰＥＧ規格に基づくハフマン符号化によって可変長のビット列に圧縮されて前記画像データに記録されており、該ビット列には、該ビット列のデータ長を表すデータ長パラメータが記録されており、
前記領域判断部は、前記ブロックが前記スキップ領域に属する場合に、該ブロックの前記ビット列中に記録された前記データ長パラメータに基づき、該ブロックのデータを読み飛ばす手段を備える
画像処理装置。
【請求項７】
請求項６に記載の画像処理装置であって、
前記各ブロックを構成する係数は、直流成分の係数と交流成分の係数とからなり、
前記データ長パラメータは、前記直流成分の係数のビット長を表すパラメータと、前記交流成分の係数うち、ゼロではない係数のビット長を表すパラメータとによって構成されている
画像処理装置。
【請求項８】
請求項１ないし請求項５のいずれかに記載の画像処理装置であって、
前記画像データは、ＪＰＥＧ規格に基づいて生成されたデータであり、
前記領域判断部は、前記画像データに対して、ハフマン復号および逆量子化を行って前記各ブロックから前記係数を抽出した後に、該各ブロックが前記所定のスキップ領域に属するか否かを判断する
画像処理装置。
【請求項９】
請求項１ないし請求項８のいずれかに記載の画像処理装置であって、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと該各エッジパターンが表す勾配の幅とが対応付けて記憶されたエッジパターン記憶部と、
前記領域判断部によって前記スキップ領域に属しないと判断されたブロックについて、該ブロックから、所定方向の周波数成分を表す係数群を抽出する抽出部と、
前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを前記エッジパターン記憶部から選出する選出部とを備え、
前記ぼやけ判定部は、前記選出された基本エッジパターンに対応付けられた前記勾配の幅と所定の閾値とを比較して、前記ブロック毎にぼやけの有無を判定し、ぼやけの生じていないブロックが少なくとも１つ存在する場合に、前記画像はぼやけていないと判定する
画像処理装置。
【請求項１０】
請求項９に記載の画像処理装置であって、
前記ぼやけ判定部は、隣接する前記ブロック間で、前記基本エッジパターンの勾配の方向が一致する場合に、前記勾配の幅を累積加算し、該累積加算された勾配の幅と、前記所定の閾値とを比較する
画像処理装置。
【請求項１１】
請求項１ないし請求項１０のいずれかに記載の画像処理装置であって、
更に、前記ぼやけ判定部によってぼやけていないと判定された画像をユーザに提示する提示部を備える
画像処理装置。
【請求項１２】
請求項１１に記載の画像処理装置であって、
更に、前記提示された画像の中からユーザによって選択された画像を印刷する印刷部を備える
画像処理装置
【請求項１３】
コンピュータが、複数の画素からなるブロックの集合として構成された画像のぼやけを検出するぼやけ検出方法であって、
前記ブロックを単位として画素値を周波数領域に変換して得られた係数が該ブロック毎に記録されて構成された画像データを入力し、
前記入力した画像データが表す画像の所定の領域に、ぼやけの検出の対象としないスキップ領域を設定し、
前記入力した画像データを構成する各ブロックが、前記スキップ領域に属するか否かを判断し、
前記スキップ領域に属しないと判断されたブロックの前記係数に基づき、前記画像のぼやけを判定する
ぼやけ検出方法。
【請求項１４】
コンピュータが、複数の画素からなるブロックの集合として構成された画像のぼやけを検出するためのコンピュータプログラムであって、
前記ブロックを単位として画素値を周波数領域に変換して得られた係数が該ブロック毎に記録されて構成された画像データを入力する機能と、
前記入力した画像データが表す画像の所定の領域に、ぼやけの検出の対象としないスキップ領域を設定する機能と、
前記入力した画像データを構成する各ブロックが、前記スキップ領域に属するか否かを判断する機能と、
前記スキップ領域に属しないと判断されたブロックの前記係数に基づき、前記画像のぼやけを判定する機能と
をコンピュータに実現させるコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像のぼやけを検出する技術に関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラが普及し、これに使用されるメモリカードの容量も増大している。そのため、一般のユーザが、画像を大量に保有する場合が増えている。デジタルスチルカメラは、フィルム代が不要であり、気軽に撮影を行えることから、被写体ブレや手ブレ等を意識することなく撮影が行われることが多い。従って、被写体ブレや手ブレに起因して画像にぼやけが生じている場合が比較的多く、撮影された画像をプリンタによって印刷しようとすると、正常な画像を選別する作業が事前に必要であった。
【０００３】
大量の画像の中から正常な画像を選別する作業は、非常に煩雑な作業である。そこで、このような問題に対処するために、ユーザが画像を印刷するのに先立ち、ぼやけが生じている画像を印刷の対象から自動的に排除する技術が望まれている。こうしたぼやけの検出技術に関連し、下記特許文献１には、撮像した画像を８画素×８画素を単位とする複数のブロックに分割して離散コサイン変換し、変換後の各ブロックについて周波数分析を行い、ブロック毎に像のシャープさ（逆に言えば、ぼやけ度合い）を判別する技術が記載されている。
【０００４】
【特許文献１】特開平４−１７０８７２号公報
【特許文献２】特開平４−３７３３７２号公報
【０００５】
しかし、近年のデジタルスチルカメラで撮影される画像の解像度は、数百万ないし１０００万画素もの高解像度であるため、全てのブロックについて周波数分析を行ってシャープであるかぼやけているかを判別したのでは、演算量が膨大となり処理速度が低下する。このような問題は、特に、プリンタやデジタルカメラ、フォトビューワー等といった、ＣＰＵパワーに限界のある小型機器でぼやけの検出を行う場合に看過できない問題となる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ぼやけの検出に伴う上述した種々の問題を考慮し、本発明が解決しようとする課題は、画像のぼやけを高速に検出することにある。
【課題を解決するための手段】
【０００７】
上記課題を踏まえ、本発明の画像処理装置を次のように構成した。すなわち、
複数の画素からなるブロックの集合として構成された画像のぼやけを検出する画像処理装置であって、
前記ブロックを単位として画素値を周波数領域に変換して得られた係数が該ブロック毎に記録されて構成された画像データを入力する画像データ入力部と、
前記入力した画像データが表す画像の所定の領域に、ぼやけの検出の対象としないスキップ領域を設定するスキップ領域設定部と、
前記入力した画像データを構成する各ブロックが、前記スキップ領域に属するか否かを判断する領域判断部と、
前記スキップ領域に属しないと判断されたブロックの前記係数に基づき、前記画像のぼやけを判定するぼやけ判定部と
を備えることを要旨とする。
【０００８】
本発明の画像処理装置によれば、ぼやけの検出の対象としないスキップ領域以外の領域に属するブロックの係数に基づいて画像のぼやけを判定する。従って、画像全体についてぼやけの判定を行うよりも短時間でぼやけの判定を行うことが可能になる。
【０００９】
上記構成の画像処理装置において、
前記スキップ領域設定部は、前記画像データが表す画像の最上部から所定の幅を有する領域に前記スキップ領域を設定するものとしてもよい。
【００１０】
風景や人物を撮影した場合、画像の上部は、空や背景などが撮影されていることが多い。このような領域は、通常、ピントが合っていない領域であるため、かかる領域を上記構成のように最初からスキップ領域として設定すれば、スキップ領域以外の被写体が撮影されている部分に基づき、効率よくぼやけの判定を行うことが可能になる。前記所定の幅としては、例えば、前記画像データの最上部から該画像の高さに対して１５％から２５％までの範囲内（好ましくは２０％）で設定することができる。
【００１１】
上記構成の画像処理装置において、
前記画像データには、該画像が撮影された際の撮影条件を示す情報が記録されており、
前記スキップ領域設定部は、前記撮影条件に応じて前記スキップ領域の大きさを設定するものとしてもよい。
【００１２】
このような構成によれば、画像撮影時の撮影条件に応じて柔軟にスキップ領域を設定することができる。
【００１３】
かかる構成の画像処理装置において、
前記撮影条件とは、絞り値、シャッタスピード、焦点距離の少なくともいずれか１つであり、
前記スキップ領域設定部は、前記絞り値が小さいほど、または、前記シャッタスピードが遅いほど、または、前記焦点距離が長いほど、前記スキップ領域を狭く設定するものとすることができる。
【００１４】
小さな絞り値、遅いシャッタスピード、長い焦点距離といった撮影条件によって撮影された画像には、手ブレや被写体ブレによってぼやけが発生している可能性が高い。従って、上記構成によれば、ぼやけが生じている可能性の高い画像について、スキップ領域を狭く設定することができるので、このような画像について、より広い領域に基づき、精度良く、ぼやけの判定を行うことが可能になる。
【００１５】
上記構成の画像処理装置において、
前記画像データは、ＪＰＥＧ規格に基づいて生成されたデータであり、
前記各ブロックを構成する係数は、前記ＪＰＥＧ規格に基づくハフマン符号化によって可変長のビット列に圧縮されて前記画像データに記録されており、該ビット列には、該ビット列のデータ長を表すデータ長パラメータが記録されており、
前記領域判断部は、前記ブロックが前記スキップ領域に属する場合に、該ブロックの前記ビット列中に記録された前記データ長パラメータに基づき、該ブロックのデータを読み飛ばす手段を備えるものとしてもよい。
【００１６】
ＪＰＥＧ規格では、画像データをデコードする際に、一般的に、（１）ハフマン復号、（２）逆量子化、（３）逆ＤＣＴ変換、（４）色変換、の各処理を順番に行う必要があるが、上記構成によれば、ハフマン復号の処理の過程において、画像データ中のデータ長パラメータに基づき、スキップ領域内に属するブロックのデータを読み飛ばすことができる。このため、スキップ領域内のブロックについては、逆量子化や逆ＤＣＴ変換等の処理が不要となり、ぼやけの判定を短時間に行うことが可能になる。
【００１７】
かかる構成の画像処理装置において、
前記各ブロックを構成する係数は、直流成分の係数と交流成分の係数とからなり、
前記データ長パラメータは、前記直流成分の係数のビット長を表すパラメータと、前記交流成分の係数うち、ゼロではない係数のビット長を表すパラメータとによって構成されているものとすることができる。
【００１８】
このような構成であれば、直流成分の係数のビット長を表すパラメータと、交流成分の係数うち、ゼロではない係数のビット長を表すパラメータとに基づき、スキップ領域内に属するブロックのデータを効率よく読み飛ばすことができる。
【００１９】
上記構成の画像処理装置において、
前記画像データは、ＪＰＥＧ規格に基づいて生成されたデータであり、
前記領域判断部は、前記画像データに対して、ハフマン復号および逆量子化を行って前記各ブロックから前記係数を抽出した後に、該各ブロックが前記所定のスキップ領域に属するか否かを判断するものとしてもよい。
【００２０】
このような構成であれば、逆ＤＣＴ変換や色変換を行うことなく、逆量子化を行った段階で、各ブロックが前記所定のスキップ領域に属するか否かを判断するので、効率よくスキップ領域内のブロックを読み飛ばすことができる。
【００２１】
上記構成の画像処理装置において、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと該各エッジパターンが表す勾配の幅とが対応付けて記憶されたエッジパターン記憶部と、
前記領域判断部によって前記スキップ領域に属しないと判断されたブロックについて、該ブロックから、所定方向の周波数成分を表す係数群を抽出する抽出部と、
前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを前記エッジパターン記憶部から選出する選出部とを備え、
前記ぼやけ判定部は、前記選出された基本エッジパターンに対応付けられた前記勾配の幅と所定の閾値とを比較して、前記ブロック毎にぼやけの有無を判定し、ぼやけの生じていないブロックが少なくとも１つ存在する場合に、前記画像はぼやけていないと判定するものとしてもよい。
【００２２】
このような構成であれば、入力した画像データに記録された周波数領域の係数を画素値に変換することなく、ぼやけの有無を判定することができるので、高速にぼやけの判定を行うことができる。また、ぼやけの生じていないブロックが少なくとも１つ検出されれば、それ以上、ブロック毎にぼやけの有無を判別する必要がないため、更に処理の高速化を図ることができる。
【００２３】
上記構成の画像処理装置において、
前記ぼやけ判定部は、隣接する前記ブロック間で、前記基本エッジパターンの勾配の方向が一致する場合に、前記勾配の幅を累積加算し、該累積加算された勾配の幅と、前記所定の閾値とを比較するものとしてもよい。
【００２４】
このような構成であれば、１つのブロックのサイズを超えるぼやけの幅を検出することができるので、高解像度な画像であっても、精度良く、ぼやけの判定を行うことが可能になる。なお、勾配の方向が一致するとは、勾配の角度までが厳密に一致することをいうのではなく、傾きの符号（プラスかマイナスか）が一致すれば、勾配の方向が一致するものとする。
【００２５】
上記構成の画像処理装置において、
更に、前記ぼやけ判定部によってぼやけていないと判定された画像をユーザに提示する提示部を備えるものとしてもよい。
【００２６】
このような構成によれば、ユーザは、撮影に成功した画像のみを確認することができる。ユーザに提示する方法としては、例えば、表示装置に画像を表示させるものとすることができる。その他、ぼやけていないと判定された画像の一覧を印刷してユーザに提示するものとしてもよい。
【００２７】
上記構成の画像処理装置において、
更に、前記提示された画像の中からユーザによって選択された画像を印刷する印刷部を備えるものとしてもよい。
【００２８】
このような構成によれば、ユーザは、手ブレや被写体ブレによって画像にぼやけの生じている画像を意識することなく、撮影に成功した画像の中から所望の画像を容易に印刷することができる。
【００２９】
なお、本発明は、上述した画像処理装置としての構成のほか、コンピュータが画像のぼやけを検出するぼやけ検出方法や、画像のぼやけを検出するためのコンピュータプログラムとしても構成することができる。かかるコンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【００３０】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．第１実施例：
（Ａ１）プリンタの構成：
（Ａ２）印刷処理：
（Ａ３）ぼやけ判定処理：
（Ａ４）ぼやけ分析処理：
Ｂ．第２実施例：
Ｃ．変形例：
【００３１】
Ａ．第１実施例：
（Ａ１）プリンタの構成：
図１は、本願の画像処理装置の実施例としてのプリンタ１００の外観を示す説明図である。プリンタ１００は、いわゆる複合機タイプのプリンタであり、光学的に画像を読み込むスキャナ１１０や、画像データの記録されたメモリカードＭＣを挿入するためのメモリカードスロット１２０、デジタルカメラ等の機器を接続するＵＳＢインタフェース１３０等を備えている。プリンタ１００は、スキャナ１１０によって取り込んだ画像や、メモリカードＭＣから読み取った画像、ＵＳＢインタフェース１３０を介してデジタルカメラから読み取った画像を印刷用紙Ｐに印刷することができる。また、プリンタケーブルやＵＳＢケーブルによって接続された図示していないパーソナルコンピュータから入力した画像の印刷も行うことができる。
【００３２】
プリンタ１００は、印刷に関する種々の操作を行うための操作パネル１４０を備えている。操作パネル１４０の中央部には、液晶ディスプレイ１４５が備えられている。この液晶ディスプレイ１４５は、メモリカードＭＣやデジタルカメラなどから読み取った画像の表示や、プリンタ１００の各種機能を利用する際のＧＵＩ（グラフィカルユーザインタフェース）の表示に利用される。
【００３３】
プリンタ１００は、メモリカードＭＣやデジタルカメラ等から入力した複数の画像データの中から、ぼやけている画像（以下「ぼやけ画像」という）を排除して、ピントが１カ所でも合っている画像（以下、「合焦画像」という）のみを抽出し、液晶ディスプレイ１４５に表示する機能を有している。ユーザは、こうして液晶ディスプレイ１４５に表示された画像の中から、所望の画像を選択することで、印刷に適した画像のみを印刷することが可能となる。以下では、このぼやけ画像を排除する機能を実現するためのプリンタ１００の構成および処理について詳細に説明する。
【００３４】
図２は、プリンタ１００の内部構成を示す説明図である。図示するように、プリンタ１００は、印刷用紙Ｐに印刷を行う機構として、インクカートリッジ２１２を搭載したキャリッジ２１０や、キャリッジ２１０を主走査方向に駆動するキャリッジモータ２２０、印刷用紙Ｐを副走査方向に搬送する紙送りモータ２３０等を備えている。
【００３５】
キャリッジ２１０は、シアン、マゼンタ、イエロ、ブラック、ライトシアン、ライトマゼンタの色を現す各インクに対応して、計６種類のインクヘッド２１１を備えている。キャリッジ２１０には、これらのインクが収容されたインクカートリッジ２１２が装着されており、インクカートリッジ２１２からインクヘッド２１１に供給されたインクは、図示しないピエゾ素子を駆動することで印刷用紙Ｐに吐出される。
【００３６】
キャリッジ２１０は、プラテン２７０の軸方向と並行に設置された摺動軸２８０に移動自在に保持されている。キャリッジモータ２２０は、制御ユニット１５０からの指令に応じて駆動ベルト２６０を回転させることで、プラテン２７０の軸方向と平行に、すなわち、主走査方向にキャリッジ２１０を往復運動させる。紙送りモータ２３０は、プラテン２７０を回転させることで、プラテン２７０の軸方向と垂直に印刷用紙Ｐを搬送する。つまり、紙送りモータ２３０は、キャリッジ２１０を相対的に副走査方向に移動させることができる。
【００３７】
プリンタ１００は、上述したインクヘッド２１１やキャリッジモータ２２０、紙送りモータ２３０の動作を制御するための制御ユニット１５０を備えている。制御ユニット１５０には、図１に示したスキャナ１１０やメモリカードスロット１２０、ＵＳＢインタフェース１３０、操作パネル１４０、液晶ディスプレイ１４５が接続されている。
【００３８】
制御ユニット１５０は、ＣＰＵ１６０とＲＡＭ１７０とＲＯＭ１８０とによって構成されている。ＲＯＭ１８０には、プリンタ１００の動作を制御するための制御プログラムや、後述する処理で用いられるエッジパターンテーブル１８１が記憶されている。ＣＰＵ１６０はＲＯＭ１８０に記憶された制御プログラムをＲＡＭ１７０に展開して実行することで図示する各機能部（１６１〜１６５）として動作する。
【００３９】
制御ユニット１５０は、ＣＰＵ１６０によって実現される機能部として、画像データ入力部１６１、スキップ領域設定部１６２、ＪＰＥＧデコーダ１６３、領域判断部１６４、ぼやけ判定部１６５を備えている。以下、これらの機能部の働きについて簡単に説明する（詳細な働きについては後述する各種処理内容を参照）。
【００４０】
画像データ入力部１６１は、メモリカードスロット１２０やＵＳＢインタフェース１３０を介して、メモリカードＭＣやデジタルカメラからＪＰＥＧ形式の画像データ（以下、「ＪＰＥＧデータ」という）を入力する機能部である。ＪＰＥＧデータには、８画素×８画素のＭＣＵ（Minimum Coded Unit）と呼ばれるブロック単位で画像が記録されている。この各ブロック内の画像データは、（１）ＲＧＢ色空間からＹＣｂＣｒ色空間への画素値の色変換、（２）空間領域から周波数領域へのＤＣＴ（Discrete Cosine Transform）変換、（３）データの情報量を削減する量子化、（４）エントロピー符号化の一種であるハフマン符号化、が順次行われることでデータ量が圧縮されている。
【００４１】
図３は、ＪＰＥＧデータ内に各ブロックのデータが記録されている順序の一例を示す説明図である。図示するように、ＪＰＥＧデータには、８画素×８画素のブロックが、行毎に記録されている。なお、ＪＰＥＧデータの中には、他の記録順によって各ブロックのデータが記録されているものもあるが、本実施例では、図３に示した記録順で各ブロックが記録されているものとする。
【００４２】
スキップ領域設定部１６２は、画像データ入力部１６１が入力した画像に対して、ぼやけの検出の対象としない領域（以下、「スキップ領域」という）を設定する機能部である。本実施例では、このスキップ領域として、画像の上部２０％の幅の領域を設定する。
【００４３】
ＪＰＥＧデコーダ１６３は、画像データ入力部１６１が入力したＪＰＥＧデータをデコードする機能部である。
【００４４】
図４は、ＪＰＥＧデコーダ１６３の詳細な構成を示す説明図である。図示するように、ＪＰＥＧデコーダ１６３は、ハフマン復号部１９１と、逆量子化処理部１９２と、逆ＤＣＴ変換部１９３と、色空間変換部１９４とによって構成されている。
【００４５】
ハフマン復号部１９１は、ハフマン符号化によって「１」と「０」とによって表されたＪＰＥＧデータのビットストリームをハフマン復号する機能を有する。
【００４６】
逆量子化処理部１９２は、ハフマン復号部１９１によって復号したデータに対して、所定の量子化テーブルを用いて逆量子化を行い、各ブロック内の８×８個のＤＣＴ係数を求める機能部である。
【００４７】
逆ＤＣＴ変換部１９３は、逆量子化処理部１９２によって求められたＤＣＴ係数に対して逆ＤＣＴ変換を行い、ＹＣｂＣｒ形式の画像データを求める機能部である。
【００４８】
色空間変換部１９４は、逆ＤＣＴ変換部１９３によって得られたＹＣｂＣｒ形式のデータをＲＧＢ形式のビットマップデータに変換する機能部である。
【００４９】
ここで説明を図２に戻す。領域判断部１６４は、ＪＰＥＧデータ内の各ブロックが、上述したスキップ領域に属するか否かを判断する機能部である。
【００５０】
ぼやけ判定部１６５は、領域判断部１６４によってスキップ領域に属しないと判断されたブロックのＤＣＴ係数に基づき、画像のぼやけを判断する機能を有する。つまり、本実施例では、図４に示したＪＰＥＧデコーダ１６３の逆量子化処理部１９２によって得られたＤＣＴ係数に基づき、ブロック毎にぼやけの判断を行う。
【００５１】
図５は、逆量子化処理部１９２によって取得されたＤＣＴ係数の配列を示す説明図である。図示するように、各ブロックからは、逆量子化が行われた段階で、Ｆ００からＦ７７までの計６４個のＤＣＴ係数が得られる。これらのうち、最も左上に存在する係数Ｆ００は、直流成分と呼ばれ、他の係数は、交流成分と呼ばれる。各係数は、図中の右側および下側に位置するものほど、周波数の高い値となる。ぼやけ判定部１６５は、図中に「第１の係数群」と記載した水平方向のみの交流成分である係数Ｆ０１〜Ｆ０７と、図中に「第２の係数群」と記載した垂直方向のみの交流成分である係数Ｆ１０〜Ｆ７０とを抽出して、これらの係数群に基づき、ぼやけの判定を行う。かかる判定処理の詳細については後述する。
【００５２】
（Ａ２）印刷処理：
図６は、プリンタ１００のＣＰＵ１６０が実行する印刷処理のフローチャートである。この印刷処理は、メモリカードＭＣ等から画像データを入力して印刷を行うための処理である。
【００５３】
操作パネル１４０を用いたユーザの所定の操作に応じてこの印刷処理の実行が開始されると、まず、ＣＰＵ１６０は、画像データ入力部１６１によってメモリカードスロット１２０に挿入されたメモリカードＭＣからＪＰＥＧデータを入力する（ステップＳ１０）。なお、ここでは、メモリカードＭＣからＪＰＥＧデータを入力するものとするが、ＵＳＢインタフェース１３０を介して接続されたデジタルカメラやコンピュータ等から入力するものとしてもよい。
【００５４】
ＪＰＥＧデータを入力すると、ＣＰＵ１６０は、入力したＪＰＥＧデータについてぼやけ判定処理を行う（ステップＳ２０）。このぼやけ判定処理の詳細については後述する。
【００５５】
１つのＪＰＥＧデータについてぼやけ判定処理を終了すると、ＣＰＵ１６０は、メモリカードＭＣ内からすべてのＪＰＥＧデータを入力したかを判断する（ステップＳ３０）。かかる処理によって、全てのＪＰＥＧデータを入力していないと判断した場合には（ステップＳ３０：Ｎｏ）、処理をステップＳ１０に戻し、次のＪＰＥＧデータを入力して、そのＪＰＥＧデータについてぼやけ判定処理を行う。
【００５６】
上記ステップＳ３０によって、全てのＪＰＥＧデータを入力したと判断した場合には（ステップＳ３０：Ｙｅｓ）、ＣＰＵ１６０は、ステップＳ２０によってぼやけていないと判定された画像、すなわち、合焦画像を、液晶ディスプレイ１４５に一覧表示する（ステップＳ４０）。
【００５７】
合焦画像の一覧を液晶ディスプレイ１４５に表示すると、ＣＰＵ１６０は、操作パネル１４０を介して、ユーザから、印刷の対象となる画像の選択を受け付ける（ステップＳ５０）。そして、選択された画像を、インクヘッド２１１や紙送りモータ２３０、キャリッジモータ２２０等を制御して印刷する（ステップＳ６０）。
【００５８】
以上で説明した印刷処理では、メモリカードＭＣ内の全てのＪＰＥＧデータを入力するものとしたが、メモリカードＭＣ内に複数のフォルダが生成されている場合には、ユーザによって指定されたフォルダついてのみＪＰＥＧデータを入力するものとしてもよい。
【００５９】
（Ａ３）ぼやけ判定処理：
図７は、図６に示した印刷処理のステップＳ２０で実行されるぼやけ判定処理のフローチャートである。この処理が開始されると、まず、ＣＰＵ１６０は、スキップ領域設定部１６２を用いてスキップ領域を設定する（ステップＳ１００）。スキップ領域とは、ぼやけの分析を省略する領域であり、本実施例では、画像の最上部から２０％の幅をスキップ領域として設定するものとした。通常、被写体は画像の中心部に撮影されていることが多く、画像の上部には空や背景など、もともとピントが合っていないものが撮影されていることが多いためである。なお、本実施例では、画像の上部２０％の範囲をスキップ領域に設定するものとしたが、１５％から２５％までの範囲内において設定することも可能である。
【００６０】
スキップ領域を設定すると、ＣＰＵ１６０は、ＪＰＥＧデコーダ１６３のハフマン復号部１９１、逆量子化処理部１９２を用いて、ＪＰＥＧデータから８×８の１ブロック分のＤＣＴ係数を取得する（ステップＳ１１０）（図５参照）。
【００６１】
ＤＣＴ係数を取得すると、ＣＰＵ１６０は、領域判断部１６４を用いて、そのブロックがステップＳ１００で設定したスキップ領域内であるかを判断する（ステップＳ１２０）。この結果、スキップ領域外であれば、そのブロックに対して、ぼやけ判定部１６５を用いてぼやけ分析処理を実行し（ステップＳ１３０）、スキップ領域内であれば、このぼやけ分析処理は実行しない。ぼやけ分析処理の詳細は後述するが、この処理では、分析対象のブロックが、合焦しているブロック（以下、「合焦ブロック」という）であるか、ぼやけているブロック（以下、「ぼやけブロック」という）であるかが分析結果として出力される。
【００６２】
ＣＰＵは、上記ステップＳ１３０においてぼやけ分析処理を行うと、その分析の結果、現在のブロックが合焦ブロックであると判定されたか否かを判断する（ステップＳ１４０）。その結果、現在のブロックが合焦ブロックであると判断されれば（ステップＳ１４０：Ｙｅｓ）、現在、ぼやけの判定を行っている画像を、「合焦画像」であると判定し（ステップＳ１５０）、上述した一連のぼやけ判定処理を終了する。つまり、画像内で１カ所でも合焦しているブロックが検出された場合には、ぼやけ判定処理を終了し、その画像自体が合焦画像であると判断するのである。
【００６３】
これに対して、現在のブロックが合焦ブロックではなく、ぼやけブロックと判定されれば（ステップＳ１４０：Ｎｏ）、ＣＰＵ１６０は、ＪＰＥＧデータ内に、次にデコードすべきブロックがあるかを判断する（ステップＳ１６０）。そして、次のブロックが存在すれば（ステップＳ１６０：Ｙｅｓ）、上記ステップＳ１１０に処理を戻して、次のブロックからＤＣＴ係数を取得し、上述した一連の処理を行う。一方、次のブロックが存在しなければ（ステップＳ１６０：Ｎｏ）、現在、ぼやけの判定を行っている画像を「ぼやけ画像」であると判定し（ステップＳ１７０）、上述した一連のぼやけ判定処理を終了する。
【００６４】
（Ａ４）ぼやけ分析処理：
図８は、図７のステップＳ１３０で実行されるぼやけ分析処理のフローチャートである。このぼやけ分析処理は、現在入力しているブロックが「合焦ブロック」であるか「ぼやけブロック」であるかを分析するための処理である。このぼやけ分析処理は、ブロックの水平方向と垂直方向についてそれぞれ同様の処理が実行されるため、以下では、特記しない限り、水平方向のぼやけ分析処理を行う場合について説明する。
【００６５】
この処理が実行されると、ＣＰＵ１６０は、まず、ぼやけ判定処理（図７参照）のステップＳ１１０で取得した８×８個のＤＣＴ係数の中から、図５に示した水平方向の交流成分である係数群Ｆ０１〜Ｆ０７（垂直方向のぼやけ分析処理にあっては、係数群Ｆ１０〜Ｆ７０）を取得する（ステップＳ２００）。
【００６６】
係数群を取得すると、ＣＰＵ１６０は、下記式（１）に基づき、取得した各係数の絶対値の和Ｓを求め、この値が、所定の平坦閾値を超えるかを判断する（ステップＳ２１０）。
【００６７】
Ｓ＝Σ｜Ｆ０ｉ｜  （ｉ＝１〜７）    ・・・（１）
【００６８】
上記ステップＳ２１０において、和Ｓが所定の平坦閾値以下であると判断されれば（ステップＳ２１０：Ｎｏ）、そのブロックの係数が表す輝度変化が平坦であるとみなし、分析対象のブロックは、「ぼやけブロック」であると判定する（ステップＳ２２０）。
【００６９】
一方、ステップＳ２１０において、和Ｓが所定の平坦閾値を超えると判断されれば（ステップＳ２１０：Ｙｅｓ）、そのブロックには、何らかの輝度変化があると判断できるため、ＣＰＵ１６０は、ブロック内のぼやけの幅を求めるため、まず、取得した各係数を下記式（２）によって正規化する（ステップＳ２３０）。この正規化処理によれば、正規化後の各係数値Ｆｒ０１〜Ｆｒ０７は、係数群の絶対値の和Ｓで、それぞれの係数値Ｆ０１〜Ｆ０７を除算した値となる。
【００７０】
Ｆｒ０ｊ＝Ｆ０ｊ／Ｓ    （ｊ＝１〜７）    ・・・（２）
【００７１】
次に、ＣＰＵ１６０は、ＲＯＭ１８０に記憶されたエッジパターンテーブル１８１を参照して（ステップＳ２４０）、正規化後の各係数値Ｆｒ０１〜Ｆｒ０７によって表される勾配形状がいずれかの基本エッジパターンに近似するかを判断する（ステップＳ２５０）。
【００７２】
図９は、エッジパターンテーブル１８１の一例を示す説明図である。このエッジパターンテーブル１８１には、「Ａ１」から「Ａ１６」までのパターン番号（図の１列目）に対して１６種類の基本エッジパターン（図の３列目）が対応付けて記録されている。基本エッジパターンの横軸は、ブロック内の係数の位置（Ｆ０１〜Ｆ０７もしくはＦ１０〜Ｆ７０）を表しており、縦軸は、正規化後の係数値Ｆｒを表している。つまり、基本エッジパターンは、７つの係数値からなるデータである。
【００７３】
各基本エッジパターンは、図の２列目に示した輝度パターンに基づき生成されている。すなわち、図の２列目に示した輝度パターンをＤＣＴ変換して正規化したものが図の３列目に示す基本エッジパターンとなる。なお、図中の輝度パターンは、実際には、エッジパターンテーブル１８１には記録されておらず、理解の便のために記載している。各輝度パターンは、１ブロック内の輝度変化の典型的な形状を、予め１６種類に分類したものである。本実施例では、このように、基本エッジパターンを１６種類に分類するものとするが、より多くのパターンに分類するものとしてもよい。
【００７４】
エッジパターンテーブル１８１には、更に、基本エッジパターンに対応付けて左側エッジ幅ＬＷと、中央エッジ幅ＭＷと、右側エッジ幅ＲＷという３種類のパラメータが記録されている。左側エッジ幅ＬＷは、輝度パターンの左側に存在する平坦部の幅を表しており、右側エッジ幅ＲＷは、輝度パターンの右側に存在する平坦部の幅を表している。また、中央エッジ幅ＭＷは、左側エッジ幅ＬＷと右側エッジ幅ＲＷとに挟まれる勾配部分の幅を表している。
【００７５】
なお、図示を省略しているが、このエッジパターンテーブル１８１には、「Ａ１」から「Ａ１６」までの基本エッジパターンに加え、これらの基本エッジパターンを左右反転させたエッジパターンがパターン番号Ｂ１〜Ｂ１６に定義されており、上下反転させたエッジパターンがパターン番号Ｃ１〜Ｃ１６に定義されている。また、「Ａ１」から「Ａ１６」までの基本エッジパターンを上下および左右に反転させたエッジパターンがパターン番号Ｄ１〜Ｄ１６に定義されている。つまり、全体で、６４種類の基本エッジパターンがこのエッジパターンテーブル１８１に定義されている。
【００７６】
図８のステップＳ２５０では、ステップＳ２３０で正規化を行った各係数値Ｆｒ０１〜Ｆｒ０７と、基本エッジパターンを構成する各係数値Ｆｂ０１〜Ｆｂ０７との差の絶対値の合計ＳＤを下記式（３）に従って算出し、この合計値ＳＤが最小となる基本エッジパターンをエッジパターンテーブル１８１の中から選択する。そして、選択された基本エッジパターンについての合計値ＳＤが、所定の閾値よりも小さければ、形状が近似する基本エッジパターンが検索されたと判断する（ステップＳ２５０：Ｙｅｓ）。一方、上述した演算によって得られた値ＳＤが、所定の閾値よりも大きい場合には、近似する基本エッジパターンが検索されなかったと判断し（ステップＳ２５０：Ｎｏ）、分析対象のブロックを「ぼやけブロック」であると判定する（ステップＳ２２０）。
【００７７】
ＳＤ＝Σ｜Ｆｒ０ｋ−Ｆｂ０ｋ｜    （ｋ＝１〜７）    ・・・（３）
【００７８】
上記ステップＳ２５０において、形状が近似する基本エッジパターンが検索されたと判断されれば、ＣＰＵ１６０は、その基本エッジパターンに対応付けられた中央エッジ幅ＭＷをエッジパターンテーブル１８１から取得する（ステップＳ２６０）。そして、その中央エッジ幅ＭＷが、所定のぼやけ幅閾値よりも狭いかを判断する（ステップＳ２７０）。この判断の結果、中央エッジ幅ＭＷがぼやけ幅閾値よりも狭ければ（ステップＳ２７０：Ｙｅｓ）、分析対象のブロックが「合焦ブロック」であると判定する（ステップＳ２８０）。中央エッジ幅ＭＷが狭ければ、そのブロック内の輝度変化が急峻であり、被写体の輪郭がはっきりとブロック内に現れていると判断できるためである。これに対して、中央エッジ幅ＭＷがぼやけ幅閾値よりも広ければ（ステップＳ２７０：Ｎｏ）、輪郭がぼやけていると判断できるため、そのブロックを「ぼやけブロック」であると判定する（ステップＳ２２０）。こうして分析対象のブロックが、「合焦ブロック」であるか「ぼやけブロック」であるかを判定すると、ＣＰＵ１６０は、上述した一連のぼやけ分析処理を終了して、処理を図７のぼやけ判定処理にリターンする。
【００７９】
なお、上述したように、このぼやけ分析処理は、ブロック内の水平方向と垂直方向とについてそれぞれ行われるが、少なくともいずれか一方のぼやけ分析処理において、「合焦ブロック」と判定されれば、他方の分析処理で「ぼやけブロック」と判定されたとしてもそのブロックは、合焦ブロックであると判定するものとする。
【００８０】
以上で説明した第１実施例によれば、入力した画像の上部に位置するスキップ領域内のブロックについては、ぼやけの分析を行わないため、入力したＪＰＥＧデータが、合焦画像であるか、ぼやけ画像であるかを高速に判別することができる。特に、プリンタ１００に搭載されるＣＰＵは、処理能力が比較的低いものが多いため、スキップ領域をとばしてぼやけの分析を行うことで、大幅に処理時間を短縮することができる。
【００８１】
また、本実施例では、図７に示したように、スキップ領域を除いた領域内で、１カ所でも合焦ブロックが検出されれば、その時点で、ぼやけ判定処理を終了し、入力した画像が合焦画像であると判定する。従って、画像がぼやけているか否かを更に高速に判別することが可能になる。
【００８２】
更に、本実施例では、ＪＰＥＧデータをデコードして８×８個のＤＣＴ係数を取得した後、そのすべてのＤＣＴ係数を用いるのではなく、水平方向のみの交流成分と、垂直方向のみの交流成分のみを用いてぼやけの判定を行うため、演算量が削減され、処理速度を向上させることができる。
【００８３】
Ｂ．第２実施例：
上述した第１実施例では、ＪＰＥＧデータ内の各ブロックを逆量子化して、８×８個のＤＣＴ係数を取得した後に、ブロックがスキップ領域に属するか否かを判断するものとした。これに対して、第２実施例では、逆量子化を行う前にブロックがスキップ領域に属するか否かを判断することとし、更に、効率的にブロックを読み飛ばす処理を行うものとする。なお、プリンタ１００のハードウェア構成は、第１実施例と同様であるため、以下では、第１実施例とは異なる処理内容のぼやけ判定処理についてのみ説明する。
【００８４】
図１０は、第２実施例において実行されるぼやけ判定処理のフローチャートである。この処理が開始されると、まず、ＣＰＵ１６０は、第１実施例と同様に、スキップ領域を設定する（ステップＳ３００）。
【００８５】
スキップ領域を設定すると、ＣＰＵ１６０は、これから入力するブロックの位置がスキップ領域内であるか否かを判定する（ステップＳ３１０）。ＪＰＥＧデータには、図４に示すようにブロックが行毎に格納されているため、実際にＪＰＥＧデータをデコードしなくても、これから入力するブロックがスキップ領域内であるかを判定することができる。
【００８６】
上記ステップＳ３１０において、これから入力するブロックがスキップ領域内ではないと判断されれば（ステップＳ３１０：Ｎｏ）、ＣＰＵ１６０は、ＪＰＥＧデコーダ１６３のハフマン復号部１９１と逆量子化処理部１９２とを用いて、ＪＰＥＧデータをデコードし、８×８個のＤＣＴ係数を取得する（ステップＳ３２０）。そして、これらのＤＣＴ係数に基づき、図８に示したぼやけ分析処理を実行する（ステップＳ３３０）。このぼやけ分析処理の処理内容は第１実施例と同一である。ぼやけ分析処理が完了すると、ＣＰＵ１６０は、その分析結果が「合焦ブロック」であるかを判定し（ステップＳ３４０）、「合焦ブロック」であれば（ステップＳ３４０：Ｙｅｓ）、現在、ぼやけの判定を行っている画像を、「合焦画像」であると判定して（ステップＳ３５０）、上述した一連のぼやけ判定処理を終了する。
【００８７】
上記ステップＳ３１０において、これから入力するブロックがスキップ領域内であると判断されれば、ＣＰＵ１６０は、ハフマン復号部１９１を用いて、ＪＰＥＧデータの中で、１ブロック分のデータを読み飛ばすスキップ処理を実行する（ステップＳ３６０）。以下、図１１および図１２を用いて、このスキップ処理の詳細について説明する。
【００８８】
図１１は、ＪＰＥＧデータを構成する１ブロック分のビット列の一例を示す説明図である。ここでは５６ビットのビット列を示した。ＪＰＥＧ規格においては、ハフマン符号化によって、８×８個のＤＣＴ係数が、可変長のビット列に圧縮されるため、各ブロックを表すビット列は、まちまちのビット長となる。ハフマン復号部１９１は、図１２に示すハフマンテーブルを参照しつつ、このビット列の復号を行う。
【００８９】
図１２は、ハフマン復号部１９１が用いるハフマンテーブルの一例を示す説明図である。１つのハフマンテーブルには、ＤＣハフマンテーブルとＡＤハフマンテーブルとが含まれる。ＤＣハフマンテーブルは、図５に示した直流成分のＤＣＴ係数「Ｆ００」を復号するためのテーブルであり、ＡＣハフマンテーブルは、これを除く６３個の交流成分のＤＣＴ係数を復号するためのテーブルである。ＤＣハフマンテーブルには、シンボルＳＳＳＳと２進符号とが対応付けて記憶されており、ＡＣハフマンテーブルには、シンボルＲＲＲＲとシンボルＳＳＳＳおよび２進符号とが対応付けて記憶されている。
【００９０】
ハフマン復号部１９１は、ＪＰＥＧデータのビットストリームを読み込み、最初の２ビットがまず、ＤＣハフマンテーブルのシンボルＳＳＳＳの番号０に対応する２進符号「００」に一致するかを判断する。そして、最初の２ビットが、「００」でなければ、最初の３ビットが、シンボルＳＳＳＳの番号１〜５に一致するかを判断する。それでもなお、どのシンボルにも該当しない場合には、１ビットずつビット列を読み進み、シンボルＳＳＳＳの番号６〜１１のいずれかに一致するかを判断する。このようにして、いずれかのシンボルが決定すると、そのシンボルＳＳＳＳの番号が、直流成分のＤＣＴ係数を表すビット列の長さとなる。図１１に示した例では、最初の３ビットが「１１０」であるため、図１２のＤＣハフマンテーブルによれば、シンボルの番号が、「５」となる。そのため、次の５ビットの２進数で表される値「１０００１」が、直流成分のＤＣＴ係数「１７」となる。
【００９１】
ただし、上記ステップＳ３４０のスキップ処理では、ＤＣＴ係数の読み込みまでは行わず、シンボルＳＳＳＳの番号が判明した時点で、その番号の値分、ビット列を読み飛ばす（スキップする）。つまり、図１１の場合には、先頭から９ビット目まで、読み飛ばすことになる。
【００９２】
以上のようにして、ハフマン復号部１９１は、直流成分のＤＣＴ係数を読み飛ばすと、読み飛ばした先のビット列が、ＡＣハフマンテーブルのいずれかのシンボルに該当するかを判断する。交流成分のシンボルは、「ＲＲＲＲ」というゼロレングス（ゼロの個数）を表すシンボルと、「ＳＳＳＳ」というＤＣＴ係数のビット列の長さを表すシンボルとからなる。図１１に示したビット列では、９ビット目と１０ビット目のビット列が「０１」となるため、ＡＣハフマンテーブルを参照すると、シンボルＲＲＲＲは、「０」となり、シンボルＳＳＳＳは、「２」となる。つまり、ゼロレングスは「０」であり、ＤＣＴ係数の値が２ビットで表されていることになる。従って、この「０１」のビット列に続く２ビットの値は、「０１」であるから、最初の交流成分のＤＣＴ係数の値は、「１」となる。ただし、ハフマン復号部１９１は、交流成分についても、直流成分と同じく、ＤＣＴ係数の読み込みは行わない。従って、シンボルＳＳＳＳが判明した時点で、そのシンボルの番号の値分、ビット列を読み飛ばす。図１１に示したビット列では、９ビット目と１０ビット目によってシンボルＳＳＳＳが判明すると、このシンボルＳＳＳＳの番号が「２」であるため、１１ビット目と１２ビット目のビット列「０１」を読み飛ばすことになる。
【００９３】
以上で説明したように、ハフマン復号部１９１は、直流成分のシンボルＳＳＳＳと交流成分のシンボルＳＳＳＳとをブロックのデータ長を判別するためのデータ長パラメータとして取り扱い、このパラメータに基づいてビット列を読み進めていくことにより、ＤＣＴ係数の値までをデコードすることなく、効率的に１ブロック先のデータまで、ビット列の読み込みをスキップすることができる。なお、１ブロック分の最後には、ブロックの終端を表すビット列「１０１０（ＥＯＢ）」が記録されていることがあるが、ブロックの最後のＤＣＴ係数がゼロではない場合には、このＥＯＢは記録されないため、かかるＥＯＢの値のみを手掛かりとすることでブロックの終端を判別することはできない。従って、上述したように、ビット列の先頭からシンボルＳＳＳＳを解析して、ＤＣＴ係数を読み飛ばす方法が、最も効率的に１ブロック先までビット列を読み飛ばす方法となる。
【００９４】
ここで説明を図１０に戻す。上記ステップＳ３６０において、スキップ処理を実行した後、あるいは、ステップＳ３３０におけるぼやけ分析処理の分析結果が「ぼやけブロック」であった場合には（ステップＳ３４０：Ｎｏ）、ＣＰＵ１６０は、次に読み込むべきブロックがあるかを判定する（ステップＳ３７０）。その結果、次のブロックがあると判定された場合には（ステップＳ３７０：Ｙｅｓ）、ステップＳ３１０に処理を戻し、次のブロックについて、上述した一連の処理を繰り返して実行する。これに対して、次のブロックが存在しないと判定されれば（ステップＳ３７０：Ｎｏ）、現在、ぼやけの判定を行っている画像を「ぼやけ画像」であると判定し（ステップＳ３８０）、上述した一連のぼやけ判定処理を終了する。
【００９５】
以上で説明した第２実施例のぼやけ判定処理によれば、ＪＰＥＧデータをハフマン復号や逆量子化して８×８個のＤＣＴ係数を取得するまでもなく、部分的なハフマン復号を行う処理のみで、スキップ領域内のブロックを効率的に読み飛ばすことができる。従って、画像がぼやけているか否かを高速に判別することが可能になる。
【００９６】
Ｃ．変形例：
以上、本発明の種々の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、上記実施例では、プリンタ１００がぼやけの判定を行うものとしたが、上述した各種処理を実行するためのプログラムをコンピュータにインストールすることで、コンピュータがぼやけの判定を行うものとしてもよい。その他、以下のような変形が可能である。
【００９７】
（Ｃ１）変形例１：
上述した各実施例のぼやけ判定処理では、画像の上部２０％の領域をスキップ領域に設定した。これに対して、本変形例では、ＪＰＥＧデータに記録された撮影条件を示すパラメータの値に応じて、このスキップ領域の大きさを設定するものとする。
【００９８】
図１３は、スキップ領域の大きさを設定するスキップ領域設定処理のフローチャートである。かかる処理は、図７に示した第１実施例のぼやけ判定処理のステップＳ１００や図１０に示した第２実施例のぼやけ判定処理のステップＳ３００に代えて実行される処理である。
【００９９】
このスキップ領域設定処理が実行されると、まず、ＣＰＵ１６０は、入力したＪＰＥＧデータのヘッダ情報を解析する（ステップＳ４００）。そして、スキップ領域の設定に用いるパラメータ値を取得する（ステップＳ４１０）。デジタルカメラで撮影されたＪＰＥＧデータには、通常、ＥＸＩＦという規格に基づいて、そのヘッダ情報にシャッタスピードや絞り値、焦点距離など、種々の撮影条件を示すパラメータが記録される。本変形例では、そのうち、シャッタスピードの値を取得するものとする。
【０１００】
シャッタスピードの値を取得すると、ＣＰＵ１６０は、所定のマップや関数に基づき、その値に応じて、スキップ領域の大きさを設定する（ステップＳ４２０）。本変形例では、シャッタスピードが遅い値ほど、スキップ領域が画像の上部０％から２５％の間で狭くなるように設定を行う。シャッタスピードが遅くなるほど、手ブレ等の影響が出やすくなり、その結果、画像にぼやけが生ずる確率が高くなる。そこで、本変形例では、シャッタスピードが遅いほど、スキップ領域を狭くすることで、ぼやけ分析をおこなう範囲を大きくするものとした。こうすることで、精度良く、画像のぼやけの有無を判別することが可能になる。
【０１０１】
なお、本変形例では、シャッタスピードの値に応じてスキップ領域の面積を可変するものとしたが、その他にも、例えば、絞り値や焦点距離などのパラメータに応じてスキップ領域の面積を可変させるものとしてもよい。この場合、絞り値が小さいほど、あるいは、焦点距離が長いほど、スキップ領域を狭く設定するものとする。こうすることで、ボヤケが生じている可能性が高い画像ほど、スキップ領域を狭く設定し、ぼやけ分析をより広範囲で行うことが可能になる。
【０１０２】
（Ｃ２）変形例２：
上述した実施例では、ぼやけ分析処理において、ブロック毎にぼやけの有無を判別するものとした。これに対して、隣接したブロック間のぼやけ幅を累積していくことで、ブロックを跨って存在するぼやけ幅を検出することもできる。
【０１０３】
図１４ないし図１６は、ぼやけ幅を累積する概念を示す説明図である。この変形例では、図８に示したぼやけ分析処理のステップＳ２５０によって、ブロック毎に基本エッジパターンを決定した後に、ＣＰＵ１６０は、隣接ブロック同士でエッジパターンの傾き方向が一致するかを判断するものとする。図１４には、隣接ブロック同士のエッジパターンの傾き方向が一致する例を示し、図１５には、一致しない例を示している。
【０１０４】
図１４のように両者の傾き方向が一致すれば、そのエッジパターン同士は、画像中において、同じぼやけ部分を形成している場合がある。そのため、ＣＰＵ１６０は、現在注目しているブロックの右側エッジ幅ＲＷとこれに隣接しているブロックの左側エッジ幅ＬＷの加算値が、図１６に示すように、所定の連結誤差閾値内であるかを判定し、連結誤差閾値内であれば、これらのブロックのエッジパターンは、同じぼやけ部分を形成していると判断できる。そこで、このような場合には、ＣＰＵ１６０は、図８のステップＳ２６０において、両ブロックのぼやけ幅を累積加算し、ブロックを跨ったぼやけ幅を算出する。そして、ステップＳ２７０において、累積加算したぼやけ幅と所定のぼやけ幅閾値とを比較して、そのブロックが合焦ブロックであるかぼやけブロックであるかを判断する。
【０１０５】
なお、上述した処理をブロックの連なり（横方向および縦方向）に沿って逐次実行していくことで、２つの隣接ブロックだけではなく、複数のブロックに跨って存在するぼやけの幅を算出することができる。従って、図８のステップＳ２７０では、その結果算出されたぼやけ幅と、所定のぼやけ幅閾値とを比較すれば、１つのブロックのサイズを超えるぼやけ幅に基づき、分析対象のブロックが合焦ブロックかぼやけブロックかを判断することができる。なお、複数のブロックにぼやけ幅が跨る場合には、ぼやけの途中部分に位置するブロックについては、一律にぼやけブロックであると判断し、ぼやけの終端に位置するブロックに累積されたぼやけ幅に基づき、そのブロックが合焦ブロックであるか否かを判断するものとする。上述したぼやけ判定処理では、ぼやけの位置の精度は求められず、１カ所でも合焦ブロックがあるかどうかを判定するからである。
【０１０６】
以上で説明した変形例によれば、ぼやけ部分が１ブロックのサイズを超えるような高解像度な画像においても、精度良く、ぼやけの有無を判断することができる。例えば、６００万画素（３０００画素×２０００画素）の画像を、Ｌ版サイズ（約１３ｃｍ×約９ｃｍ）の印刷用紙に印刷すると、８×８画素からなる１ブロックの実サイズは、０．３５ｍｍ×０．３５ｍｍほどの大きさになる。そのため、１ブロックのサイズ内でぼやけの有無を判定することが困難であるが、本変形例によってぼやけ幅を連結していけば、０．３５ｍｍを超えるぼやけ幅についても検出することが可能となり、精度良く画像がぼやけているかを判断することができる。
【０１０７】
（Ｃ３）変形例３：
上記実施例および変形例では、スキップ領域は、画像の上部に位置する所定の幅の領域であるものとして説明した。しかし、スキップ領域の形状はこれに限られない。
【０１０８】
図１７ないし図１９は、スキップ領域のバリエーションを示す説明図である。図１７には、画像の周囲をスキップ領域に設定する例を示し、図１８には、画像の左右端をスキップ領域に設定する例を示した。このようなスキップ領域によっても、中心に撮影されている被写体に基づき、画像のぼやけを効率よく判別することができる。
【０１０９】
また、図１９には、カメラを縦位置にして撮影した場合の画像を示している。このような場合には、画像の右側（あるいは左側）の端部にスキップ領域を設定することができる。スキップ領域を画像中のどの位置に設定するかは、ユーザ自身が操作パネル１４０を用いて設定できるものとしてもよいし、ＣＰＵ１６０が、ＪＰＥＧデータのヘッダ情報を解析して、撮影時のカメラの位置が縦位置か横位置かを判別し、その判別結果に応じて設定するものとしてもよい。
【０１１０】
なお、上記実施例や本変形例では、スキップ領域を矩形状に設定する例を示しているが、略円形状や台形状等に設定するものとしてもよい。
【０１１１】
（Ｃ４）変形例４：
上記実施例では、ブロック毎にぼやけの分析を行う際に、各ブロックから抽出した水平方向および垂直方向の係数群と、エッジパターンテーブル１８１に記録された基本エッジパターンとを照合して、そのブロックがぼやけているか否かを判定するものとした。しかし、ぼやけの分析方法はかかる方法に限られない。例えば、各ブロックの高周波成分の係数値（例えば、図５において、係数Ｆ４４〜Ｆ４７，Ｆ５４〜Ｆ５７，Ｆ６４〜Ｆ６７，Ｆ７４〜Ｆ７７）の和が所定の閾値を超える場合に、そのブロックは合焦ブロックであると判断することもできる。急峻な輝度変化を有するブロックほど、高周波成分の係数値が大きくなるからである。従って、このような方法によっても、ブロック毎にぼやけの分析を行うことができる。
【図面の簡単な説明】
【０１１２】
【図１】プリンタ１００の外観を示す説明図である。
【図２】プリンタ１００の内部構成を示す説明図である。
【図３】ＪＰＥＧデータ内に各ブロックのデータが記録されている順序の一例を示す説明図である。
【図４】ＪＰＥＧデコーダ１６３の詳細な構成を示す説明図である。
【図５】ＤＣＴ係数の配列を示す説明図である。
【図６】印刷処理のフローチャートである。
【図７】ぼやけ判定処理のフローチャートである。
【図８】ぼやけ分析処理のフローチャートである。
【図９】エッジパターンテーブル１８１の一例を示す説明図である。
【図１０】第２実施例において実行されるぼやけ判定処理のフローチャートである。
【図１１】ＪＰＥＧデータを構成する１ブロック分のビット列の一例を示す説明図である。
【図１２】ハフマンテーブルの一例を示す説明図である。
【図１３】スキップ領域設定処理のフローチャートである。
【図１４】ぼやけ幅を累積する概念を示す説明図である。
【図１５】ぼやけ幅を累積する概念を示す説明図である。
【図１６】ぼやけ幅を累積する概念を示す説明図である。
【図１７】スキップ領域のバリエーションを示す説明図である。
【図１８】スキップ領域のバリエーションを示す説明図である。
【図１９】スキップ領域のバリエーションを示す説明図である。
【符号の説明】
【０１１３】
１００…プリンタ
１１０…スキャナ
１２０…メモリカードスロット
１３０…ＵＳＢインタフェース
１４０…操作パネル
１４５…液晶ディスプレイ
１５０…制御ユニット
１６０…ＣＰＵ
１６１…画像データ入力部
１６２…スキップ領域設定部
１６３…ＪＰＥＧデコーダ
１６４…領域判断部
１６５…ぼやけ判定部
１７０…ＲＡＭ
１８０…ＲＯＭ
１８１…エッジパターンテーブル
１９１…ハフマン復号部
１９２…逆量子化処理部
１９３…逆ＤＣＴ変換部
１９４…色空間変換部
２１０…キャリッジ
２１１…インクヘッド
２１２…インクカートリッジ
２２０…キャリッジモータ
２３０…紙送りモータ
２６０…駆動ベルト
２７０…プラテン
２８０…摺動軸
【図１】
2008028886.tif 000003
【図２】
2008028886.tif 000004
【図３】
2008028886.tif 000005
【図４】
2008028886.tif 000006
【図５】
2008028886.tif 000007
【図６】
2008028886.tif 000008
【図７】
2008028886.tif 000009
【図８】
2008028886.tif 000010
【図９】
2008028886.tif 000011
【図１０】
2008028886.tif 000012
【図１１】
2008028886.tif 000013
【図１２】
2008028886.tif 000014
【図１３】
2008028886.tif 000015
【図１４】
2008028886.tif 000016
【図１５】
2008028886.tif 000017
【図１６】
2008028886.tif 000018
【図１７】
2008028886.tif 000019
【図１８】
2008028886.tif 000020
【図１９】
2008028886.tif 000021