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