説明

画像処理装置およびぼやけ検出方法

【課題】使用するメモリ容量を削減しつつ、高解像度な画像においても画像のぼやけを精度良く検出する。
【解決手段】プリンタ100は、JPEGデータからブロック毎に水平方向のDCT係数群と垂直方向のDCT係数群とを取得し、これらの係数群によって表される輝度変化に近似するエッジパターンを所定のテーブルから選出して、そのパターン番号をRAM170に記録する。プリンタ100は、RAM170に記録された各ブロックのパターン番号に基づき、水平方向および垂直方向に隣接するブロック同士の輝度変化が連続するか否かを判断し、その輝度変化が連続する場合にエッジパターンを連結していくことで、ブロックを跨いで存在するぼやけの幅を累積する。そして、この累積値に基づき、画像のぼやけの有無を判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像のぼやけを検出する技術に関する。
【背景技術】
【0002】
近年、デジタルスチルカメラが普及し、これに使用されるメモリカードの容量も増大している。そのため、一般のユーザが、画像を大量に撮影する機会が増えている。デジタルスチルカメラは、フィルム代が不要であり、気軽に撮影を行えることから、被写体ブレや手ブレ等を意識することなく撮影が行われることが多い。従って、撮影された画像をプリンタによって印刷しようとすると、被写体ブレや手ブレに起因して画像にぼやけが生じている画像が比較的多く、正常な画像を選別する作業が事前に必要であった。
【0003】
大量の画像の中から正常な画像を選別する作業は、非常に煩雑な作業である。そこで、このような問題に対処するために、ユーザが画像を印刷するのに先立ち、自動的にぼやけが生じている画像を印刷の対象から排除する技術が望まれている。こうしたぼやけの検出技術に関連し、下記特許文献1には、撮像した画像を8画素×8画素を単位とする複数のブロックに分割して、離散コサイン変換された各ブロックについて周波数分析を行い、ブロック毎に像のシャープさ(逆に言えば、ぼやけ度合い)を判別する技術が記載されている。
【0004】
【特許文献1】特開平4−170872号公報
【特許文献2】特開平10−271516号公報
【特許文献3】特開2002−51178号公報
【0005】
しかし、近年のデジタルスチルカメラで撮影される画像の解像度は、数百万ないし1000万画素もの高解像度であるため、特許文献1に記載のように8画素×8画素だけで構成されるブロック内だけでぼやけやシャープさを判別することは困難であった。具体的に言えば、L版の印刷用紙(約横130mm×縦90mm)に600万画素(約横3000画素×縦2000画素)の画像を印刷した場合には、横8画素は、約0.35mmの幅に相当し、このような狭い幅の中だけで画像がシャープであるかぼやけているかを客観的に判別することは困難である。つまり、近年撮影される高解像度な画像において、特許文献1に記載の技術を直接適用することは困難になってきている。
【0006】
また、特許文献1に記載の技術によって数百万画素あるいはそれ以上の高解像度な画像のぼやけを分析しようとすると、演算量が膨大となり、それに伴いメモリの使用量も多くなる。このような問題は、特に、プリンタやデジタルカメラ、フォトビューワー等といった、CPUパワーやメモリ容量に制限のある小型機器でぼやけの検出を行う場合に看過できない問題となる。
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述した種々の問題を考慮し、本発明が解決しようとする課題は、使用するメモリ容量を削減しつつ、高解像度な画像においても画像のぼやけを精度良く検出することにある。
【課題を解決するための手段】
【0008】
上記課題を踏まえ、本発明の画像処理装置を次のように構成した。すなわち、
複数の画素からなるブロックの集合として構成された画像のぼやけを検出する画像処理装置であって、
前記ブロックを単位として行われた空間領域から周波数領域への変換により得られた係数が、該ブロック毎に記録されて構成された画像データを入力する画像データ入力部と、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと、該各基本エッジパターンにそれぞれ一意に割り振られたパターン番号とが対応付けて記憶されたエッジパターン記憶部と、
前記入力した画像データの各ブロックから、所定方向の周波数成分を表す係数群を抽出する係数抽出部と、
前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを前記エッジパターン記憶部から選出するパターン照合部と、
前記選出された基本エッジパターンに対応する前記パターン番号を前記ブロックに関連づけて記憶するパターン番号記憶部と、
前記パターン番号記憶部に記憶されたパターン番号を参照し、前記画像内における前記ブロックの連なりに沿って前記基本エッジパターンの勾配の方向が一致する範囲をぼやけ幅として検出するぼやけ幅検出部と、
前記検出されたぼやけ幅に基づいて、前記画像データが表す画像のぼやけを判定するぼやけ判定部と
を備えることを要旨とする。
【0009】
本発明の画像処理装置では、画像データを構成するブロック毎に所定方向の周波数成分を表す係数群を抽出して、この係数群が表す画素値の勾配の形状に近似した基本エッジパターンをエッジパターン記憶部から選出し、そのパターン番号をパターン番号記憶部に記憶する。そして、このパターン番号に基づき、ブロックの連なりに沿って基本エッジパターンのつながり状態を判定し、基本エッジパターンの勾配の方向が一致する範囲をぼやけ幅として検出する。従って、ぼやけの幅が1つのブロックのサイズを超える場合においても、精度良く画像がぼやけているか否かを判断することができる。
【0010】
また、上述のように、本発明では、隣接ブロック間の基本エッジパターンの勾配の方向が一致するかを判定するかにあたり、画像データに記録された係数を用いるのではなく、その係数が表す勾配形状に近似した基本エッジパターンのパターン番号を用いる。従って、処理時間が大幅に短縮され、使用するメモリ容量を格段に削減することができる。例えば、あるブロックに関連づけられたパターン番号が、右下がり勾配を表す基本エッジパターンの番号であり、その隣接ブロックに関連づけられたパターン番号も、右下がりの勾配を表す基本エッジパターンの番号であれば、これらのブロック間では、勾配の方向が一致すると判断することができる。なお、「勾配の方向が一致」とは、その勾配の角度までが一致することを求めるものではない。例えば、傾きの符号が一致すれば、勾配の方向が一致するといえる。
【0011】
なお、本願では、ブロック毎に空間領域から周波数領域への変換により得られた係数が記録された画像データを入力するものとしたが、このような画像データとしては、例えば、JPEG形式の画像データがある。
【0012】
上記構成の画像処理装置において、
前記エッジパターン記憶部には、更に、前記パターン番号に対応付けて、前記各基本エッジパターンが表す勾配の幅が記憶されており、
前記ぼやけ幅検出部は、前記基本エッジパターンの勾配の方向が一致する範囲に存在する各ブロックのパターン番号に対応付けられた前記勾配の幅を前記エッジパターン記憶部から読み出し、該勾配の幅を加算して、前記ぼやけ幅を算出するものとしてもよい。
【0013】
このような構成であれば、各基本エッジパターンが表す勾配の幅が、エッジパターン記憶部に予め記憶されているため、ぼやけ幅の算出を高速に行うことが可能になる。
【0014】
上記構成の画像処理装置において、
前記ぼやけ幅検出部は、前記ブロックの連なりに沿って、注目するブロックを、前記画像データ内に移動させていき、該注目ブロックと該注目ブロックの移動先の隣接ブロックとにそれぞれ関連づけられた前記パターン番号を参照して、該注目ブロックと該隣接ブロックの基本エッジパターンの勾配の方向が一致するか否かを判定し、該勾配の方向が一致する場合に、該注目ブロックのパターン番号に対応付けられた前記勾配の幅を累積加算していくことで、前記ぼやけ幅を算出するものとしてもよい。
【0015】
このような構成であれば、画像内に注目ブロックを順次移動させていき、勾配の幅を累積加算しながらぼやけ幅を算出するので、ぼやけ幅の算出に要するメモリの使用量を節減することができる。
【0016】
上記構成の画像処理装置において、
前記画像データには、前記ブロックが水平方向および垂直方向に連なっており、
前記係数抽出部は、前記係数群として、水平方向の周波数成分を表す第1の係数群と、垂直方向の周波数成分を表す第2の係数群とを抽出し、
前記パターン照合部は、前記第1の係数群と前記第2の係数群とについて、それぞれ、前記基本エッジパターンを選出し、
前記パターン番号記憶部は、前記選出された2つの基本エッジパターンに対応する前記パターン番号をそれぞれ前記ブロックに関連付けて記憶し、
前記ぼやけ幅検出部は、水平方向および垂直方向についてそれぞれ前記ぼやけ幅を算出し、
前記ぼやけ判定部は、前記水平方向と垂直方向とについてそれぞれ算出された前記ぼやけ幅のうち、大きい方のぼやけ幅に基づき、前記画像データが表す画像のぼやけを判定するものとしてもよい。
【0017】
このような構成によれば、1つのブロックについて、水平方向のぼやけ幅と垂直方向のぼやけ幅とを算出することができるので、これらのうち、大きい方のぼやけ幅を用いれば、より精度良く画像のぼやけを判定することが可能になる。
【0018】
上記構成の画像処理装置において、
前記ぼやけ幅検出部は、前記水平方向について累積加算した勾配の幅を、ブロック1つ分保持する横累積バッファに保存し、前記垂直方向について累積加算した勾配の幅を、ブロック1行分保持する縦累積バッファに保存し、前記注目ブロックを移動させた場合に、これらのバッファを参照することで移動前のブロックに累積された水平および垂直方向の勾配の幅を取得するものとしてもよい。
【0019】
このような構成によれば、1ブロック分の累積値を保持する横累積バッファと、ブロック1行分の累積値を保持する縦累積バッファという必要最小限のバッファを用意することで、水平方向と垂直方向についてそれぞれ勾配の幅の累積することができる。この結果、メモリの使用量を節減することができる。
【0020】
上記構成の画像処理装置において、
前記パターン番号記憶部は、前記注目ブロックが含まれる第1の行と該注目ブロックの下側に隣接するブロックが含まれる第2の行とについて前記パターン番号を記憶可能な記憶領域を有し、前記注目ブロックが該注目ブロックの属する行の右端に移動した場合に、前記第2の行以降に記憶されたパターン番号を、それぞれ前の行に繰り上げて記憶することで、次に選出されたブロックのパターン番号を、該パターン番号記憶部の空領域に記憶していくものとしてもよい。
【0021】
このような構成によれば、画像全体のパターン番号ではなく、注目ブロックに隣接するブロックが含まれる行についてのみパターン番号を記憶すればよいため、使用するメモリ容量を大幅に削減することが可能になる。
【0022】
上記構成の画像処理装置において、
前記画像データには、前記ブロックがn(nは1以上の整数)行毎に記録されており、
前記パターン番号記憶部は、前記ブロック(n+1)行分のパターン番号が記憶可能な記憶領域を用意するものとしてもよい。
【0023】
このような構成によれば、画像データにブロックが記録されている単位行数に応じて必要最低限のパターン番号を記憶することができるので、メモリ容量を節減することができる。なお、画像データがJPEG規格に基づくデータであれば、ブロックは、1行または2行単位で記録されているため、パターン番号記憶部は、2行または3行分のパターン番号を記憶可能な記憶領域を用意するものとすることができる。どちらの行数単位でブロックが記録されているかは、JPEGデータのヘッダ情報を解析することで判別することができる。
【0024】
上述した種々の構成の画像処理装置において、
前記ぼやけ判定部は、
前記ぼやけ幅と所定の閾値とに基づき、前記ブロック毎にぼやけの有無を判定するブロックぼやけ判定部と、
前記画像データ内の所定のウィンドウ領域に含まれる全ブロックについて、前記ブロックぼやけ判定手段によるぼやけの有無を集計し、該集計結果と所定の閾値とに基づき、該ウィンドウ領域内がぼやけているか否かを判断するウィンドウぼやけ判定部と、
前記画像データ中において、前記ウィンドウ領域を移動させていった結果、少なくとも1カ所、ぼやけていないと判断された前記ウィンドウ領域が存在する場合に、前記画像データが表す画像全体がぼやけていないと判断する画像ぼやけ判定部とを備えるものとしてもよい。
【0025】
このような構成によれば、複数のブロックによって構成されるウィンドウ領域毎にぼやけの有無を判断することができるので、より人の感性に近い精度で画像にぼやけが生じているかを判断することが可能になる。所定のウィンドウ領域としては、例えば、画像データがL版の印刷用紙に印刷されると想定すると、1cm×1cmや2cm×2cmの領域とすることができる。このようなサイズのウィンドウ領域内が画像中のいずれかの箇所でぼやけていないと判断されれば、その領域に焦点が合っているものと判断することができるためである。
【0026】
上記構成の画像処理装置において、
前記ウィンドウ領域は、更に、それぞれが前記ブロックのサイズよりも大きい複数のサブウィンドウによって区画されており、
前記ブロックぼやけ判定部は、前記ブロック毎のぼやけの有無を、該ブロックが含まれる前記サブウィンドウ毎に集計し、
前記ウィンドウぼやけ判定部は、前記サブウィンドウについて集計された集計値を、更に、前記ウィンドウ領域に含まれる全サブウィンドウについて集計することで、該ウィンドウ領域に含まれる全ブロックについての前記ぼやけの有無の集計を行うものとしてもよい。
【0027】
このような構成によれば、ブロックからサブウィンドウ、サブウィンドウからウィンドウ領域へと段階的にぼやけの有無を集計すればよいため、効率的にぼやけの有無を集計することができる。
【0028】
上記構成の画像処理装置において、
前記画像ぼやけ判定部は、前記画像データ中において、前記ウィンドウ領域を、前記サブウィンドウ単位の移動距離で移動させるものとしてもよい。
【0029】
このような構成であれば、ウィンドウ領域がサブウィンドウ単位の移動距離で移動するので、容易にウィンドウ領域内のぼやけの有無を集計することができる。また、ウィンドウ領域単位で移動させるよりも、精度良く、ぼやけの発生しているウィンドウ領域を検出することができる。
【0030】
上記構成の画像処理装置において、
更に、前記ブロックぼやけ判定部によって集計された前記サブウィンドウ毎のぼやけの有無の集計値を記憶する集計値記憶部を備え、
前記集計値記憶部は、前記ウィンドウ領域内に含まれるサブウィンドウの行数分だけ前記集計値を記憶する記憶領域を有し、前記ウィンドウ領域が前記画像データ中において下側に移動された場合には、前記集計値記憶部の各行に記憶された集計値を、それぞれ前記移動された行数分だけ前の行に繰り上げて記憶し、該繰り上げ処理に伴って生じた該集計値記憶部の空領域に前記移動後のウィンドウ領域内に含まれることになった前記サブウィンドウ毎の前記集計値を記憶するものとしてもよい。
【0031】
このような構成によれば、ウィンドウ領域内のぼやけの有無の集計に必要なだけのメモリ容量を集計値記憶部として用意すればよいため、使用するメモリ容量を節減することができる。
【0032】
上記構成の画像処理装置において、
更に、前記ぼやけ判定部によってぼやけていないと判定された画像をユーザに提示する提示部を備えるものとしてもよい。
【0033】
このような構成によれば、ユーザは、撮影に成功した画像のみを確認することができる。ユーザに提示する方法としては、例えば、表示装置に画像を表示させるものとすることができる。その他、ぼやけていないと判定された画像の一覧を印刷してユーザに提示するものとしてもよい。
【0034】
上記構成の画像処理装置において、
更に、前記提示された画像の中からユーザによって選択された画像を印刷する印刷部を備えるものとしてもよい。
【0035】
このような構成によれば、ユーザは、手ブレや被写体ブレによって画像にぼやけの生じている画像を意識することなく、撮影に成功した画像の中から所望の画像を容易に印刷することができる。
【0036】
なお、本発明は、上述した画像処理装置としての構成のほか、コンピュータが画像のぼやけを検出するぼやけ検出方法や、画像のぼやけを検出するためのコンピュータプログラムとしても構成することができる。かかるコンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやCD−ROM、DVD−ROM、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【発明を実施するための最良の形態】
【0037】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
A.プリンタのハードウェア構成:
B.プリンタの機能構成:
C.印刷処理:
D.ぼやけ判定処理:
E.エッジパターン照合処理:
F.エッジ連結処理:
G.ブロックぼやけ判定処理:
H.ウィンドウぼやけ判定処理:
I.効果:
【0038】
A.プリンタのハードウェア構成:
図1は、本願の画像処理装置の実施例としてのプリンタ100の外観を示す説明図である。プリンタ100は、いわゆる複合機タイプのプリンタであり、光学的に画像を読み込むスキャナ110や、画像データの記録されたメモリカードMCを挿入するためのメモリカードスロット120、デジタルカメラ等の機器を接続するUSBインタフェース130等を備えている。プリンタ100は、スキャナ110によって取り込んだ画像や、メモリカードMCから読み取った画像、USBインタフェース130を介してデジタルカメラから読み取った画像を印刷用紙Pに印刷することができる。また、プリンタケーブルやUSBケーブルによって接続された図示していないパーソナルコンピュータから入力した画像の印刷も行うことができる。
【0039】
プリンタ100は、印刷に関する種々の操作を行うための操作パネル140を備えている。操作パネル140の中央部には、液晶ディスプレイ145が備えられている。この液晶ディスプレイ145は、メモリカードMCやデジタルカメラなどから読み取った画像の表示や、プリンタ100の各種機能を利用する際のGUI(グラフィカルユーザインタフェース)の表示に利用される。
【0040】
プリンタ100は、メモリカードMCやデジタルカメラ等から入力した複数の画像データの中から、ぼやけている画像(以下「ぼやけ画像」という)を排除して、ピントが1カ所でも合っている画像(以下、「合焦画像」という)のみを抽出し、液晶ディスプレイ145に表示する機能を有している。ユーザは、こうして液晶ディスプレイ145に表示された画像の中から、所望の画像を選択することで、印刷に適した画像のみを印刷することが可能となる。以下では、このぼやけ画像を排除する機能を実現するためのプリンタ100の構成および処理について詳細に説明する。
【0041】
図2は、プリンタ100の内部構成を示す説明図である。図示するように、プリンタ100は、印刷用紙Pに印刷を行う機構として、インクカートリッジ212を搭載したキャリッジ210や、キャリッジ210を主走査方向に駆動するキャリッジモータ220、印刷用紙Pを副走査方向に搬送する紙送りモータ230等を備えている。
【0042】
キャリッジ210は、シアン、マゼンタ、イエロ、ブラック、ライトシアン、ライトマゼンタの色を現す各インクに対応して、計6種類のインクヘッド211を備えている。キャリッジ210には、これらのインクが収容されたインクカートリッジ212が装着されており、インクカートリッジ212からインクヘッド211に供給されたインクは、図示しないピエゾ素子を駆動することで印刷用紙Pに吐出される。
【0043】
キャリッジ210は、プラテン270の軸方向と並行に設置された摺動軸280に移動自在に保持されている。キャリッジモータ220は、制御ユニット150からの指令に応じて駆動ベルト260を回転させることで、プラテン270の軸方向と平行に、すなわち、主走査方向にキャリッジ210を往復運動させる。紙送りモータ230は、プラテン270を回転させることで、プラテン270の軸方向と垂直に印刷用紙Pを搬送する。つまり、紙送りモータ230は、キャリッジ210を相対的に副走査方向に移動させることができる。
【0044】
プリンタ100は、上述したインクヘッド211やキャリッジモータ220、紙送りモータ230の動作を制御するための制御ユニット150を備えている。制御ユニット150には、図1に示したスキャナ110やメモリカードスロット120、USBインタフェース130、操作パネル140、液晶ディスプレイ145が接続されている。
【0045】
制御ユニット150は、CPU160とRAM170とROM180とによって構成されている。ROM180には、プリンタ100の動作を制御するための制御プログラムが記憶されており、更に、後述する種々の処理で使用されるエッジパターンテーブル181や正規化輝度差テーブル182が記憶されている。
【0046】
CPU160はROM180に記憶された制御プログラムをRAM170に展開して実行することで図示する各機能部(161〜166)として動作する。RAM170には、制御プログラムを実行するためのワークエリアのほか、図示するパターン番号バッファ171や合焦ブロック数バッファ172(本願の集計値記憶部に対応する)、縦累積バッファ173、横累積バッファ174、と呼ばれる記憶領域がそれぞれ確保されている。
【0047】
B.プリンタの機能構成:
制御ユニット150は、CPU160によって実現される機能部として、画像データ入力部161、係数抽出部162、パターン照合部163、エッジ連結部164、ブロックぼやけ判定部165、ウィンドウぼやけ判定部166を備えている。以下、これらの機能部の働きについて簡単に説明する(詳細な働きについては後述する各種処理内容を参照)。
【0048】
画像データ入力部161は、メモリカードスロット120やUSBインタフェース130を介して、メモリカードMCやデジタルカメラからJPEG形式の画像データ(以下、「JPEGデータ」という)を入力する機能部である。JPEGデータには、8画素×8画素のMCU(Minimum Coded Unit)と呼ばれるブロックが水平方向および垂直方向に(つまり、行毎に)連なって配置されている。この各ブロック内の画像データは、(1)RGB色空間からYCbCr色空間への画素値の色変換、(2)空間領域から周波数領域へのDCT(Discrete Cosine Transform)変換、(3)データの情報量を削減する量子化、(4)エントロピー符号化の一種であるハフマン符号化、が順次行われることでデータ量が圧縮されている。
【0049】
図3および図4は、JPEGデータ内に各ブロックのデータが記録されている順序を示す説明図である。図3は、各ブロックが1行ごとに記録されている様子を表し、図4には、各ブロックが2行ごとに記録されている様子を表す。2行ごとにブロックが格納される場合には、図4に示すように、各ブロックが、画像の最も左上から、右、左下、右、右上、の順に、アルファベットの「Z」を連続して記述するかの如く記録されている。JPEGデータのヘッダ情報には、これらのうち、いずれかの順序でブロックが記録されているかを示す情報が記録されている。なお、JPEGデータの中には、他の記録順によって各ブロックのデータが記録されているものもあるが、本実施例では、上述した2種類の記録順によってデータが記録されているJPEGデータのみを取り扱うものとする。また、本実施例では、各ブロックの連なりの方向は、あくまで水平方向および垂直方向であるものとし、この連なりの方向とブロックの記録順とは異なるものとする。
【0050】
係数抽出部162は、上述したJPEGデータを、ブロック毎に、逆ハフマン符号化、逆量子化を行い、DCT係数を取得する。係数抽出部162は、さらに、こうして取得した8×8個のDCT係数の中から、水平方向の交流周波数成分を表す第1の係数群と、垂直方向の交流周波数成分を表す第2の係数群とを抽出する。
【0051】
図5は、係数抽出部162によって抽出されるDCT係数を示す説明図である。図示するように、各ブロックからは、逆量子化が行われた段階で、F00からF77までの計64個のDCT係数が得られる。これらのうち、最も左上に存在する係数F00は、直流成分と呼ばれ、他の係数は、交流成分と呼ばれる。このうち、係数抽出部162は、水平方向のみの交流成分である係数F01〜F07を第1の係数群として抽出し、垂直方向のみの交流成分である係数F10〜F70を第2の係数群として抽出する。
【0052】
パターン照合部163は、ROM180に記憶されたエッジパターンテーブル181と、係数抽出部162によって抽出された第1の係数群および第2の係数群とを照合して、第1の係数群および第2の係数群が表す輝度変化に近似する形状の基本エッジパターンをエッジパターンテーブル181から選出する機能部である。本実施例において、「エッジパターン」とは、ブロック内の輝度変化の勾配の形状を表すパターンのことをいう。エッジパターンテーブル181の詳細な構成は後述するが、このエッジパターンテーブル181には、64種類の基本エッジパターンについて、その勾配形状を表すDCT係数群の値と、パターン番号とが対応付けて記録されている。図5の下部には、第1の係数群が表す水平方向の輝度変化に近似した基本エッジパターンと、第2の係数群が表す垂直方向の輝度変化に近似した基本エッジパターンとを選出した例を示している。パターン照合部163は、こうして基本エッジパターンを選出すると、選出した基本エッジパターンのパターン番号をRAM170内のパターン番号バッファ171にブロック毎に記録する。
【0053】
エッジ連結部164は、複数のブロックに跨ってぼやけた輪郭部分が存在する場合に、そのぼやけた部分の幅(以下、「ぼやけ幅」という)を連結していく処理を行う機能部である。このエッジ連結部164は、本願の「ぼやけ幅検出部」に対応する。
【0054】
図6は、注目ブロックとこれに隣接したブロックとのぼやけ幅を連結する概念を示す説明図である。本実施例では、図の上部に示すように、注目ブロックについて選出された基本エッジパターンと、右側および下側に隣接したブロックについて選出された基本エッジパターンの形状に基づき、これらのブロックの輝度変化の勾配が同一の方向に連続しているかを判断する。そして、連続する場合には、上側および左側に隣接したブロックのぼやけ幅や輝度差を逐次累積していき、連続しない場合には、注目ブロックが輝度変化の端部であると判断して、そのぼやけ幅や輝度差を確定していく処理を行う。つまり、本実施例では、画像のぼやけ幅が1つのブロックのサイズ(8×8画素)を超える場合には、そのぼやけ幅を累積加算していき、ぼやけの終端となるブロックに達した際に、その累積加算値(以下、「累積ぼやけ幅CW」という)に基づき、そのブロックが合焦しているのかぼやけているかを判断するのである。図の下部に示すように、注目ブロックについてぼやけ幅が累積加算されると、その値が、右側および下側のブロックのぼやけ幅の算出時に参照されることになる。なお、エッジ連結部164は、ぼやけ幅だけではなく、ブロック内の輝度差についても累積加算していき、この値によってぼやけの有無の判定精度を向上させる機能を有する。
【0055】
ブロックぼやけ判定部165は、ブロック毎に、そのブロックがぼやけているか否かを判定する機能部である。具体的には、エッジ連結部164によって確定した水平方向と垂直方向の累積ぼやけ幅CWのうち、値が大きい方の累積ぼやけ幅CWを採用し、このぼやけ幅が所定の閾値を超えた場合に、そのブロックはぼやけていると判定する。
【0056】
ウィンドウぼやけ判定部166は、複数のブロックによって構成されるウィンドウ領域について、そのウィンドウ領域内がぼやけているか否かを判断する機能部である。以下の説明では、合焦しているウィンドウ領域を「合焦ウィンドウ」といい、ぼやけているウィンドウ領域を「ぼやけウィンドウ」というものとする。
【0057】
図7は、ウィンドウ領域の概念を示す説明図である。本実施例においてウィンドウ領域とは、L版の印刷用紙において、最小の合焦エリアと想定される1cm×1cmのサイズの領域を表しているものとする。ウィンドウぼやけ判定部166は、このウィンドウ領域がL版の印刷用紙内のいずれかの場所において1カ所でも合焦していれば、その画像は合焦画像であると判断する。L版の印刷用紙は、約13cm×縦約9cmのサイズである。この用紙に、600万画素(横約3000画素×縦約2000画素)の画像を印刷すると、8画素×8画素の1ブロックのサイズは、約0.35mm×0.35mmになる。そのため、ひとつのウィンドウ領域内には、約28×28個のブロックが存在することになる。
【0058】
図7の下部に示すように、ウィンドウ領域は、4×4のサブウィンドウ領域と呼ぶ領域に区画されている。ウィンドウぼやけ判定部166は、このサブウィンドウ領域単位でウィンドウ領域の位置を移動させていくことで、画像内のどのウィンドウ領域が合焦しているかを判断する。上述した例では、1つのウィンドウ領域内には、ブロックが28個×28個存在するので、このサブウィンドウ領域内には、ブロックが7個×7個存在することになる。
【0059】
なお、本実施例では、上述のように、L版の印刷用紙に600万画素の画像を印刷することを想定して、ブロックの数やウィンドウのサイズを規定しているが、印刷対象の用紙サイズや画像の解像度に応じて、これらのパラメータの値は、適宜変更されることは言うまでもない。
【0060】
C.印刷処理:
図8は、プリンタ100のCPU160が実行する印刷処理のフローチャートである。この印刷処理は、メモリカードMC等から画像データを入力して印刷を行うための処理である。
【0061】
操作パネル140を用いたユーザの所定の操作に応じてこの印刷処理が実行されると、まず、CPU160は、画像データ入力部161を用いて、メモリカードスロット120に挿入されたメモリカードMCからJPEGデータを入力する(ステップS10)。なお、ここでは、メモリカードMCからJPEGデータを入力するものとするが、USBインタフェース130を介して接続されたデジタルカメラやコンピュータ等から入力するものとしてもよい。
【0062】
JPEGデータを入力すると、CPU160は、入力したJPEGデータのヘッダ情報を解析し、以降の処理に必要なバッファ領域をRAM170に確保する(ステップS20)。具体的には、CPU160は、JPEGデータ内にブロックが図3のように1行単位で記録されている場合には、ブロック2行分の基本エッジパターンのパターン番号が記録可能なパターン番号バッファ171をRAM170に確保する。また、ブロックが図4のように2行単位で記録されている場合には、ブロック3行分のパターン番号が記録可能なパターン番号バッファ171を確保する。つまり、CPU160は、JPEGデータ内にn(nは1以上の整数)行毎にブロックが記録されていれば、(n+1)行分のブロックのパターン番号が記録可能なパターン番号バッファ171を確保するのである。更に、CPU160は、パターン番号バッファ171に加え、垂直方向のぼやけ幅の累積値をブロック1行分記録する縦累積バッファ173と、水平方向のぼやけ幅の累積値をブロック1つ分記録する横累積バッファ174と、サブウィンドウ4行分の合焦ブロック数を記録する合焦ブロック数バッファ172とをRAM170内に確保する。これらのバッファの役割や使用法については以下において適宜説明する。
【0063】
次に、CPU160は、ステップS10によって入力したJPEGデータについて、ステップS20で確保した各種バッファを用いつつぼやけ判定処理を行う(ステップS30)。このぼやけ判定処理の詳細については後述する。
【0064】
1つのJPEGデータについてぼやけ判定処理を終了すると、CPU160は、メモリカードMC内のすべてのJPEGデータを入力し、これらについてぼやけ判定処理が終了したかを判断する(ステップS40)。かかる処理によって、全てのJPEGデータを入力していないと判断した場合には(ステップS40:No)、処理をステップS10に戻し、次のJPEGデータを入力する。
【0065】
上記ステップS40によって、全てのJPEGデータについてぼやけ判定処理が終了したと判断した場合には(ステップS40:Yes)、CPU160は、ステップS30によってぼやけていないと判定された画像、すなわち、合焦画像を、液晶ディスプレイ145に一覧表示する(ステップS50)。
【0066】
合焦画像の一覧を液晶ディスプレイ145に表示すると、CPU160は、操作パネル140を介して、ユーザから、印刷の対象となる画像の選択を受け付ける(ステップS60)。そして、選択された画像を、インクヘッド211や紙送りモータ230、キャリッジモータ220等を制御して印刷する(ステップS70)。
【0067】
以上で説明した印刷処理では、メモリカードMC内の全てのJPEGデータを入力するものとしたが、メモリカードMC内に複数のフォルダが生成されている場合には、ユーザによって指定されたフォルダついてのみJPEGデータを入力するものとしてもよい。
【0068】
D.ぼやけ判定処理:
図9は、図8に示した印刷処理のステップS30で実行されるぼやけ判定処理のフローチャートである。この処理が開始されると、まず、CPU160は、ぼやけ判定を行うべきブロック(以下、「注目ブロック」という)をその連なりに沿って移動する(ステップS100)。最初の移動先は、JPEGデータの最も左上に存在するブロックである。注目ブロックは、ステップS100の処理が実行される度に、右方向へ移動し、右端まで到達すると、次の行の左端に移動する。この注目ブロックの移動順序は、図3や図4に示したブロックの格納順とは独立した順序である。
【0069】
次に、CPU160は、現在の注目ブロックの右側および下側に隣接するブロックを既に読み込んだかを判定する(ステップS110)。図6に示したように、隣接したブロックのデータに基づき中央のブロック(注目ブロック)のぼやけ幅と輝度差とを求めるためである。図3または図4のブロックの格納順に従ってブロックを読み込めば、右側と下側のブロックの読み込みが完了していれば、上側と左側に隣接したブロックについての読み込みも完了していると言える。
【0070】
注目ブロックの右側および下側に隣接するブロックの読み込みが完了していなければ(ステップS110:No)、CPU160は、JPEGデータから、図3または図4に示した順序に従ってブロックデータを一つ読み込む(ステップS120)。JPEGデータのヘッダ情報には、どの並び順でブロックが格納されているかを示す情報が記録されているため、CPU160は、かかる情報を解析することで、ブロックの読み込み順を判別することができる。
【0071】
ブロックを一つ読み込むと、CPU160は、そのブロックデータに対して、逆ハフマン符号化、逆量子化を行った上で、係数抽出部162によって8×8個の係数群の中から、水平方向の第1の係数群と、垂直方向の第2の係数群とを抽出する(ステップS130)。具体的には、図5に示した「F01」から「F07」までのDCT係数を第1の係数群として抽出し、「F10」から「F70」までのDCT係数を第2の係数群として抽出する。
【0072】
次に、CPU160は、パターン照合部163を用いて、エッジパターン照合処理を実行する(ステップS140)。この処理は、上記ステップS130によって抽出された第1の係数群と第2の係数群とが表す水平方向および垂直方向の勾配形状に近似する基本エッジパターンを、エッジパターンテーブル181から選出するための処理である(詳細な処理内容については後述)。かかる処理によって近似する基本エッジパターンが選出されれば、その基本エッジパターンに割り振られたパターン番号が、RAM170に確保したパターン番号バッファ171に保存される。
【0073】
図10は、JPEGデータに1行単位でブロックが記録されている場合に確保されたパターン番号バッファ171の一例を示す説明図である。この図には、パターン番号バッファ171に加えて、縦累積バッファ173と横累積バッファ174の一例も併せて示している。図示するように、JPEGデータに1行単位でブロックが格納されている場合には、パターン番号バッファ171は、水平方向および垂直方向についてのパターン番号をブロック2行分記憶することができる。図中には、水平方向のパターン番号(A2,A4,B1,C6,・・・)が、注目ブロックの下側に隣接するブロックまで記録されている例を示している。なお、図示は省略しているが、ステップS140で実行されるエッジパターン照合処理では、ブロック内の輝度差DYも算出されるため、かかる輝度差DYも、パターン番号と共にパターン番号バッファ171に記録される。
【0074】
JPEGデータに1行単位でブロックが格納されている場合には、上記ステップS100における処理では、図10に示したパターン番号バッファ171内を注目ブロックが左から右方向に移動するものとする。つまり、注目ブロックは、パターン番号バッファ171内の1行目を順次左から右に移動していく。そして、右端まで移動が完了すれば、再び、1行目の左端に移動する。このとき、パターン番号バッファ171の2行目に記録されていたパターン番号が、1行繰り上がって記録され、2行目については、パターン番号はクリアされる。そして、この2行目に順次、次のエッジパターン照合処理によって取得されたパターン番号が記録されていく。このように、注目ブロックが右端に移動した場合にパターン番号バッファ171の行を繰り上げて次のパターン番号を記録していけば、注目ブロックは相対的に画像の下側に移動することになる。
【0075】
JPEGデータに対して1行単位でブロックが格納されている場合において、注目ブロックの右側と下側に隣接するブロックが既に読み込まれているか否かを判断するには、図10を見れば明らかなように、最低、ブロック2行分のパターン番号が記録されていれば足りる。従って、本実施例では、JPEGデータに対して1行単位でブロックが格納されている場合には、ブロック2行分のパターン番号が記録可能なパターン番号バッファ171を用意するのである。こうすることにより、JPEGデータに含まれる全てのブロック分のパターン番号を記憶する必要が無くなり、必要なメモリ容量を削減することができる。
【0076】
図11は、JPEGデータに2行単位でブロックが記録されている場合に確保されたパターン番号バッファ171の一例を示す説明図である。図示するように、この場合には、パターン番号バッファ171には、ブロック3行分のパターン番号の記憶領域が用意される。
【0077】
JPEGデータに2行単位でブロックが格納されている場合において、注目ブロックが画像中の1行目に位置する場合には、上記ステップS100では、図11(a)に示すように、注目ブロックはパターン番号バッファ171内の1行目を右方向に移動する。そして、右端まで移動が完了すれば、再び、1行目の左端に移動する。このとき、パターン番号バッファの2行目に記録されていたパターン番号が、1行繰り上がって記録され、2行目については、パターン番号はクリアされる。そして、図11(b)に示すように、2行目と3行目とを用いて、エッジパターン照合処理によって取得されたパターン番号が図4に示した並び順に従って2行毎に記録されていく。
【0078】
JPEGデータに対して2行単位でブロックが格納されている場合において、注目ブロックの右側と下側に隣接するブロックが既に読み込まれているか否かを判断するには、図11(b)を見れば明らかなように、最低、ブロック3行分のパターン番号が必要である。図11(b)には、パターン番号バッファ171内の1行目の注目ブロック(図中のパターン番号:C2)について右側および下側のブロックが記録されている例を示しているが、図4に示した格納順に従えば、現在の行の2行先のブロックが読み込まれないと、注目ブロックの下側のブロック(図中のパターン番号:A7)が読み込まれないからである。従って、本実施例では、JPEGデータに対して2行単位でブロックが格納されている場合には、ブロック3行分のパターン番号が記憶可能なパターン番号バッファ171を用意するのである。
【0079】
なお、図10および図11には、ブロック1行分の垂直方向の累積ぼやけ幅CWや累積輝度差ADYを保存するための縦累積バッファ173と、ブロック1つ分の水平方向の累積ぼやけ幅CWや累積輝度差ADYを保存するための横累積バッファ174とを示しているが、これらのバッファの利用方法については後述する。
【0080】
ここで説明を図9に戻す。上記ステップS140のエッジパターン照合処理によって、ステップS120で読み込んだブロックのパターン番号をパターン番号バッファ171に保存すると、CPU160は、再度、上記ステップS110の処理を実行することで、現在の注目ブロックの右側および下側に隣接するブロックを読み込んだか否かを判断する。かかる処理によっても、なお、これらのブロックが読み込まれていないと判断されれば、右側および下側に隣接するブロックが読み込まれるまで、上記ステップS120からステップS140までの処理が繰り返され、パターン番号バッファ171にパターン番号が保存されていくことになる。
【0081】
上記ステップS110において、注目ブロックの右側および下側に隣接するブロックが読み込まれた判断されれば(ステップS110:Yes)、CPU160は、パターン番号バッファ171と縦累積バッファ173と横累積バッファ174とを参照してエッジ連結部164によって、エッジ連結処理を実行する(ステップS150)。このエッジ連結処理の詳細は後述するが、このエッジ連結処理では、隣接ブロック同士のぼやけ幅が累積加算され、注目ブロックのぼやけ幅が算出されることになる。
【0082】
エッジ連結処理によって注目ブロックのぼやけ幅が算出されると、次に、CPU160は、ブロックぼやけ判定部165を用いて、ブロックぼやけ判定処理を実行する(ステップS160)。この処理は、エッジ連結処理によって算出されたぼやけ幅に基づき、注目ブロックがぼやけているか否かを判定するための処理である。この処理の詳細についても後述するが、かかる処理の実行結果としては、注目ブロックが「ぼやけブロック」であるか「合焦ブロック」であるかが判定結果として取得される。
【0083】
ブロックぼやけ判定処理によって、注目ブロックが「ぼやけブロック」であるか「合焦ブロック」であるかが判定されると、CPU160は、現在の注目ブロックが、どのサブウィンドウ(図7参照)内に位置しているかを求め、そのサブウィンドウ毎に合焦ブロックの数を累積加算する(ステップS170)。図7では、1つのサブウィンドウ内に、ブロックが7個×7個の計49個存在している例を示しているため、この場合、かかる処理による累積加算値は最高で「49」となる。合焦ブロックの累積加算値は、RAM170に確保した合焦ブロック数バッファ172に記録する。
【0084】
図12は、合焦ブロック数バッファ172の一例を示す説明図である。本実施例では、最終的にサブウィンドウ4×4個分に相当するウィンドウ領域についてぼやけているか否かを判断するため、合焦ブロック数バッファ172には図示するように、サブウィンドウ4行分の記憶領域を用意する。上記ステップS170では、現在の注目ブロックが属するサブウィンドウに対応する記憶領域に合焦ブロックの数が累積加算される。かかる累積値は、合焦ブロック数バッファ172の、4行目から図中に示した「a」「b」「c」・・・の順に記録される。現在の注目ブロックが属するサブウィンドウが、合焦ブロック数バッファ172の右端に移動した場合には、かかる合焦ブロック数バッファ172の4行目の値は、3行目に繰り上がり、同様に他の行も1行ずつ繰り上がる。そして、4行目のバッファ領域はクリアされ、かかる領域に次の合焦ブロック数が記録されていく。
【0085】
説明を図9に戻す。ステップS170によってサブウィンドウ毎に合焦ブロック数を累積加算した後、CPU160は、いずれか1つのサブウィンドウについて合焦ブロック数の集計が完了したか否かを判断する(ステップS180)。そして、1サブウィンドウ分の集計が完了していないと判断されれば(ステップS180:No)、CPU160は、ステップS100に処理を戻し、注目ブロックを移動して、引き続き、次のブロックについて、「ぼやけブロック」であるか「合焦ブロック」であるかを判断していく。一方、1サブウィンドウ分の集計が完了したと判断されれば、CPU160は、そのサブウィンドウが属するウィンドウ領域全体について、ウィンドウぼやけ判定部166を用いてウィンドウぼやけ判定処理を行う(ステップ190)。このウィンドウぼやけ判定処理では、図12に示した合焦ブロック数バッファ172において、ウィンドウ領域を順次横方向に移動していき、そのウィンドウ領域内の合焦ブロック数に総計に基づき、そのウィンドウ領域がぼやけているか否かを判定する。かかる処理の詳細については後述する。
【0086】
上記ステップS190においてウィンドウぼやけ判定処理が終了すると、CPU160は、この判定処理の判定結果に基づき、現在のウィンドウ領域が合焦ウィンドウであるか否かを判定する(ステップS200)。この判定の結果、そのウィンドウが合焦ウィンドウであれば(ステップS200:Yes)、現在入力しているJPEGデータによって表される画像が合焦していると判定し(ステップS210)、上述した一連のぼやけ判定処理を終了する。つまり、画像内のいずれかのウィンドウ領域が合焦ウィンドウであると判定された時点で、図8のステップS10で入力したJPEGデータが合焦画像であると判断することになる。こうすることで、画像内のいずれかのウィンドウ領域が合焦ウィンドウであれば、画像内のすべての領域についてぼやけの有無を判定する必要がないため、処理時間を短縮することができる。
【0087】
これに対して、上記ステップS200においてウィンドウぼやけ判定処理を行ったウィンドウ領域が、ぼやけウィンドウであると判定された場合には(ステップS200:No)、CPU160は、続いて、現在の注目ブロックが、画像の右下隅の最終ブロックであるかを判断する(ステップS220)。この結果、現在の注目ブロックが、最終ブロックであると判断されれば(ステップS220:Yes)、どのウィンドウ領域も合焦ウィンドウではなかったと判断できるため、現在入力しているJPEGデータによって表される画像はぼやけ画像であると判定して(ステップS230)、上述した一連のぼやけ判定処理を終了する。一方、現在の注目ブロックが最終ブロックでなければ(ステップS220:No)、CPU160は、上記ステップS100へ処理を戻し、次の位置のブロックについて、上述した種々の処理を繰り返し実行する。
【0088】
E.エッジパターン照合処理:
図13は、図9に示したぼやけ判定処理のステップS140で実行されるエッジパターン照合処理の詳細なフローチャートである。この処理は、各ブロックの水平方向および垂直方向の勾配形状に近似する基本エッジパターンをエッジパターンテーブル181から選出するとともに、ブロック内の輝度差を算出するための処理である。
【0089】
この処理が実行されると、まず、CPU160は、ぼやけ判定処理のステップS130で抽出した第1の係数群と第2の係数群と(図5参照)を取得する(ステップS300)。当該エッジパターン照合処理では、第1の係数群と第2の係数群とについてそれぞれ同様の処理が実行されるため、以下では、これらを代表して、水平方向のDCT係数を表す第1の係数群に対する処理を説明する。
【0090】
CPU160は、上記ステップS300によって、第1の係数群を取得すると、この第1の係数群を構成する各係数F01〜F07の絶対値の和を求め、これが所定の平坦閾値(例えば、80)を超えるか否かを判定する(ステップS310)。第1の係数群の絶対値の和Sは、下記式(1)によって求めることができる。
【0091】
S=Σ|F0i| (i=1〜7) ・・・(1)
【0092】
上記ステップS310において、第1の係数群の絶対値の和Sが所定の平坦閾値以下であると判断されれば(ステップS310:No)、そのブロックの水平方向の輝度変化は、平坦であると見なすことができる。従って、かかるブロックのエッジパターンのパターン番号を、平坦なエッジパターンであることを表す「0」と決定する(ステップS320)。
【0093】
上記ステップS310において、第1の係数群の絶対値の和Sが所定の平坦閾値を超えると判断されれば(ステップS310:Yes)、そのブロックの水平方向には、なんらかの輝度変化があると判断できる。そこで、まず、CPU160は、第1の係数群の各係数値F01〜F07について下記式(2)に基づき正規化を行う(ステップS330)。下記式(2)によれば、正規化後の各係数値Fr01〜Fr07は、第1の係数群の絶対値の和Sで、それぞれの係数値F01〜F07を除算した値となる。
【0094】
Fr0j=F0j/S (j=1〜7) ・・・(2)
【0095】
次に、CPU160は、ROM180に記憶されたエッジパターンテーブル181を参照して(ステップS340)、正規化後の各係数値Fr01〜Fr07によって表される勾配形状がいずれかの基本エッジパターンに近似するかを判断する(ステップS350)。
【0096】
図14は、エッジパターンテーブル181の一例を示す説明図である。このエッジパターンテーブル181には、「A1」から「A16」までのパターン番号(図の1列目)に対して16種類の基本エッジパターン(図の3列目)が対応付けて記録されている。基本エッジパターンの横軸は、ブロック内の係数の位置(F01〜F07)を表しており、縦軸は、正規化後の係数値Frを表している。つまり、基本エッジパターンは、7つの係数値からなるデータである。
【0097】
各基本エッジパターンは、図の2列目に示した輝度パターンに基づき生成されている。すなわち、図の2列目に示した輝度パターンをDCT変換して正規化したものが図の3列目に示す基本エッジパターンとなる。なお、図中の輝度パターンは、実際には、エッジパターンテーブル181には記録されておらず、理解の便のために記載している。各輝度パターンは、1ブロック内で傾きの符号が変化しない輝度変化の典型的な形状を、予め16種類に分類したものである。本実施例では、このように、基本エッジパターンを16種類に分類するものとするが、より多くのパターンに分類するものとしてもよい。
【0098】
エッジパターンテーブル181には、更に、基本エッジパターンに対応付けて左側エッジ幅LWと、中央エッジ幅MWと、右側エッジ幅RWという3種類のパラメータが記録されている。左側エッジ幅LWは、輝度パターンの左側に存在する平坦部の幅を表しており、右側エッジ幅RWは、輝度パターンの右側に存在する平坦部の幅を表している。また、中央エッジ幅MWは、左側エッジ幅LWと右側エッジ幅RWとに挟まれる勾配部分の幅を表している。
【0099】
なお、図示を省略しているが、このエッジパターンテーブル181には、「A1」から「A16」までの基本エッジパターンに加え、これらの基本エッジパターンを左右反転させたエッジパターンがパターン番号B1〜B16に定義されており、上下反転させたエッジパターンがパターン番号C1〜C16に定義されている。また、「A1」から「A16」までの基本エッジパターンを上下および左右に反転させたエッジパターンがパターン番号D1〜D16に定義されている。つまり、全体で、64種類の基本エッジパターンがこのエッジパターンテーブル181に定義されている。
【0100】
図13のステップS350では、ステップS330で正規化を行った各係数値Fr01〜Fr07と、基本エッジパターンを構成する各係数値Fb01〜Fb07との差の絶対値の合計SDを下記式(3)に従って算出し、この合計値SDが最小となる基本エッジパターンをエッジパターンテーブル181の中から選択する。そして、選択された基本エッジパターンについての合計値SDが、所定の閾値よりも小さければ、形状が近似する基本エッジパターンが検索されたと判断して(ステップS350:Yes)、その基本エッジパターンに対応付けられたパターン番号を取得する(ステップS360)。一方、上述した演算によって得られた値SDが、所定の閾値よりも大きい場合には、近似する基本エッジパターンが検索されなかったとして、パターン番号を「不明」とする(ステップS370)。
【0101】
SD=Σ|Fr0k−Fb0k| (k=1〜7) ・・・(3)
【0102】
以上の処理によって、現在のブロックのパターン番号が決定すると、次にCPU160は、ROM180に記録された正規化輝度差テーブル182を参照して(ステップS380)、現在のブロック内の輝度差DYを算出する(ステップS390)。
【0103】
図15は、正規化輝度差テーブル182の一例を示す説明図である。この正規化輝度差テーブル182には、各パターン番号に対応付けて、正規化輝度差値NYが記録されている。この正規化輝度差値NYは、基本エッジパターンが表す輝度パターンの形状に応じて予め計算された輝度差である。上記ステップS390では、この正規化輝度差テーブル182から、上記ステップS360で取得したパターン番号に対応付けられた正規化輝度差値NYを取得する。そして、下記式(4)に従い、取得された正規化輝度差値NYに対して、上記式(1)で算出した各係数の絶対値の和Sを乗じることで、ブロック内の輝度差DYを求める。このように、予め計算された正規化輝度差値NYを用いれば、ブロック内の係数値を逆DCT変換して輝度値を求めることなく、簡便かつ高速にブロック内の輝度差を算出することができる。
【0104】
DY=S・NY ・・・(4)
【0105】
以上の処理によって、現在のブロックのパターン番号と輝度差DYとが決定すると、CPU160は、これらのパラメータを、現在のブロックに対応するパターン番号バッファ171(図10または図11参照)に保存する(ステップS400)。これにより、上述した一連のエッジパターン照合処理は終了し、ぼやけ判定処理のステップS110に処理が戻されることになる。
【0106】
F.エッジ連結処理:
図16は、図9に示したぼやけ判定処理のステップS150で実行されるエッジ連結処理の詳細なフローチャートである。この処理は、図6に示したように、上下左右に隣接したブロックに基づき、中央のブロック(注目ブロック)のぼやけ幅と輝度差とを決定するための処理である。かかる処理は、水平方向と垂直方向とについて行われるが、説明を簡単にするため、特記しない限り、水平方向に対して行われる処理の説明をする。
【0107】
この処理が実行されると、まず、CPU160は、現在の注目ブロックのパターン番号と輝度差DYとをパターン番号バッファ171(図10または図11参照)から取得する(ステップS500)。これらのパラメータは、上記エッジパターン照合処理によってパターン番号バッファ171に記録されたパラメータである。
【0108】
次に、CPU160は、ステップS500で取得したパターン番号が、「不明」であるかを判断する(ステップS520)。その結果、パターン番号が「不明」であれば(ステップS510:Yes)、上述したエッジパターン照合処理において、現在の注目ブロックの輝度変化が、基本エッジパターンのいずれにも近似しないと判定されていることになるため(図13のステップS350,S370参照)、注目ブロックのぼやけ幅を「不明」と確定する(ステップS520)。こうして確定したぼやけ幅を、以下では、「確定ぼやけ幅DW」というものとする。
【0109】
上記ステップS510において、パターン番号が「不明」ではないと判断されれば(ステップS510:No)、次に、CPU160は、パターン番号が「0」であるかを判断する(ステップS530)。この判断の結果、パターン番号が「0」であれば(ステップS530:Yes)、上述したエッジパターン照合処理において、現在の注目ブロックの水平方向の輝度変化が平坦であると判定されていることになるため(図13のステップS310,S320参照)、注目ブロックの確定ぼやけ幅DWを「0」に決定する(ステップS550)。
【0110】
上記ステップS530において、パターン番号が「0」ではないと判断されれば(ステップS530:No)、CPU160は、注目ブロックの右側(垂直方向のエッジ連結処理の場合には下側)に隣接するブロック(以下、「隣接ブロックという」)のパターン番号をパターン番号バッファ171(図10または図11参照)から取得する(ステップS510)。そして、注目ブロックのパターン番号と、隣接ブロックのパターン番号とを対比して、これらのブロックの基本エッジパターンの傾き方向が一致するかを判断する(ステップS560)。
【0111】
図17は、注目ブロックと隣接ブロックとで基本エッジパターンの傾き方向が一致する例を示す説明図である。図示した例では、両ブロックの傾きは、共に右下がりであるため、両者の傾き方向は一致しているといえる。注目ブロックと隣接ブロックの傾き方向が一致する組み合わせとしては、以下のようなパターン番号の組み合わせがある。つまり、CPU160は、注目ブロックのパターン番号と隣接ブロックのパターン番号の組み合わせが、以下に示す(1)から(8)のいずれかの組み合わせに含まれれば、これらの傾き方向が一致すると判断することができる。
【0112】
注目ブロックNo. 隣接ブロックNo.
(1)A1〜A16 A1〜A16
(2)A1〜A16 D1〜D16
(3)B1〜B16 B1〜B16
(4)B1〜B16 C1〜C16
(5)C1〜C16 C1〜C16
(6)C1〜C16 B1〜B16
(7)D1〜D16 D1〜D16
(8)D1〜D16 A1〜A16
【0113】
図18は、注目ブロックと隣接ブロックとで基本エッジパターンの傾き方向が一致しない例を示す説明図である。図示した例では、注目ブロックの傾きが右下がりであるのに対して、隣接ブロックの傾きが右上がりであることから、両者の傾きは一致していないと言える。両ブロックの傾き方向が一致しないパターン番号の組み合わせは、上述した(1)から(8)以外の組み合わせである。
【0114】
上記ステップS560において、傾き方向が一致すると判断された場合には(ステップS560:Yes)、CPU160は、続いて、注目ブロックの右側エッジ幅RWと、隣接ブロックの左側エッジ幅LWの加算値が、所定の連結誤差閾値以内であるかを判定する(ステップS570)。なお、この判定に先立ち、CPU160は、隣接ブロックのパターン番号から、エッジパターンテーブル181を参照して、その左側エッジ幅LWを取得するものとする。
【0115】
図19は、注目ブロックの右側エッジ幅RWと隣接ブロックの左側エッジ幅LWの加算値と連結誤差閾値との比較の様子を示す説明図である。図示するように、注目ブロックの基本エッジパターンの右側に存在する平坦部(右側エッジ幅RW)と、隣接ブロックの基本エッジパターンの左側に存在する平坦部(左側エッジ幅LW)との和が大きく、連結誤差閾値を超えるような場合には、注目ブロックと隣接ブロックとでは勾配が連続せず、別々のぼやけ部分を形成していると判断することができる。そのため、上記ステップS570では、「No」と判定される。これに対して、上述した和が小さく、連結誤差閾値以下となる場合には、注目ブロックのエッジパターンと隣接ブロックのエッジパターンとは連続した勾配であると考えることができるため、上記ステップS570では、「Yes」と判定される。
【0116】
上記ステップS570において、注目ブロックの右側エッジ幅RWと、隣接ブロックの左側エッジ幅LWの加算値が、所定の連結誤差閾値以内であると判定されれば(ステップS570:Yes)、CPU160は、これまで左側(垂直方向のエッジ連結処理にあっては、上側)のブロックに累積されている累積ぼやけ幅CWと累積輝度差ADYとを横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)(図10,11参照)から読み込む。そして、この累積ぼやけ幅CWに注目ブロックの左側エッジ幅LWと中央エッジ幅MWとを加算するとともに、累積輝度差ADYに注目ブロックの輝度差DYを加算する処理を行う(ステップS580)。こうして新たな累積ぼやけ幅CWと累積輝度差ADYとを求めると、CPU160は、新たな値を横累積バッファ174(垂直方向のエッジ連結処理にあっては縦累積バッファ173)に上書きして更新する(図10,11参照)。こうすることで、隣接ブロック同士でエッジパターンの傾きが一方向に連続していく場合には、各ブロックのぼやけ幅と輝度差とを順次累積していくことができる。なお、上記ステップS580では、CPU160は、注目ブロックの確定ぼやけ幅DWを便宜的に「0」と決定する。つまり、ぼやけ幅を累積する場合には、その累積途中のブロックについては、一律に平坦なブロックであるとみなすのである。
【0117】
図20は、上記ステップS580における累積ぼやけ幅CWの算出概念を示す説明図である。図示するように、上記ステップS580では、これまでの累積ぼやけ幅CWに対して、注目ブロックの左側エッジ幅LWと中央エッジ幅MWとを加算した値を、新たな累積ぼやけ幅CWとする。なお、かかる演算に先立ち、CPU160は、エッジパターンテーブル181を参照して、注目ブロックのパターン番号に対応する左側エッジ幅LWと中央エッジ幅MWとを取得するものとする。
【0118】
上記ステップS560において、注目ブロックの傾き方向と隣接ブロックの傾き方向とが一致しないと判断された場合(ステップS560:No)、もしくは、上記ステップS570において、注目ブロックの右側エッジ幅RWと隣接ブロックの左側エッジ幅LWとの和が連結誤差閾値を超えると判断された場合(ステップS570:No)には、CPU160は、続いて、累積輝度差ADYを用いて注目ブロックが平坦であるか否かを判断する処理を行う。すなわち、まず、横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)から累積輝度差ADYを読み込んで、この累積輝度差ADYと注目ブロックの輝度差DYとの和を求める(ステップS590)。そして、この和が、所定の累積輝度差閾値(例えば、「32」)未満となるかを判断する(ステップS600)。この判断によって、累積輝度差ADYが所定の累積輝度差閾値未満であると判断されれば(ステップS600:Yes)、これまで輝度差DYを累積したにもかかわらず、その累積値が十分ではなく、注目ブロックの輝度変化は平坦であると判断して、その確定ぼやけ幅DWを「0」とする(ステップS610)。かかる処理によれば、エッジパターンに基づく判断だけではなく、輝度差によっても、ブロックが平坦であるか否かを判断することができるため、より精度良く、画像内のぼやけの有無を判断することが可能になる。
【0119】
上記ステップS600において、累積輝度差ADYが累積輝度差閾値を超えると判断されれば(ステップS600:No)、注目ブロックは平坦なエッジパターンではないと判断できる。そこで、CPU160は、続いて、横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)から読み込んだ累積ぼやけ幅CWが「0」であるかを判断する(ステップS620)。この判断によって累積ぼやけ幅CWが「0」であると判断されれば(ステップS620:Yes)、注目ブロックはぼやけの生じる開始点であり、更に、上記ステップS560,S570における判定結果によれば、右側((垂直方向のエッジ連結処理にあっては、下側)の隣接ブロックともエッジパターンが連続しないことになるため、注目ブロックは、単独のエッジパターンを有すると判断することができる。従って、CPU160は、注目ブロックの中央エッジ幅MWを確定ぼやけ幅DWとして決定する(ステップS630)。なお、CPU160は、かかる処理に先立ち、エッジパターンテーブル181を参照して、注目ブロックのパターン番号に対応する中央エッジ幅MWを取得するものとする。
【0120】
上記ステップS620において、累積ぼやけ幅CWが「0」ではないと判断されれば、注目ブロックは、右側(垂直方向のエッジ連結処理にあっては、下側)の隣接ブロックとは連続しないが、左側(垂直方向のエッジ連結処理にあっては、上側)の隣接ブロックとは連続することになる。つまり、注目ブロックは、ぼやけ部分の終端に該当することになる。そのため、CPU160は、横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)から読み込んだ累積ぼやけ幅CWに注目ブロックの左側エッジ幅LWと中央エッジ幅MWとを加算し、この値を確定ぼやけ幅DWとして決定する(ステップS640)。なお、CPU160は、かかる処理に先立ち、エッジパターンテーブル181を参照して、注目ブロックのパターン番号に対応する左側エッジ幅LWと中央エッジ幅MWとを取得するものとする。
【0121】
上記ステップS640によって確定ぼやけ幅DWを決定した場合には、ぼやけ幅が終端したことになるため、続いてCPU160は、累積ぼやけ幅CWおよび累積輝度差ADYを「0」とし(リセットし)、これらの値を横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)に記録する(ステップS650)。こうすることで、次の注目ブロックの位置から、ぼやけ幅の累積が開始されていくことになる。また、上記ステップS520,S540,S610,S630によって確定ぼやけ幅DWが決定した場合についても、上記ステップS650によって、累積ぼやけ幅CWと累積輝度差ADYとを「0」とする。これらの場合には、注目ブロックは平坦であるか単独のエッジを形成していることになるため、ぼやけ幅や輝度差を累積する必要がないためである。
【0122】
これに対して、上記ステップS570によって、注目ブロックと隣接ブロックとが連続すると判断された場合には、累積ぼやけ幅CWと累積輝度差ADYとはリセットせずステップS580で算出した累積値を横累積バッファ174(垂直方向のエッジ連結処理にあっては、縦累積バッファ173)に記録する。こうすることで、次の注目ブロックに対して、ぼやけ幅や輝度差を累積することが可能になる。
【0123】
以上で一連のエッジ連結処理は終了する。このエッジ連結処理によれば、後述するブロックぼやけ判定処理で用いられる水平および垂直方向の確定ぼやけ幅DWが決定されるとともに、次回のエッジ連結処理で用いられる累積ぼやけ幅CWと累積輝度差ADYとが横累積バッファ174および縦累積バッファ173に対して記録されることになる。かかるエッジ連結処理が終了すると、CPU160は、図9に示したぼやけ判定処理に処理を戻し、引き続き、ブロックぼやけ判定処理(ステップS160)を実行する。
【0124】
G.ブロックぼやけ判定処理:
図21は、図9に示したぼやけ判定処理のステップS160で実行されるブロックぼやけ判定処理の詳細なフローチャートである。この処理は、上述したエッジ連結処理に引き続いて実行される処理であり、注目ブロックが合焦しているか否かを判定する処理である。
【0125】
この処理が実行されると、CPU160は、まず、上記エッジ連結処理で決定された注目ブロックの水平および垂直方向の確定ぼやけ幅DWを取得する(ステップS700)。
【0126】
2つの確定ぼやけ幅DWを取得すると、CPU160は、これらのうち、どちらかの確定ぼやけ幅DWが「不明」であるか否かを判定する(ステップS710)。かかる判定によって、どちらかの確定ぼやけ幅DWが「不明」であると判定されれば(ステップS710:Yes)、注目ブロックのエッジパターンが基本エッジパターンのいずれにも近似しないことになるので、そのブロックは、「ぼやけブロック」であると一律に判断する(ステップS720)。
【0127】
一方、上記ステップS710において、どちらの確定ぼやけ幅DWも「不明」ではないと判断されれば(ステップS710:No)、CPU160は、2つの確定ぼやけ幅DWのうち、大きい方の値を有する確定ぼやけ幅DWを、最大確定ぼやけ幅MDWとして特定する(ステップS730)。
【0128】
最大確定ぼやけ幅MDWを特定すると、CPU160は、この最大確定ぼやけ幅MDWが「0」よりも大きく、かつ、所定のぼやけ幅閾値(例えば、「16」)よりも小さいか否かを判定する(ステップS740)。かかる判定の結果、最大確定ぼやけ幅MDWがこの条件を満たせば、注目ブロックは「合焦ブロック」であると判定する(ステップS750)。これに対して、最大確定ぼやけ幅MDWが「0」であるか、もしくは所定のぼやけ幅閾値以上であれば、注目ブロックは「ぼやけブロック」であると判定する(ステップS720)。
【0129】
以上の処理により、現在の注目ブロックが、「合焦ブロック」か「ぼやけブロック」かの判定が終了すると、その判定結果が、図9に示したぼやけ判定処理のステップS170において、サブウィンドウ(図7参照)毎に集計される。こうして集計された合焦ブロック数は、RAM170の合焦ブロック数バッファ172に記憶されることになる。
【0130】
以上で説明したブロックぼやけ判定処理によれば、水平方向の確定ぼやけ幅DWと垂直方向の確定ぼやけ幅DWとのうち、その値が大きい方の確定ぼやけ幅DWを最大確定ぼやけ幅MDWとして特定し、この最大確定ぼやけ幅MDWが所定のぼやけ幅閾値に対して大きければ、注目ブロックがぼやけていると判断することができる。
【0131】
H.ウィンドウぼやけ判定処理:
図22は、図9に示したぼやけ判定処理のステップS190で実行されるウィンドウぼやけ判定処理の詳細なフローチャートである。上述したブロックぼやけ判定処理がブロック毎にぼやけの有無を判定する処理であるのに対して、このウィンドウぼやけ判定処理は、図7に示したウィンドウ領域毎にぼやけの有無を判定する処理である。この処理は、1つのサブウィンドウに属する全てのブロックのブロックぼやけ判定処理が完了した際に実行される。
【0132】
この処理が実行されると、CPU160は、まず、図12に示した合焦ブロック数バッファ172を参照する(ステップS800)。そして、現在注目しているウィンドウ領域(以下、「注目ウィンドウ」という)内の全てのサブウィンドウについて、合焦ブロック数の累積値を取得し(ステップS810)、これらを合算することで、ウィンドウ領域内のすべての合焦ブロックの数を集計する(ステップS820)。
【0133】
図23は、ウィンドウ領域の移動方法と合焦ブロック数の集計方法を示す説明図である。図23(a)には、注目ウィンドウの初期位置を示すとともに、図12に示した合焦ブロック数の記録順に従って、画像の左上隅のサブウィンドウの合焦ブロックの数の累積値が「3」と記録されたことを示している。この場合、上記ステップS820では、図の1列目に示した合焦ブロック数(0,0,0,3)を全て加算することになる。1つのウィンドウ領域に4×4個のサブウィンドウが含まれ、1つのサブウィンドウに7×7個のブロックが含まれる場合には、ウィンドウ領域内の全てのブロックが合焦しているとすれば、1ウィンドウ領域についての合焦ブロックの総数は、784(=7×7×16)となる。
【0134】
説明を図23に戻す。上記ステップS820によって、合焦ブロックの数を集計すると、CPU160は、その合焦ブロックの総数が所定の合焦密度閾値(例えば、400)以上であるかを判定する(ステップS830)。かかる判定の結果、合焦ブロックの総数が合焦密度閾値以上であれば(ステップS830:Yes)、現在の注目ウィンドウを「合焦ウィンドウ」と判定し(ステップS840)、合焦密度閾値に満たなければ(ステップS830:No)、「ぼやけウィンドウ」と判定する(ステップS850)。
【0135】
上記ステップS840によって「合焦ウィンドウ」と判定した場合には、CPU160は、当該ウィンドウぼやけ判定処理を終了する。すると、処理は、図9のぼやけ判定処理のステップS210にすすみ、画像全体が合焦画像であると判定される。これに対して、ステップS850によって、ぼやけウィンドウと判定した場合には、注目ウィンドウを合焦ブロック数バッファ172中において、1列分、右へ移動させる(ステップS860)。図22(b)には、図22(a)からウィンドウを1列分移動させた例を示している。以降、かかる処理によって、注目ウィンドウは、図22(c),(d)に示すように、徐々に右側に移動する。こうすることにより、図9のぼやけ判定処理のステップS180において集計された合焦ウィンドウの数が、ウィンドウ領域の右下隅に記録されることになる。
【0136】
ステップS860によって注目ウィンドウを移動させると、CPU160は、図22(e)に示すように、そのウィンドウ領域が右端まで移動したかを判断する(ステップS870)。かかる処理によって、右端まで始動していないと判断されれば(ステップS870:No)、CPU160は、当該ウィンドウぼやけ判定処理を終了し、処理を図9に示したぼやけ判定処理のステップS200に戻す。
【0137】
これに対して、注目ウィンドウが右端まで移動したと判断されれば(ステップS870:Yes)、合焦ブロック数バッファ172の行を繰り上げる処理を行う(ステップS880)。この繰り上げ処理は、合焦ブロック数バッファの4行目のデータを3行目に、3行目を2行目に、2行目を1行目に繰り上げる処理である。この時、1行目については、その行を4行目に繰り下げると同時に、この行のデータをすべて初期化する。図22(e)には、この繰り上げ処理の様子を示している。図3や図4に示したように、JPEGデータからのブロックの読み込みは、基本的に画像の左上から開始するのに対して、かかる処理では、図示するように、合焦ブロック数バッファ172を、最下段の行から順にデータを埋めていくのである。なお、この繰り上げ処理では、RAM170内に記憶されたデータを行毎に移動させるものとしてもよいが、各行を参照するアドレスポインタを順次入れ替えるものとしてもよい。このようにポインタを用いるものとすれば、RAM内でデータを移動させる必要がないので、処理時間を短縮することができる。
【0138】
上記ステップS880において、合焦ブロック数バッファ172の行を繰り上げた後には、CPU160は、図22(f)に示すように、注目ウィンドウを合焦ブロック数バッファ172の左端に移動させる(ステップS890)。そうすると、合焦ブロック数バッファ172の最終行の1列目から次の合焦ブロック数が記録されていくことになる。注目ウィンドウが「ぼやけウィンドウ」と判断された場合には、上述したステップS860からステップS890までの処理を実行することで、注目ウィンドウを相対的に画像内の左上から右下にかけて1サブウィンドウ単位で移動させることができる。
【0139】
I.効果:
以上で説明した本実施例のプリンタ100によれば、JPEGデータをRGBやYCbCr等によって表される空間領域まで伸張することなく、周波数領域であるDCT係数まで伸張した段階で、ぼやけの有無を判定することができる。従って、ぼやけの判定処理を高速に行うことができる。また、本実施例では、8画素×8画素のDCT係数のうち、図5に示した第1の係数群および第2の係数群を構成する計14個のDCT係数のみによってぼやけの有無を判定することができるので、演算量を低減することができる。
【0140】
また、本実施例では、第1の係数群や第2の係数群をそのままRAM170に保存するのではなく、これらの係数群によって表される輝度変化に近似した基本エッジパターンをエッジパターンテーブル181から検索し、そのパターン番号を図10や図11に示したパターン番号バッファ171に保存する。そのため、メモリ容量を大幅に低減することができる。また、パターン番号を保存する領域についても、図10や図11に示したように、ぼやけの有無を判断しようとする注目ブロックの右側および下側に隣接するブロックが記録可能な領域のみを用意するものとしたので、使用するメモリ容量を格段に低減することができる。
【0141】
また、本実施例では、最終的に複数のブロックを含む所定のウィンドウ領域に基づき、画像全体のぼやけの有無を判定するが、この時に利用する合焦ブロック数バッファ172もウィンドウ領域に含まれるサブウィンドウの行数分だけ用意するものとした。そのため、使用するメモリ容量を低減することができる。
【0142】
また、本実施例では、上述したエッジ連結処理によって、隣接したブロックのぼやけ幅を順次連結していくことができるので、画像中のぼやけ部分の幅が8×8の単位ブロックのサイズを超える場合についても、精度良く画像がぼやけているか否かを判定することができる。
【0143】
以上、本発明の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。
【0144】
例えば、上記実施例では、プリンタ100がぼやけの判定を行うものとしたが、上述した各種処理を実行するためのプログラムをコンピュータにインストールすることで、コンピュータがぼやけの判定を行うものとしてもよい。
【0145】
また、上記実施例では、1つのブロックのサイズが8×8の場合を示したが、ブロックのサイズはこれに限られない。また、ウィンドウ領域の大きさや、1つのウィンドウ領域に含まれるサブウィンドウの数も適宜設定可能である。
【0146】
また、上記実施例では、注目ブロックを順次移動させていくことで、画像データから読み込むブロックの数を最低限に抑えるものとしたが、画像データに含まれる全てのブロックについてエッジパターン照合処理を行ってパターン番号を記憶し、こうして記憶した画像全体のパターン番号を用いて、エッジ連結処理やブロックぼやけ判定処理等を行うものとしてもよい。こうすることによっても、画像全体の係数値を保持する必要がないため、メモリの使用量を削減することができる。
【図面の簡単な説明】
【0147】
【図1】実施例としてのプリンタ100の外観を示す説明図である。
【図2】プリンタ100の内部構成を示す説明図である。
【図3】JPEGデータ内に各ブロックが1行ごとに記録されている様子を示す説明図である。
【図4】JPEGデータ内に各ブロックが2行ごとに記録されている様子を示す説明図である。
【図5】係数抽出部162によって抽出されるDCT係数を示す説明図である。
【図6】注目ブロックとこれに隣接したブロックとのぼやけ幅を連結する概念を示す説明図である。
【図7】ウィンドウ領域の概念を示す説明図である。
【図8】印刷処理のフローチャートである。
【図9】ぼやけ判定処理のフローチャートである。
【図10】JPEGデータに1行単位でブロックが記録されている場合に確保されたパターン番号バッファ171の一例を示す説明図である。
【図11】JPEGデータに2行単位でブロックが記録されている場合に確保されたパターン番号バッファ171の一例を示す説明図である。
【図12】合焦ブロック数バッファ172の一例を示す説明図である。
【図13】エッジパターン照合処理の詳細なフローチャートである。
【図14】エッジパターンテーブル181の一例を示す説明図である。
【図15】正規化輝度差テーブル182の一例を示す説明図である。
【図16】エッジ連結処理の詳細なフローチャートである。
【図17】注目ブロックと隣接ブロックとで基本エッジパターンの傾き方向が一致する例を示す説明図である。
【図18】注目ブロックと隣接ブロックとで基本エッジパターンの傾き方向が一致しない例を示す説明図である。
【図19】注目ブロックの右側エッジ幅RWと隣接ブロックの左側エッジ幅LWの加算値と連結誤差閾値との比較の様子を示す説明図である。
【図20】累積ぼやけ幅CWの算出概念を示す説明図である。
【図21】ブロックぼやけ判定処理の詳細なフローチャートである。
【図22】ウィンドウぼやけ判定処理の詳細なフローチャートである。
【図23】ウィンドウ領域の移動方法と合焦ブロック数の集計方法を示す説明図である。
【符号の説明】
【0148】
100…プリンタ
110…スキャナ
120…メモリカードスロット
130…USBインタフェース
140…操作パネル
145…液晶ディスプレイ
150…制御ユニット
160…CPU
161…画像データ入力部
162…係数抽出部
163…パターン照合部
164…エッジ連結部
165…ブロックぼやけ判定部
166…ウィンドウぼやけ判定部
170…RAM
171…パターン番号バッファ
172…合焦ブロック数バッファ
173…縦累積バッファ
174…横累積バッファ
180…ROM
181…エッジパターンテーブル
182…正規化輝度差テーブル
210…キャリッジ
211…インクヘッド
212…インクカートリッジ
220…キャリッジモータ
230…紙送りモータ
260…駆動ベルト
270…プラテン
280…摺動軸

【特許請求の範囲】
【請求項1】
複数の画素からなるブロックの集合として構成された画像のぼやけを検出する画像処理装置であって、
前記ブロックを単位として行われた空間領域から周波数領域への変換により得られた係数が、該ブロック毎に記録されて構成された画像データを入力する画像データ入力部と、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと、該各基本エッジパターンにそれぞれ一意に割り振られたパターン番号とが対応付けて記憶されたエッジパターン記憶部と、
前記入力した画像データの各ブロックから、所定方向の周波数成分を表す係数群を抽出する係数抽出部と、
前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを前記エッジパターン記憶部から選出するパターン照合部と、
前記選出された基本エッジパターンに対応する前記パターン番号を前記ブロックに関連づけて記憶するパターン番号記憶部と、
前記パターン番号記憶部に記憶されたパターン番号を参照し、前記画像内における前記ブロックの連なりに沿って前記基本エッジパターンの勾配の方向が一致する範囲をぼやけ幅として検出するぼやけ幅検出部と、
前記検出されたぼやけ幅に基づいて、前記画像データが表す画像のぼやけを判定するぼやけ判定部と
を備える画像処理装置。
【請求項2】
請求項1に記載の画像処理装置であって、
前記エッジパターン記憶部には、更に、前記パターン番号に対応付けて、前記各基本エッジパターンが表す勾配の幅が記憶されており、
前記ぼやけ幅検出部は、前記基本エッジパターンの勾配の方向が一致する範囲に存在する各ブロックのパターン番号に対応付けられた前記勾配の幅を前記エッジパターン記憶部から読み出し、該勾配の幅を加算して、前記ぼやけ幅を算出する
画像処理装置。
【請求項3】
請求項2に記載の画像処理装置であって、
前記ぼやけ幅検出部は、前記ブロックの連なりに沿って、注目するブロックを、前記画像データ内に移動させていき、該注目ブロックと該注目ブロックの移動先の隣接ブロックとにそれぞれ関連づけられた前記パターン番号を参照して、該注目ブロックと該隣接ブロックの基本エッジパターンの勾配の方向が一致するか否かを判定し、該勾配の方向が一致する場合に、該注目ブロックのパターン番号に対応付けられた前記勾配の幅を累積加算していくことで、前記ぼやけ幅を算出する
画像処理装置。
【請求項4】
請求項3に記載の画像処理装置であって、
前記画像データには、前記ブロックが水平方向および垂直方向に連なっており、
前記係数抽出部は、前記係数群として、水平方向の周波数成分を表す第1の係数群と、垂直方向の周波数成分を表す第2の係数群とを抽出し、
前記パターン照合部は、前記第1の係数群と前記第2の係数群とについて、それぞれ、前記基本エッジパターンを選出し、
前記パターン番号記憶部は、前記選出された2つの基本エッジパターンに対応する前記パターン番号をそれぞれ前記ブロックに関連付けて記憶し、
前記ぼやけ幅検出部は、水平方向および垂直方向についてそれぞれ前記ぼやけ幅を算出し、
前記ぼやけ判定部は、前記水平方向と垂直方向とについてそれぞれ算出された前記ぼやけ幅のうち、大きい方のぼやけ幅に基づき、前記画像データが表す画像のぼやけを判定する
画像処理装置。
【請求項5】
請求項4に記載の画像処理装置であって、
前記ぼやけ幅検出部は、前記水平方向について累積加算した勾配の幅を、ブロック1つ分保持する横累積バッファに保存し、前記垂直方向について累積加算した勾配の幅を、ブロック1行分保持する縦累積バッファに保存し、前記注目ブロックを移動させた場合に、これらのバッファを参照することで移動前のブロックに累積された水平および垂直方向の勾配の幅を取得する
画像処理装置。
【請求項6】
請求項4または請求項5に記載の画像処理装置であって、
前記パターン番号記憶部は、前記注目ブロックが含まれる第1の行と該注目ブロックの下側に隣接するブロックが含まれる第2の行とについて前記パターン番号を記憶可能な記憶領域を有し、前記注目ブロックが該注目ブロックの属する行の右端に移動した場合に、前記第2の行以降に記憶されたパターン番号を、それぞれ前の行に繰り上げて記憶することで、次に選出されたブロックのパターン番号を、該パターン番号記憶部の空領域に記憶していく
画像処理装置。
【請求項7】
請求項6に記載の画像処理装置であって、
前記画像データには、前記ブロックがn(nは1以上の整数)行毎に記録されており、
前記パターン番号記憶部は、前記ブロック(n+1)行分のパターン番号が記憶可能な記憶領域を用意する
画像処理装置。
【請求項8】
請求項1ないし請求項7のいずれかに記載の画像処理装置であって、
前記ぼやけ判定部は、
前記ぼやけ幅と所定の閾値とに基づき、前記ブロック毎にぼやけの有無を判定するブロックぼやけ判定部と、
前記画像データ内の所定のウィンドウ領域に含まれる全ブロックについて、前記ブロックぼやけ判定手段によるぼやけの有無を集計し、該集計結果と所定の閾値とに基づき、該ウィンドウ領域内がぼやけているか否かを判断するウィンドウぼやけ判定部と、
前記画像データ中において、前記ウィンドウ領域を移動させていった結果、少なくとも1カ所、ぼやけていないと判断された前記ウィンドウ領域が存在する場合に、前記画像データが表す画像全体がぼやけていないと判断する画像ぼやけ判定部と
を備える画像処理装置。
【請求項9】
請求項8に記載の画像処理装置であって、
前記ウィンドウ領域は、更に、それぞれが前記ブロックのサイズよりも大きい複数のサブウィンドウによって区画されており、
前記ブロックぼやけ判定部は、前記ブロック毎のぼやけの有無を、該ブロックが含まれる前記サブウィンドウ毎に集計し、
前記ウィンドウぼやけ判定部は、前記サブウィンドウについて集計された集計値を、更に、前記ウィンドウ領域に含まれる全サブウィンドウについて集計することで、該ウィンドウ領域に含まれる全ブロックについての前記ぼやけの有無の集計を行う
画像処理装置。
【請求項10】
請求項9に記載の画像処理装置であって、
前記画像ぼやけ判定部は、前記画像データ中において、前記ウィンドウ領域を、前記サブウィンドウ単位の移動距離で移動させる
画像処理装置。
【請求項11】
請求項10に記載の画像処理装置であって、
更に、前記ブロックぼやけ判定部によって集計された前記サブウィンドウ毎のぼやけの有無の集計値を記憶する集計値記憶部を備え、
前記集計値記憶部は、前記ウィンドウ領域内に含まれるサブウィンドウの行数分だけ前記集計値を記憶する記憶領域を有し、前記ウィンドウ領域が前記画像データ中において下側に移動された場合には、前記集計値記憶部の各行に記憶された集計値を、それぞれ前記移動された行数分だけ前の行に繰り上げて記憶し、該繰り上げ処理に伴って生じた該集計値記憶部の空領域に前記移動後のウィンドウ領域内に含まれることになった前記サブウィンドウ毎の前記集計値を記憶する
画像処理装置。
【請求項12】
請求項1ないし請求項11のいずれかに記載の画像処理装置であって、
更に、前記ぼやけ判定部によってぼやけていないと判定された画像をユーザに提示する提示部を備える
画像処理装置。
【請求項13】
請求項12に記載の画像処理装置であって、
更に、前記提示された画像の中からユーザによって選択された画像を印刷する印刷部を備える
画像処理装置
【請求項14】
請求項1ないし請求項13のいずれかに記載の画像処理装置であって、
前記画像データは、JPEG形式の画像データである
画像処理装置。
【請求項15】
コンピュータが複数の画素からなるブロックの集合として構成された画像のぼやけを検出するぼやけ検出方法であって、
前記ブロックを単位として行われた空間領域から周波数領域への変換により得られた係数が、該ブロック毎に記録されて構成された画像データを入力し、
前記入力した画像データの各ブロックから、所定方向の周波数成分を表す係数群を抽出し、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと、該各基本エッジパターンにそれぞれ一意に割り振られたパターン番号とが対応付けて記憶されたエッジパターン記憶部を参照して、前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを選出し、
前記選出された基本エッジパターンに対応する前記パターン番号を前記ブロックに関連づけて所定のパターン番号記憶部に記憶し、
前記パターン番号記憶部に記憶されたパターン番号を参照し、前記画像内における前記ブロックの連なりに沿って前記基本エッジパターンの勾配の方向が一致する範囲をぼやけ幅として検出し、
前記検出されたぼやけ幅に基づいて、前記画像データが表す画像のぼやけを判定する
ぼやけ検出方法。
【請求項16】
コンピュータが複数の画素からなるブロックの集合として構成された画像のぼやけを検出するためのコンピュータプログラムであって、
前記ブロックを単位として行われた空間領域から周波数領域への変換により得られた係数が、該ブロック毎に記録されて構成された画像データを入力する機能と、
前記入力した画像データの各ブロックから、所定方向の周波数成分を表す係数群を抽出する機能と、
前記ブロック内の画素値の変化の代表的な勾配形状を前記係数によって表した複数種類の基本エッジパターンと、該各基本エッジパターンにそれぞれ一意に割り振られたパターン番号とが対応付けて記憶されたエッジパターン記憶部を参照して、前記抽出した係数群が表す勾配形状に近似する基本エッジパターンを選出する機能と、
前記選出された基本エッジパターンに対応する前記パターン番号を前記ブロックに関連づけて所定のパターン番号記憶部に記憶する機能と、
前記パターン番号記憶部に記憶されたパターン番号を参照し、前記画像内における前記ブロックの連なりに沿って前記基本エッジパターンの勾配の方向が一致する範囲をぼやけ幅として検出する機能と、
前記検出されたぼやけ幅に基づいて、前記画像データが表す画像のぼやけを判定する機能と
をコンピュータに実現させるコンピュータプログラム。
【請求項17】
請求項16に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2009−22017(P2009−22017A)
【公開日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2008−201711(P2008−201711)
【出願日】平成20年8月5日(2008.8.5)
【分割の表示】特願2006−184300(P2006−184300)の分割
【原出願日】平成18年7月4日(2006.7.4)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】