JP3745069B2 - 画像処理装置及びその方法 - Google Patents

画像処理装置及びその方法 Download PDF

Info

Publication number
JP3745069B2
JP3745069B2 JP02786797A JP2786797A JP3745069B2 JP 3745069 B2 JP3745069 B2 JP 3745069B2 JP 02786797 A JP02786797 A JP 02786797A JP 2786797 A JP2786797 A JP 2786797A JP 3745069 B2 JP3745069 B2 JP 3745069B2
Authority
JP
Japan
Prior art keywords
image data
density
value
image
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP02786797A
Other languages
English (en)
Other versions
JPH09289586A (ja
Inventor
充 前田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP02786797A priority Critical patent/JP3745069B2/ja
Publication of JPH09289586A publication Critical patent/JPH09289586A/ja
Application granted granted Critical
Publication of JP3745069B2 publication Critical patent/JP3745069B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、多値画像データの特徴を判定する画像処理装置及びその方法並びに媒体に関するものである。
【0002】
【従来の技術】
近年、原稿画像を、その原稿画像内に構成される構成要素で表現する技術が高まりつつある。具体的には、原稿画像を構成する、「画像」、「図形」、「文字」、更に「章」、「節」、「段落」、「タイトル」、「キャプション」等の属性と書式を定義する。そして、定義される属性と書式の情報を出力し、出力される属性と書式の情報に基づいて、原稿画像の表示や検索を行う像域分離技術が実現している。また、これらは、世界的な通信網の整備とともに普及しつつあるインターネットに代表されるネットワークで交換されるデータや、アメリカで標準化されたSGMLという形で広がりつつある。
【0003】
また、「複合カラー文書を対象とした構造化カラーファクシミリ」(松木他:画像電子学会誌第24巻第1号 pp.26−33)のように、属性毎に符号化方式を切り替えることにより、画像を好適に符号化して伝送したり、蓄積することが考えられている。
更に、例えば、特開平8ー30725号には、2値の原稿画像を入力して、上述の画像の属性や書式の情報を判定する旨が記載されている。これは、入力される原稿画像より得られる画像データ中の所定画素領域から低解像度の1画素を抽出し、低解像度の画素の連続する広がりから、画像の属性や書式の情報を判定するものである。そして、判定された属性や書式の情報を原稿画像から抽出したり、所望の属性や書式の情報を持つ領域を抽出することができる。
【0004】
一方、像域分離技術においては、原稿画像をスキャナ等で入力する際に、その原稿画像に濃度ムラや裏写り、ひいては原稿画像の下地の濃度が濃い場合等には、それらがノイズとして原稿画像より得られる画像データの下地に発生し、その発生したノイズが像域分離処理の精度を低下させていた。また、プリンタ等でそのようなノイズを含む下地を持つ画像データを出力すると、出力画像の画質が劣化して出力されてしまっていた。そのため、上述のように画像データの下地にノイズが発生するような場合は、そのノイズを除去する画像処理装置が存在する。
【0005】
このような画像データの下地のノイズを除去する画像処理装置は、例えば、原稿画像の濃度の平均値から下地の濃度を判定し、その判定された濃度以下の画像を出力されないように制御することで、画像データの下地に発生するノイズを除去していた。あるいは、原稿画像の入出力濃度のガンマ補正等の補正を行うことで、結果的に画像データの下地に発生するノイズが除去されていた。
【0006】
【発明が解決しようとする課題】
しかしながら、上記従来の画像処理装置において、原稿画像の濃度の平均値を用いて下地に発生するノイズを除去する方法では、低濃度の文字や連続階調を持つ画像が存在する原稿画像に対しては、それらの濃度が下地の濃度よりも低いために、低濃度の文字や連続の階調を持つ画像の低濃度の部分が出力されないように制御されてしまうので、出力画像の画質が劣化してしまうという問題点があった。
【0007】
また、ガンマ補正等の補正を行うことで下地に発生するノイズを除去する方法では、原稿画像の下地の濃度が白に近い場合は画像データの下地の濃度の出力が抑えられるので結果的に下地に発生するノイズが除去されるが、下地の濃度が高い場合は画像データの下地の濃度の出力が強調されるため下地に発生するノイズが逆に強められて出力されてしまうという問題点があった。
【0008】
そのため、これらの方法では、上述のような場合に、像域分離技術の精度の問題や、出力画像の画質の劣化の問題は改善されていなかった。
一方、上記従来の画像処理装置で実行される像域分離処理では、原稿画像を読み取って得られる画像データを2値化し、その2値化して得られる2値画像データに対して像域分離処理を行うため、2値化しやすい「図形」と2値化しにくい「写真」を好適に分離することができないという問題点があった。また、強調を意図して部分的に色文字等が含まれる原稿画像を認識する場合に、その色を認識せずに像域分離を行うため、分離された文字をOCR等で認識しても、その色の情報が認識されずにいるので、所望のOCR結果が得られないという問題点があった。
【0009】
また、下地に発生するノイズを除去した画像データであっても、その下地を構成する濃度に幅があると、画像データを伝送したり、蓄積するために行う符号化処理の効率が悪いという問題点があった。
本願は上述の事情に鑑みてなされたものであり、対象画像の特徴に応じて良好な量子化を行うことを第1の目的としている。
【0010】
また、本願の第2の目的は、画像データの下地に発生するノイズを好適に除去し、画像データを量子化するための量子化数を好適に判定することにある。
また、本願の第3の目的は、色文字を良好に抽出することにある。
また、本願の第4の目的は、スキャナ等で読み取った原稿画像の画像データの下地に発生するノイズを好適に除去することができ、画像データによる出力画像の画質を向上することにある。
【0011】
また、画像データの下地に発生するノイズを好適に除去することで、画像データを属性毎の領域に分離する像域分離処理の精度を向上すること、また、画像データの下地に発生するノイズを好適に除去し、ノイズを除去した画像データから好適な下地の濃度を判定し、その判定された濃度を下地の濃度として出力することで、画像データの符号化効率を向上することにある。
【0012】
上記の目的を達成するための本発明による画像処理装置は以下の構成を備える。即ち、 画像処理装置であって、
画像を表す多値画像データを入力する入力手段と、
前記多値画像データの下地を構成する濃度幅として、該多値画像データの画素値の頻度ヒストグラム中の最大頻度となる下地代表濃度を含み、かつ前記下地代表濃度から低濃度方向の濃度の内、最初に所定閾値よりも小さくなる頻度の濃度を下地濃度下限値とし、かつ前記下地代表濃度から高濃度方向の濃度の内、最初に前記所定閾値よりも小さくなる頻度の濃度を下地濃度上限値とする、濃度幅を判定し、該多値画像データが該濃度幅に含まれるか否かに基づいて、該多値画像データより2値画像データを抽出する抽出手段と、
前記2値画像データの配置に基づいて、前記画像を属性毎に複数の画像領域に分割する分割手段と、
前記画像領域内の前記多値画像データを量子化する量子化手段を備え、
前記多値画像データの量子化数は、前記画像領域単位で決定される。
【0016】
【発明の実施の形態】
以下、図面を参照して本発明の好適な実施の形態を詳細に説明する。
<第1の実施の形態>
図1は第1の実施の形態の画像処理装置の構成を示すブロック図である。
図1において、1は原稿画像を入力する画像入力部であり、CCDセンサなどの光電変換手段を含むイメージスキャナ等で構成される。ここでは入力する原稿画像を白黒の多値画像(8ビット/画素)として説明を行う。2は画像入力部1より得られる原稿画像の画像データを記憶しておくフレームメモリである。
【0017】
3はフレームメモリ2から読み出された画像データ(8ビット/画素の多値画像データ)の画素値のヒストグラムを作成するヒストグラム生成部である。
尚、ヒストグラム生成部3は、256個のカウンタで構成され、各カウンタは読み出される画像データ(8ビット/画素の多値画像データ)の画素値に対応しており、多値画像データが読み出されるたびにその画素値に対応するカウンタに1が加えられる。
【0018】
4はヒストグラムから、出力頻度の最大値とその最大値を持つ画素値を出力する最大頻度検出部である。5は最大頻度検出部4で検出された最大値から頻度分布(ヒストグラム)を量子化するための量子化ステップqを決定する量子化ステップ算出部である。
6は量子化ステップ算出部5で算出された量子化ステップでヒストグラムを量子化する量子化部である。7は101個のカウンタで構成され、量子化部6の出力のヒストグラムを生成するヒストグラム生成部である。8はノイズ閾値決定部であり、ヒストグラム生成部7の出力と量子化ステップ算出部5で算出された量子化ステップqから頻度上のノイズを除去するための頻度ノイズ閾値を決定する。
【0019】
9はノイズ閾値決定部8で決定された頻度ノイズ閾値とヒストグラム生成部3で生成されたヒストグラムを比較する比較部である。10は最大頻度検出部4で検出された最大値と比較部9の出力から下地を構成する濃度の幅を求める下地濃度幅検出部である。
11は下地濃度幅検出部10で検出された下地を構成する濃度の幅を外部装置に出力する端子である。12は最大頻度検出部4で検出された下地の濃度を外部装置に出力する端子である。13はフレームメモリ2の内容を外部装置に出力する端子である。
【0020】
尚、図1で示される画像処理装置の各構成要素は、不図示のCPUで制御されるものとする。
次に、図1を用いて、画像処理装置において実行される処理について説明する。
まず、処理に先立ち、不図示のCPUはフレームメモリ2と、ヒストグラム生成部3、ヒストグラム生成部7のカウンタの内容を0にクリアする。
【0021】
続いて、CPUはユーザの指示に従って、画像入力部1から白黒多値画像(8ビット/画素)を表す画像データを入力し、その画像データをフレームメモリ2に格納する。1画像分の画像データがフレームメモリ2に格納された後、CPUは、フレームメモリ2から画像データを読み出し、ヒストグラム生成部3に入力する。ヒストグラム生成部3の256個のカウンタは、入力される画像データの画素値に対応しており、1画素の画像データが入力されるとその画素値に対応するカウンタの内容に1を加える。
【0022】
入力された画像データの全ての画素によってヒストグラムが生成された後、CPUは最大頻度検出部4を動作させ、ヒストグラムの中で出力頻度が最大値を持つ画素値を検出する(つまり、カウンタの値が最大となる画素値)。そして、その検出される出力頻度の最大値mと、対応する画素値を出力する。また、この対応する画素値は下地の濃度を示すので、この濃度を下地代表濃度bと呼ぶ。この下地代表濃度bは端子12から出力される。
【0023】
検出された出力頻度の最大値mは量子化ステップ算出部5に入力される。量子化ステップ算出部5では、ヒストグラムを正規化するための量子化ステップqを(1)式に従って決定する。
q=m/100 …(1)
決定された量子化ステップqは量子化部6に入力される。量子化ステップqが入力されたら、量子化部6はヒストグラム生成部3で生成される出力頻度値h(i)(i=0〜255)(ヒストグラム)を画素値の低い方であるh(0)から順に読み出し、(2)式によって量子化し、その量子化結果r(i)(i=0〜255)を得る。
【0024】
r(i)=h(i)//q (i=0〜255) …(2)
尚、記号//は割り算後に小数点以下を四捨五入することを表わす。
ヒストグラム生成部7は量子化部6の出力のヒストグラムを生成する。101個のカウンタは、量子化結果r(i)の値に対応しており、対応するカウンタの内容に1を加える。
【0025】
量子化結果r(i)の全てについてヒストグラムの生成が終えたら、ノイズ閾値決定部8を動作させ、ヒストグラム生成部7のカウンタの内容からノイズ閾値noise_thを決定する。ノイズ閾値決定部8は、ヒストグラム生成部7のカウンタの内容から最大値をとる量子化結果mrの値を検出し、量子化ステップqを掛けた後、予め設定された値αを加算して得られる値をノイズ閾値として算出する。つまり、(3)式によって得られる値をノイズ閾値noise_thとして算出する。
【0026】
noise_th=mr×q+α …(3)
ノイズ閾値決定部8で算出されたノイズ閾値noise_thは、比較部9に入力される。続いて、ヒストグラム生成部3の各カウンタの内容を順に読み出し、ノイズ閾値noise_thと比較し、出力頻度値h(i)がノイズ閾値noise_thより大きければその値を出力し、小さければ「0」を出力する。その結果は下地濃度幅検出部10に入力される。
【0027】
下地濃度幅検出部10は、最大頻度検出部4から下地代表濃度bと比較部9から入力された値から、下地を構成する画素の濃度の幅を算出する。この幅は、下地代表濃度bを中心として最近傍の画素値において、出力頻度が0になっている値を検出する。図2を用いて、その検出する過程を示す。尚、図2には、ある原稿画像の画像データが持つ画素値とその出力頻度の関係を示しており、横軸に画素値、縦軸に出力頻度で表している。
【0028】
まず、下地代表濃度bから画素値の低い方へ出力頻度の検査を行い、頻度が0になった値bt0を求める。この値が濃度幅の下限値となるので濃度幅下限値と呼ぶ。同様に、画素値の高い方へ出力頻度の検査を行い、濃度が0になった値bt1を求める。この値が濃度幅の上限値となるので濃度幅上限値と呼ぶ。尚、この濃度幅下限値bt0と濃度幅上限値bt1は端子11から出力される。
【0029】
次に第1の実施の形態で実行される処理について、図3のフローチャートを用いて説明する。
図3は第1の実施の形態で実行される処理の処理フローを示すフローチャートである。
まず、処理に先立ち、不図示のCPUはフレームメモリ2と、ヒストグラム生成部3、ヒストグラム生成部7のカウンタの内容を0にクリアする。
【0030】
ステップS3010で、続いて、CPUはユーザの指示に従って、画像入力部1から白黒多値画像(8ビット/画素)である原稿画像を読み込み、その画像データをフレームメモリ2に格納する。ステップS3020で、原稿画像分の画像データがフレームメモリ2に格納された後、CPUは、フレームメモリ2から画像データを読み出し、ヒストグラム生成部3に入力し、入力された画像データの全ての画素によってヒストグラムを生成する。
【0031】
ステップS3030で、CPUは最大頻度検出部4を動作させ、ヒストグラムの中で出力頻度が最大値を持つ画素値を下地代表濃度bとして抽出する。ステップS3040で、量子化ステップ算出部5で、ヒストグラムを正規化するための量子化ステップqを決定し、決定された量子化ステップqを量子化部6に入力する。量子化部6は、決定された量子化ステップqに基づいて、ヒストグラム生成部3で生成されたヒストグラムを量子化し、ヒストグラム生成部7で量子化部6の出力のヒストグラムを生成する。
【0032】
ステップS3050で、ノイズ閾値決定部8を動作させ、量子化されたヒストグラムからノイズ閾値noise_thを算出する。ステップS3060では、各出力頻度値h(i)について、比較部9において、ヒストグラム生成部3で生成されたヒストグラムの出力頻度値h(i)がノイズ閾値noise_thよりも大きいか否かを比較する。ノイズ閾値noise_thが出力頻度値よりも小さい場合(ステップS3060でNO)、ステップS3070で、その値を出力する。一方、ノイズ閾値noise_thが出力頻度値よりも大きい場合(ステップS3060でYES)、ステップS3080で、「0」を出力する。ステップS3080aで、全ての画素値について、ステップS3060の処理が終了したか否かを判定し、終了するまで順次ステップS3060〜ステップS3080を繰り返す。
【0033】
ステップS3090で、下地濃度幅検出部10は、最大頻度検出部4から下地代表濃度bと比較部9から入力された値から、下地を構成する画素の濃度の幅として濃度幅下限値bt0と濃度幅上限値bt1を抽出する。
次に、第1の実施の形態で説明される画像処理装置の適用例を説明する。例えば、図4に示されるような画像通信装置に適用させた場合に、実行される動作とその構成を説明する。
【0034】
図4は第1の実施の形態の画像処理装置を適用させた画像通信装置の構成を示すブロック図である。
図4において、20は第1の実施の形態の図1に示される画像処理装置である。21は、画像処理装置20の端子11から出力された濃度幅下限値bt0と濃度幅上限値bt1と、端子13から出力されたフレームメモリ2の内容を比較する比較部である。22はラッチであり、タイミング調整を行う。23はセレクタであり、比較部21の出力によって、ラッチ22の出力と画像処理装置20の端子12から出力される下地代表濃度bを選択して出力する。
【0035】
24は入力された画像データを、直交変換、量子化、ハフマン符号化を用いた多値画像データの符号化であるJPEG符号化を行うJPEG符号化部である。25は通信プロトコルに合わせてJPEG符号化データを送信する通信インタフェースである。26は電話回線やLANで構成される通信回線である。
次に図4で実行される処理の概要を説明する。
【0036】
画像処理装置20のフレームメモリ2から画像データを画素順で読み込み、端子13を介してラッチ22に格納する。同時に比較部21は、端子13より入力された画素値と、端子11より入力された濃度幅下限値bt0と濃度幅上限値bt1を比較し、入力画素値が濃度幅下限値bt0と濃度幅上限値bt1の間にあれば「1」を、そうでなければ「0」を出力する。
【0037】
セレクタ23は、比較部21の出力が「1」であれば、端子12から出力された下地代表濃度bを選択して出力する。一方、「0」であれば、ラッチ22でラッチされている値を出力する。JPEG符号化部24は、セレクタ23より入力された画素値に対し、JPEG符号化を施し、通信インタフェース25を介して通信回線26に出力する。以上の処理を、フレームメモリ2の全ての画像データについて行い、送信を終了したら全ての動作を終了する。
【0038】
以上のようなJPEG符号化の前処理を行うことにより、入力画像の下地を整え、符号化効率を向上させることができる。尚、上述の実施の形態では、JPEG符号化を用いたが、符号化方法としては、他のブロック符号化、差分符号化などを用いても良い。
以上説明したように、第1の実施の形態によれば、画像データの画素値のヒストグラムに基づいて、下地代表濃度bと下地の濃度幅上限値bt1と濃度幅下限値bt0を抽出し、濃度幅上限値bt1と濃度幅下限値bt0の範囲内に含まれる画素値をすべて下地代表濃度bとして出力することで、一定した好適な下地の濃度を出力することができる。また、画素値のヒストグラムを量子化し、量子化されたヒストグラムに基づいて、ノイズ閾値noise_thを算出し、その算出されたノイズ閾値noise_thを用いることで、下地の濃度として出力される出力頻度のノイズを好適に除去することができる。
【0039】
また、白黒画像に対して、従来より高速で比較的小さい回路規模で好適な下地の濃度判定が可能になり、その結果、下地のノイズを好適に除去できる。また、ノイズによる影響を取り除き、下地を一定濃度にすることができるので、符号化効率を向上させることができる。
<第2の実施の形態>
第1の実施の形態では、白黒多値画像の原稿画像の下地の濃度幅と好適な下地濃度を判定する画像処理装置について説明した。第2の実施の形態では、カラー多値画像の原稿画像の下地の濃度幅と好適な下地濃度の判定において、特に、カラー多値画像より得られる輝度画像データを用いて判定を行う下地濃度幅判定部109(図6参照)を備える画像処理装置について説明する。
【0040】
図5は第2の実施の形態の画像処理装置の構成を示すブロック図である。
図5において、101は原稿画像を入力する画像入力部であり、カラーイメージスキャナ等で構成される。ここでは入力する原稿画像をカラー多値画像とし、RGB各色ごとに1画素あたり8ビットの精度をつ画像データとして説明を行う。102は原稿画像をCIE1976L***画像データ(各成分8ビット)に変換する色変換部である。103は色変換部102より得られる原稿画像のL***画像データを記憶しておくフレームメモリである。
【0041】
104はCIE1976L***画像データの輝度を表わすL*画像データから入力画素が、平坦画素であるか否かを判定する平坦画素判定部である。105はラッチであり、制御信号によってその内容を出力するか否かを決定する。
106〜108は読み込まれたL*、a*、b*画像データの画素値のヒストグラムを作成するヒストグラム生成部である。
【0042】
尚、ヒストグラム生成部106〜108は、それぞれ256個のカウンタで構成され、各カウンタは読み込まれる画像データの画素値に対応しており、1画素の画像データの入力に対してその画素値に対応するカウンタに1が加えられる。ヒストグラム生成部106はL*画像データ、ヒストグラム生成部107はa*画像データ、ヒストグラム生成部108はb*画像データのヒストグラムを生成する。
【0043】
109はL*画像データのヒストグラムから下地を構成する画素のL*画像データの下地表示濃度bと濃度幅下限値bt0と濃度幅上限値bt1を決定する下地濃度判定部である。110、111は各ヒストグラム生成部107、108より生成されるヒストグラムから、最大出力頻度を持つ画素値を検出する最大頻度検出部である。
【0044】
112は下地代表濃度bLを、113は下地を構成する濃度の幅(濃度幅下限値bt0と濃度幅上限値bt1)を外部装置に出力する端子である。114はa*画像データの最大出力頻度を持つa*画像データの画素値を外部に出力する端子である。115は画像データの最大頻度を持つb*画像データの値を外部装置に出力する端子である。116はフレームメモリ103の内容を外部装置に出力する端子である。
【0045】
尚、図5で示される画像処理装置の各構成要素は、不図示のCPUで制御されるものとする。
次に、図5を用いて、画像処理装置において実行される処理について説明する。
まず、処理に先立ち、不図示のCPUはフレームメモリ103と、ヒストグラム生成部106〜108のカウンタの内容を0にクリアする。
【0046】
続いて、CPUはユーザの指示に従って、画像入力部101からRGBカラー多値画像である原稿画像を読み込み、色変換部102によってL***画像データに変換し、フレームメモリ103に格納する。
原稿画像分のL***画像データがフレームメモリ103に格納された後、CPUは、フレームメモリ103からL***画像データを読み出し、平坦画素判定部104とラッチ105に入力する。
【0047】
平坦画素判定部104は入力画素とその周囲の画素のL***画像データを入力する。フレームメモリ103上に格納されるL*、a*、b*画像データのそれぞれの座標をL(x,y)、a(x,y)、b(x,y)とした時、L***画像データの各エッジ量eL、ea、ebを以下の(4)式によって算出する。
【0048】
Figure 0003745069
これらのエッジ量eL、ea、ebと閾値Th1を比較し、全てが閾値Th1以下であれば「1」を、そうでなければ「0」を出力する。
【0049】
ラッチ105は平坦画素判定部104からの出力が「0」の時は、格納されているL*、a*、b*画像データを出力せず、ヒストグラム生成部106〜108は処理を行わない。一方、平坦画素判定部104からの出力が「1」の時は、格納されているL*、a*、b*画像データを対応するヒストグラム生成部106〜108に出力する。
【0050】
そして、ヒストグラム生成部106ではL*画像データのヒストグラムを作成する。同様に、ヒストグラム生成部107ではa*画像データのヒストグラム、ヒストグラム生成部108ではb*画像データのヒストグラムを生成する。
フレームメモリ103内の全ての画素の平坦画素検出、ヒストグラム処理を終了した後、下地濃度判定部109、最大頻度検出部110、111を起動させる。
【0051】
ここで、下地濃度判定部109の詳細な構成について、図6を用いて説明する。
図6は第2の実施の形態の下地濃度判定部109の詳細な構成を示すブロック図である。
図において、120は端子であり、ヒストグラム生成部106から入力されるヒストグラムの各出力頻度値を入力する。121は最大頻度検出部であり、ヒストグラム生成部106のヒストグラムから、出力頻度の最大値とその最大値を持つ画素値を出力する最大頻度検出部である。
【0052】
122は最大頻度検出部121で検出された最大値から頻度分布(ヒストグラム)を量子化するための量子化ステップqを決定する量子化ステップ算出部である。
123は量子化ステップ算出部122で算出された量子化ステップqでヒストグラムを量子化する量子化部である。124は101個のカウンタで構成され、量子化部123の出力のヒストグラムを生成するヒストグラム生成部である。125はノイズ閾値決定部であり、ヒストグラム生成部124の出力と量子化ステップ算出部122で算出された量子化ステップqから頻度上のノイズを除去するための頻度ノイズ閾値を決定する。
【0053】
126はノイズ閾値決定部125で決定された頻度ノイズ閾値とヒストグラム生成部106で生成されたヒストグラムを比較する比較部である。127は最大頻度検出部121で検出された最大値と比較部126の出力から下地を構成する濃度の幅を求める下地濃度幅検出部である。
129は下地濃度幅検出部127で検出された下地を構成する濃度の幅を外部装置に出力する端子である。128は最大頻度検出部121で検出された下地の濃度(最大値)を外部装置に出力する端子である。
【0054】
次に、図6を用いて、下地濃度判定部109で実行される処理について説明する。
入力された画像データの全ての画素についてヒストグラムを生成した後、CPUは最大頻度検出部121を動作させ、ヒストグラムの中で出力頻度が最大値を持つ画素値を検出する(つまり、カウンタの値が最大となる画素値)。そして、その検出される出力頻度の最大値mと、対応する画素値を出力する。また、この対応する画素値はL*の下地の濃度を示すので、この濃度を下地代表濃度bLと呼ぶ。この下地代表濃度bLは端子128から出力される。
【0055】
検出された出力頻度の最大値mは量子化ステップ算出部122に入力される。量子化ステップ算出部122では、ヒストグラムを正規化するための量子化ステップqを第1の実施の形態で説明される(1)式に従って決定する。
決定された量子化ステップqは量子化部123に入力される。量子化ステップqが入力されたら、量子化部123はヒストグラム生成部106で生成される出力頻度値h(i)(i=0〜255)を画素値の低い方から順に読み出し、第1の実施の形態で説明される(2)式によって量子化し、その量子化結果r(i)(i=0〜255)を得る。
【0056】
ヒストグラム生成部124は量子化部123の出力のヒストグラムを生成する。101個のカウンタは、量子化結果r(i)の値に対応しており、対応するカウンタの内容に1を加える。このカウンタの内容を頻度値rh(k)(k=0〜100)とする。
量子化結果r(i)の全てについてヒストグラムの生成が終えた後、ノイズ閾値決定部125を動作させ、ヒストグラム生成部124のカウンタの内容、頻度値rh(k)から最大値をとる量子化結果mrの値と、kがmr以上の頻度値rh(k)で最初の極小値をとるmtを検出する。そして、極小値mtに量子化ステップqを掛けた後、予め設定された値βを加算して得られる値を、ノイズ閾値noise_thとして算出する。
【0057】
ノイズ閾値決定部125で算出されたノイズ閾値noise_thは、比較部126に入力される。続いて、ヒストグラム生成部106の各カウンタの内容を順に読み出し、ノイズ閾値noise_thと比較し、出力頻度値h(i)がノイズ閾値noise_thより大きければその値を出力し、小さければ「0」を出力する。その結果は下地濃度幅検出部127に入力される。
【0058】
下地濃度幅検出部127は、最大頻度検出部121から下地代表濃度bLと比較部126から入力された値から、下地を構成する画素の濃度の幅を算出する。この幅は、下地代表濃度bLを中心として最近傍の画素値において、出力頻度が0になっている値を検出する。この値は、上述の第1の実施の形態で説明される濃度幅下限値値bt0と濃度幅上限値bt1であり、同様の方法で検出する。この濃度幅下限値bt0と濃度幅上限値bt1は端子129から出力される。
【0059】
再び、図5の画像処理装置で実行される処理について説明する。
最大頻度検出部110は、ヒストグラム生成部107で生成されたヒストグラムの中で出力頻度が最大値を持つ画素値を検出する(つまり、カウンタの値が最大となる画素値)。そして、その検出される出力頻度の最大値mと、対応する画素値を出力する。また、この対応する画素値はa*の下地の濃度を示すので、この濃度を下地代表濃度baと呼ぶ。この下地代表濃度baは端子114から出力される。
【0060】
最大頻度検出部111は、ヒストグラム生成部108で生成されたヒストグラムの中で出力頻度が最大値を持つ画素値を検出する(つまり、カウンタの値が最大となる画素値)。そして、その検出される出力頻度の最大値mと、対応する画素値を出力する。また、この対応する画素値はb*の下地の濃度を示すので、この濃度を下地代表濃度bbと呼ぶ。この下地代表濃度bbは端子115から出力される。
【0061】
図7は第2の実施の形態で実行される処理の処理フローを示すフローチャートである。
まず、処理に先立ち、不図示のCPUはフレームメモリ103と、ヒストグラム生成部106〜108のカウンタの内容を0にクリアする。
ステップS701で、続いて、CPUはユーザの指示に従って、RGBの色成分で表されるカラー多値画像である原稿画像を読み込み、色変換部102によってL***画像データに変換し、フレームメモリ103に格納する。
【0062】
ステップS702で、原稿画像分のL***画像データがフレームメモリ103に格納された後、CPUは、フレームメモリ103からL***画像データを読み出し、平坦画素判定部104とラッチ105に入力する。平坦画素判定部104は入力画素とその周囲の画素のL***画像データを入力する。フレームメモリ103上に格納されるL*、a*、b*画像データの各画素のエッジ量eL、ea、ebを算出する。そして、これらのエッジ量eL、ea、ebと閾値Th1を比較する。全てが閾値Th1以下である場合、入力画素が平坦が画素であると判定し、そうでない場合は、エッジ画素であると判定する。平坦画素であった場合のみステップS703に進み、ヒストグラムを生成する。
【0063】
ステップS703で、L*、a*、b*画像データを対応するヒストグラム生成部106〜108に出力し、各ヒストグラム生成部106〜108において、画像データの全ての画素によってヒストグラムを生成する。
ステップS704で、CPUは最大頻度検出部121を動作させ、L*画像データのヒストグラムの中で出力頻度が最大値を持つ画素値を下地代表濃度bLとして抽出する。ステップS705で、量子化ステップ算出部122で、ヒストグラムを正規化するための量子化ステップqを決定し、決定された量子化ステップqを量子化部123に入力する。量子化部123は、決定された量子化ステップqに基づいて、ヒストグラム生成部106で生成されたヒストグラムを量子化し、ヒストグラム生成部124で量子化部123の出力のヒストグラムを生成する。 ステップS705で、ノイズ閾値決定部125を動作させ、量子化されたヒストグラムからノイズ閾値noise_thを算出する。ステップS706で、比較部126において、ノイズ閾値noise_thがヒストグラム生成部106で生成されたヒストグラムの出力頻度値よりも大きいか否かを比較する。ノイズ閾値noise_thが出力頻度値よりも大きい場合(ステップS706でYES)、ステップS708に進む。一方、ノイズ閾値noise_thが出力頻度値よりも小さい場合(ステップS706でNO)、ステップS707に進む。ステップS707で、比較部126は、比較した画素値を下地濃度幅検出部129に出力する。ステップS708で、比較部126は、「0」を下地濃度幅検出部129に出力する。ステップS708aで、全ての出力頻度値について、ステップS706の処理が終了したか否かを判定し、終了するまで順次ステップS706〜ステップS708を繰り返す。
【0064】
ステップS709で、下地濃度幅検出部127は、最大頻度検出部121から下地代表濃度bLと比較部126から入力された値から、下地を構成する画素の濃度の幅として濃度幅下限値bt0と濃度幅上限値bt1を抽出する。
ステップS710で、最大頻度検出部110は、ヒストグラム生成部107で生成されたヒストグラムの中で出力頻度が最大値を持つ画素値をa*の下地代表濃度baとして抽出する。ステップS711で、最大頻度検出部111は、ヒストグラム生成部108で生成されたヒストグラムの中で出力頻度が最大値を持つ画素値をb*の下地代表濃度bbとして抽出する。
【0065】
次に、第2の実施の形態で説明される画像処理装置の適用例を説明する。例えば、図8に示されるようなプリンタ装置に適用させた場合に、実行される動作とその構成を説明する。
図8は第2の実施の形態の画像処理装置を適用させたプリンタ装置の構成を示すブロック図である。
【0066】
図8において、140は第2の実施の形態の図5に示される画像処理装置である。141は白色下地判定部であり、画像処理装置140の端子112からL*画像データの下地代表濃度bLを、画像処理装置140の端子112からa*画像データの下地代表濃度baを、画像処理装置140の端子115からb*画像データの下地代表濃度bbを入力し下地が実質的に白色か否かを判定する。
【0067】
142は画像処理装置140の端子113から出力された濃度幅下限値bt0と濃度幅上限値bt1と、画像処理装置140の端子116から出力されたフレームメモリ103のL***画像データを比較する比較部である。143はラッチであり、タイミング調整を行う。144はセレクタであり、比較部142の出力によって、ラッチ143の出力または、画像処理装置140の端子112から出力される下地代表濃度bL、端子114から出力される下地代表濃度ba、端子115から出力される下地代表濃度bbを選択して出力する。
【0068】
145は入力されたL***画像データをプリンタのYMCKインクに最適な値に変換する色変換部である。146はYMCK画像データを誤差拡散方式で2値化する2値化部である。147はYMCKのインクで2値記録を行う2値プリンタである。
次に、図8で実行される処理について説明する。
【0069】
画像処理装置140のフレームメモリ103から画像データを画素順で読み込み、端子116を介してラッチ143に格納する。同時に比較部142は、端子116より入力された画素値と、端子113より入力された濃度幅下限値bt0と濃度幅上限値bt1を比較し、入力画素値が濃度幅下限値bt0と濃度幅上限値bt1の間にあれば「1」を、そうでなければ「0」を出力する。
【0070】
また、白色下地判定部141はL*、a*、b*画像データの下地代表濃度であるbL、ba、bbをそれぞれ端子112、114、115より入力し、(5)式に従って色差eを算出する。
e=√((255−bL)2+ba2+bb2) …(5)
色差eを閾値Th2と比較し、閾値Th2以下であれば下地代表濃度bL、ba、bbの値を255、0、0として出力する。一方、閾値Th2以上であれば入力された値をそのまま出力する。
【0071】
そして、セレクタ144は比較部142の出力が「1」であれば、下地代表濃度bL、ba、bbを選択して出力し、「0」であれば、ラッチ143の値を出力する。色変換部145は、セレクタ144より入力されるL***画像データを、YMCK画像データに変換して出力する。変換された画像データは2値化部146に入力され、誤差拡散方式によって2値化される。そして、2値化部146で2値化された画像データは、2値プリンタ147で、記録媒体に記録される。
【0072】
以上の処理を、フレームメモリ103の全ての画素について、終了したら全ての動作を終了する。
以上説明したように、第2の実施の形態によれば、画像データの画素値のヒストグラムに基づいて、L*画像データの下地代表濃度bLと下地の濃度幅上限値bt1と濃度幅下限値bt0を抽出し、濃度幅上限値bt1と濃度幅下限値bt0の範囲内に含まれる画素値をすべて下地代表濃度bL、ba、bbとして出力することで、一定した好適な下地の色を出力することができる。また、L*画像データの画素値のヒストグラムを量子化し、量子化されたヒストグラムに基づいて、ノイズ閾値noise_thを算出し、算出されたノイズ閾値noise_thを用いることで、下地の濃度として出力される出力頻度のノイズを好適に除去することができる。
【0073】
また、カラー画像に対して、従来より高速で比較的小さい回路規模で好適な下地の濃度判定が可能になり、その結果、下地のノイズを好適に除去できる。また、L*、a*、b*画像データの平坦画素を抽出することにより、下地の濃度判定の精度を向上することができる。更に、ノイズによる影響を取り除き、下地を一定濃度にすることができるので、2値画像の記録品質を向上できる。更に、また、下地代表濃度bLと比較することで、下地領域への記録を抑制できるので、さらに好印象の記録を得られる。
【0074】
<第3の実施の形態>
第3の実施の形態では、領域内に複数色が含まれている場合、輝度画像から異なる色が含まれていることを検知する処理を行うプログラムを、例えば、ROM等の記憶媒体に記憶させ、そのプログラムを実行することで、本発明で説明される処理を行う。
【0075】
図9は第3の実施の形態の画像処理装置の構成を示すブロック図である。
図9おいて、201は後述する第3の実施の形態で説明される処理(図10〜21のフローチャート参照)を実行する実行プログラムによって動作し、装置を構成する各構成要素の制御を行うCPUである。202はその実行プログラムを格納し、実行プログラムを実行するのに必要な記憶容量を確保するプログラムメモリである。203はユーザが実行プログラムの実行等の各種指示を入力する端末である。204は磁気ディスク等で構成される記憶装置である。205は原稿画像の読み込みを行うカラーイメージスキャナである。ここではカラー多値画像データ(RGB各8ビット)の原稿画像を読み込むこととする。206はカラー多値画像データをRGBの形態で原稿画像分格納する多値フレームメモリである。
【0076】
207はカラー多値画像データを2値化して得られる2値画像データを、原稿画像分格納する2値フレームメモリである。208は通信プロトコルに合わせて符号化データを送信する通信インタフェース(通信I/F)である。209は電話回線やLANで構成される通信回線である。210は装置を構成する各構成要素を接続し、画像データ等の各種データや制御信号を授受するバスである。
【0077】
以下、第3の実施の形態で実行される処理について、図10〜図21のフローチャートを用いて説明する。
尚、第3の実施の形態では、例えば、ユーザの指示によって、原稿画像をスキャナ205より読み込む。そして、読み込んで得られる画像データを2値化し、2値化して得られる2値画像データの領域分割を行う。分割された各領域の属性を像域分離処理によって判定し、判定された属性に基づいて2値画像データに含まれる各領域を量子化するための量子化数を決定する。更に、決定された量子化数に基づいて、各領域の構造化データを生成し、生成された構造化データを記憶装置204に格納するまでの処理を、例に挙げて説明する。
【0078】
尚、構造化データとは、各領域の属性に基づいて、領域に対応する2値画像データを好適に符号化した符号化データのことである。
まず、図10〜図12のフローチャートを用いて、スキャナ205にセットされた原稿画像を、端末203から装置を起動することで、原稿画像の画像データを読み込み、読み込まれた画像データに基づいて、画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出するまでの処理について説明する。
【0079】
図10〜図12は第3の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
図10において、ステップS001で、CPU201はスキャナ205から画像データを読み込み、多値フレームメモリ206に格納する。続いて、ステップS029、で多値フレーム206に格納されたカラー画像から、YCbCr画像データの輝度を表すY画像データp(x,y)を生成し、プログラムメモリ202上に格納する。次に、ステップS002で、プログラムメモリ202上に展開される輝度画像データの各画素データp(x,y)の画素値をカウントするカウンタを0にリセットする。尚、カウンタは256個の頻度hist_pixel[i](i=0〜255)からなり、例えば、画素値がiの画素データは、頻度hist_pixel[i]にカウントされる。また、各カウンタでカウントされる値は各画素値の出力頻度を示す。
【0080】
ステップS003で、プログラムメモリ202上より輝度画像データの画素データp(x,y)の画素値を順次読み込み、すべての画素データp(x,y)の画素値が読み込まれたか否かを判定する。そして、すべての画素データp(x,y)の画素値が読み込まれるまでは、ステップS004で、順次読み込まれる画素データp(x,y)の画素値に対応する頻度hist_pixel[p(x,y)]の内容を1インクリメントする。
【0081】
そして、各画素データp(x,y)の画素値の読み込みが終了したら、ステップS006に進む。尚、各画素データp(x,y)の画素値の読み込みが終了すると、頻度hist_pixel[i]に示される各画素値の出力頻度によって、画像データの画素値の出力頻度のヒストグラムが生成される。ステップS006で、生成されたヒストグラムの各画素値の出力頻度と比較するための変数max_hist、比較の結果に基づいて決定される下地代表濃度bg_value、比較した画素値の数をカウントするループカウンタiの内容を0にリセットする。
【0082】
ステップS007で、生成されたヒストグラムから各画素値の頻度hist_pixel[i]を読み込み、すべての頻度hist_pixel[i]が読み込まれたか否かを判定する。そして、すべての頻度hist_pixel[i]が読み込まれるまでは、ステップS008で、順次読み込まれるhist_pixel[i]と変数max_histを比較する。頻度hist_pixel[i]が変数max_histより大きい場合(ステップS008でYES)、ステップS009に進む。ステップS009で、変数max_histに頻度hist_pixel[i]を代入し、下地代表濃度bg_valueにループカウンタiの内容を代入する。一方、頻度hist_pixel[i]が変数max_histより小さい場合(ステップS008でNO)、ステップS010に進む。
【0083】
ステップS010で、ループカウンタiの内容を1インクリメントする。そして、すべての頻度hist_pixel[i]の比較が終了したら、つまり、ループカウンタiの内容が255になったら、ステップS011に進む。
図11において、ステップS011で、ヒストグラムを正規化するための量子化ステップmax_hist/100を算出した後に、(6)式に従って、量子化頻度hist_q[i]を算出する。
【0084】
hist_q[i]= hist_pixel[i]//(max_hist/100) …(6)
尚、記号//は割り算後に小数点以下を四捨五入することを表す。
次に、ステップS012で、各量子化頻度hist_q[i]の値をカウントするカウンタhist_hist[i]の内容を0にリセットする。ステップS013で、読み込まれる量子化頻度hist_q[i]の数をカウントするループカウンタiの内容を0にリセットする。
【0085】
ステップS014で、読み込まれる量子化頻度hist_q[i]を順次読み込み、すべての量子化頻度hist_q[i]が読み込まれたか否かを判定する。そして、すべての量子化頻度hist_q[i]が読み込まれるまでは、ステップS015で、順次読み込まれる量子化頻度hist_q[i]の出力値をカウンタhist_hist[hist_q[i]]でカウントする。ステップS016で、ループカウンタiの内容を1インクリメントする。
【0086】
そして、全ての量子化頻度hist_q[i]の読み込みが終了したら、ステップS017に進む。尚、全ての量子化頻度hist_q[i]の読み込みが終了すると、各カウンタhist_hist[i]に示される値によって、量子化頻度hist_q[i]のヒストグラムが生成される。ステップS017で、生成されたヒストグラムの各量子化頻度hist_hist[i]と比較するための変数max_hist_q、比較の結果に基づいて決定されるノイズ閾値noise_th、比較した量子化頻度hist_hist[i]の数をカウントするループカウンタiの内容を0にリセットする。
【0087】
ステップS018で、生成されたヒストグラムから各量子化頻度hist_hist[i]を読み込み、すべての量子化頻度hist_hist[i]が読み込まれたか否かを判定する。そして、すべての量子化頻度hist_hist[i]が読み込まれるまでは、ステップS019で、順次読み込まれる量子化頻度hist_hist[i]と変数max_hist_qを比較する。量子化頻度hist_hist[i]が変数max_hist_qより大きい場合(ステップS019でYES)、ステップS020に進む。ステップS020で、変数max_hist_qに頻度hist_hist[i]を代入し、ノイズ閾値noise_thにループカウンタiの内容を代入する。一方、量子化頻度hist_hist[i]が変数max_hist_qより小さい場合(ステップS019でNO)、ステップS021に進む。
【0088】
ステップS021で、ループカウンタiの内容を1インクリメントする。そして、すべての量子化頻度hist_hist[i]の比較が終了したら、つまり、ループカウンタiの内容が255になったら、ステップS022に進む。
図12において、ステップS022で、(7)式に従って、新たなノイズ閾値noise_thを算出する。
【0089】
noise_th= (noise_th+γ)×(max_hist_q/100) …(7)
ステップS023で、下地濃度下限値bt0として下地代表濃度bg_valueから1を引いたものを算出する。ステップS024で、順次、頻度hist_pixel[bt0]と新たなノイズ閾値noise_thを比較する。そして、頻度hist_pixel[i]がノイズ閾値noise_thよりも小さくなるまで、ステップS025で、下地濃度下限値bt0から1デクリメントする。
【0090】
そして、頻度hist_pixel[bt0]がノイズ閾値noise_thよりも小さくなったら、ステップS026で、下地濃度上限値bt1として下地代表濃度bg_valueから1を足したものを算出する。尚、頻度hist_pixel[bt0]がノイズ閾値noise_thよりも小さくなった時の下地濃度下限値bt0が、下地濃度下限値bt0となる。
ステップS027で、順次、頻度hist_pixel[bt1]と新たなノイズ閾値noise_thを比較する。そして、頻度hist_pixel[bt1]がノイズ閾値noise_thよりも小さくなるまで、ステップS028で、下地濃度下限値bt1に1インクリメントする。そして、頻度hist_pixel[bt1]がノイズ閾値noise_thよりも小さくなったら、処理を終了する。尚、頻度hist_pixel[bt1]がノイズ閾値noise_thよりも小さくなった時の下地濃度上限値bt1が、下地濃度上限値bt1となる。
【0091】
以上、図10〜図12のフローチャートで説明された処理によって、画像データの下地代表濃度bg_value、下地濃度下限値bt0、下地濃度上限値bt1が算出される。
続いて、図13のフローチャートを用いて、画像データを像域分離処理を行うために画像データを2値化する処理について説明する。
【0092】
図13は第3の実施の形態で実行される画像データを2値化する処理の処理フローを示すフローチャートである。
ステップS101で、プログラムメモリ202上に展開される輝度画像データの各画素データp(x,y)を順次読み込む。そして、ステップS102で、すべての画素データp(x,y)に対し、後述のステップS103で実行される処理が終了したか否かを判定する。そして、ステップS103で、すべての画素データp(x,y)に対し、2値画像データb(x,y)に変換する2値化を行う。2値化の方法は、順次読み込まれる画素データp(x,y)の画素値が下地濃度下限値bt0以上でかつ下地濃度上限値bt1以下であるかを判定する。
【0093】
そして、画素データp(x,y)が下地濃度下限値bt0以上でかつ下地濃度上限値bt1以下であれば、ステップS105で、その画素データp(x,y)の2値画像データb(x,y)を「0」として、2値フレームメモリ207の対応する領域に書き込む。一方、画素データp(x,y)が下地濃度下限値bt0以上でないかまたは下地濃度上限値bt1以下でなければ、ステップS104で、その画素データp(x,y)の2値画像データb(x,y)を「1」として、2値フレームメモリ207の対応する領域に書き込む。
【0094】
プログラムメモリ202に上の全ての画素データp(x,y)について、2値化されたら、処理を終了する。
以上、図13のフローチャートで説明された処理によって、2値フレームメモリ207に、多値フレームメモリ206上に格納される画像データの各画素データp(x,y)の2値化された2値画像データb(x,y)が格納される。
【0095】
続いて、図14〜図17のフローチャートを用いて、2値フレームメモリ207上に格納された2値画像データを領域分割し、分割された領域の属性を像域分離処理によって判定する。そして、判定された属性に基づいて2値画像データに含まれる各領域を量子化するための量子化数を決定する処理について説明する。
図14〜図17は第3の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数を決定する処理の処理フローを示すフローチャートである。
【0096】
図14において、ステップS201で、2値フレームメモリ207から2値画像データを読み込む。ステップS202で、読み込まれた2値画像データに対し、類似する属性を持つ領域毎に分割する。そして、分離された領域数をカウンタarea_countでカウントする。また、各領域の位置座標と大きさを求める。ステップS203で、カウントされた各領域に対して、各領域に含まれる「1」である2値画像データの塊の密度や形状、並びから「画像(写真)」、「図形」、「文字」等の領域の属性を判定する像域分離処理を行う。ここでは、例えば、特開平8ー30725号に記載されている像域分離処理の方法を用いて、像域分離を行う。
【0097】
具体的に以下のように行う。
まず、2値データについて、所定周期で「1」の塊が連続する場合には、文字列である可能性が高いので、「文字」領域と判定する。
次に「文字」領域以外の領域については、「1」の密度が比較的高い塊は写真である可能性が高いので「画像(写真)」と判定する。
【0098】
残りの領域のうち「1」の密度が比較的低く、かつ所定の形状を有するものを「図形」と判定する。
次に、カウントされた領域に対し、画像表現に必要な量子化数を決定する量子化数決定処理を、ステップS204以降で行う。
ステップS204で、ループカウンタkの値を1にセットする。また、ループカウンタkは、各領域に対して量子化数決定処理が終了する毎に、1インクリメントされ、そのカウント値とカウンタarea_countでカウントされた領域の値が対応している。ステップS205で、ループカウンタkの値がカウンタarea_countの値よりも大きいか否かを判定する。ループカウンタkの値がカウンタarea_countの値よりも小さい場合(ステップS205でNO)、ステップS206に進む。一方、ループカウンタkの値がカウンタarea_countの値よりも大きい場合(ステップS205でYES)、すべてのカウントされた領域に対して、量子化数決定処理がなされたことになるので、処理を終了する。
【0099】
ステップS206で、プログラムメモリ202からループカウンタkの値に対応する領域の画素データp(x,y)の画素値をカウントするカウンタを0にリセットする。尚、カウンタは256個の頻度hist_pixel[i](i=0〜255)からなり、例えば、画素値がiの画素データは、頻度hist_pixel[i]にカウントされる。また、各カウンタでカウントされる値は各画素値の出力頻度を示す。
【0100】
ステップS207で、プログラムメモリ202からループカウンタkの値に対応する領域の画素データp(x,y)の画素値を順次読み込み、すべての画素データp(x,y)の画素値が読み込まれたか否かを判定する。そして、すべての画素データp(x,y)の画素値が読み込まれるまでは、ステップS208で、順次読み込まれる画素データp(x,y)の画素値に対応する頻度hist_pixel[p(x,y)]の内容を1インクリメントする。そして、全ての画素値の読み込みが終了したら、ステップS209に進む。尚、全ての画素値の読み込みが終了すると、頻度hist_pixel[i]に示される各画素値の出力頻度によって、画像データの画素値の出力頻度のヒストグラムが生成される。
【0101】
図15においてステップS209で、生成されたヒストグラムの各画素値の出力頻度と比較するための変数max_hist、比較の結果に基づいて決定される下地代表濃度bg_value、比較した画素値の数をカウントするループカウンタiの内容を0にリセットする。
ステップS210で、生成されたヒストグラムから各画素値の頻度hist_pixel[i]を読み込み、すべての頻度hist_pixel[i]が読み込まれたか否かを判定する。そして、すべての頻度hist_pixel[i]が読み込まれるまでは、ステップS211で、順次読み込まれる頻度hist_pixel[i]と変数max_histを比較する。頻度hist_pixel[i]が変数max_histより大きい場合(ステップS211でYES)、ステップS212に進む。ステップS212で、変数max_histに頻度hist_pixel[i]を代入し、下地代表濃度bg_valueにループカウンタiの内容を代入する。一方、頻度hist_pixel[i]が変数max_histより小さい場合(ステップS211でNO)、ステップS213に進む。
【0102】
ステップS213で、ループカウンタiの内容を1インクリメントする。そして、すべての頻度hist_pixel[i]の比較が終了したら、つまり、ループカウンタiの内容が255になったら、ステップS214に進む。
ステップS214で、ヒストグラムを正規化するための量子化ステップmax_hist/100を算出した後に、(6)式に従って、量子化頻度hist_q[i]を算出する。
【0103】
次に、ステップS215で、各量子化頻度hist_q[i]の値をカウントするカウンタhist_hist[i]の内容を0にリセットする。ステップS216で、読み込まれる量子化頻度hist_q[i]の数をカウントするループカウンタiの内容を0にリセットする。
ステップS217で、読み込まれる量子化頻度hist_q[i]を順次読み込み、すべての量子化頻度hist_q[i]が読み込まれたか否かを判定する。そして、すべての量子化頻度hist_q[i]が読み込まれるまでは、ステップS218で、順次読み込まれる量子化頻度hist_q[i]の出力値をカウンタhist_hist[hist_q[i]]でカウントする。ステップS219で、ループカウンタiの内容を1インクリメントする。
【0104】
そして、全ての量子化頻度hist_q[i]の読み込みが終了したら、ステップS220に進む。尚、全ての量子化頻度hist_q[i]の読み込みが終了すると、カウンタhist_hist[i](i=0〜100)に示される値によって、量子化頻度hist_q[i]のヒストグラムが生成される。
図16において、ステップS220で、生成されたヒストグラムの量子化頻度hist_hist[i]と比較するための変数max_hist_q、比較の結果に基づいて決定されるノイズ閾値noise_th、比較した量子化頻度hist_q[i]の数をカウントするループカウンタiの内容を0にリセットする。
【0105】
ステップS221で、生成されたヒストグラムからカウンタhist_hist[i]を読み込み、すべてのカウンタhist_hist[i]が読み込まれたか否かを判定する。そして、すべてのカウンタhist_hist[i]が読み込まれるまでは、ステップS222で、順次読み込まれるカウンタhist_hist[i]と変数max_hist_qを比較する。カウンタhist_hist[i]が変数max_hist_qより大きい場合(ステップS222でYES)、ステップS223に進む。ステップS223で、変数max_hist_qに頻度hist_hist[i]を代入し、ノイズ閾値noise_thにループカウンタiの内容を代入する。一方、量子化頻度hist_hist[i]が変数max_hist_qより小さい場合(ステップS222NO)、ステップS224に進む。
【0106】
ステップS224で、ループカウンタiの内容を1インクリメントする。そして、すべての量子化頻度hist_hist[i]の比較が終了したら、つまり、ループカウンタiの内容が100になったら、ステップS225に進む。
ステップS225で、ノイズ閾値noise_thにγを加算して得られる新たなノイズ閾値noise_thを算出する。
【0107】
図17において、ステップS226で、生成されたヒストグラムの量子化頻度hist_q[i]と新たなノイズ閾値noise_thを比較し、その比較した数をカウントをカウントするループカウントi、ヒストグラムに存在する量子化頻度hist_q[i]の極大値の数を示す変数ex_countの内容を0にリセットする。
ステップS227で、生成されたヒストグラムから量子化頻度hist_q[i]を読み込み、すべての量子化頻度hist_q[i]が読み込まれたか否かを判定する。そして、すべての量子化頻度hist_q[i]が読み込まれるまでは、ステップS228で、順次読み込まれる量子化頻度hist_q[i]と新たなノイズ閾値noise_thを比較する。量子化頻度hist_q[i]が新たなノイズ閾値noise_thより大きい場合(ステップS228でYES)、ステップS229に進む。ステップS229で、量子化頻度hist_q[i]が極大値であるか否かを判定し、極大値である場合(ステップS229でYES)、ステップS230に進み、極大値でない場合(ステップS229でNO)、ステップS231に進む。ステップS230で、変数ex_countを1インクリメントし、ステップS231進む。一方、量子化頻度hist_q[i]が新たなノイズ閾値noise_thより小さい場合(ステップS228でNO)、ステップS231に進む。
【0108】
ステップS231で、ループカウンタiの内容を1インクリメントする。そして、すべての量子化頻度hist_q[i]の比較が終了したら、つまり、ループカウンタiの内容が255になったら、ステップS232に進む。
ステップS232で、変数ex_countが2以上であるか否かを判定する。変数ex_countが2以上でない場合(ステップS232でYES)、ステップS234に進み、ステップS234で、領域の画像の属性を示すフラグbi_mul_flagの内容を「1」にセットした後、ステップS238に進む。尚、変数ex_countが2以上でない場合は、領域の画像が単色の文字画像であると判断し、変数ex_countが2以上である場合は、領域の画像が複数色の文字画像と判断する。
【0109】
一方、変数ex_countが2以上である場合(ステップS232でNO)、ステップS233に進む。ステップS233で、変数max_hist_qが閾値Th3以上であるか否かを判定する。変数max_hist_qが閾値Th3以上である場合(ステップS233でYES)、ステップS235に進み、ステップS235で、画像内には変数ex_countの濃度が存在するとして、領域の画像の属性を示すフラグbi_mul_flagに変数ex_countの内容を代入し、ステップS236に進む。尚、変数max_hist_qがTh3以上でない場合は、領域の画像が連続階調の画像であると判断し、変数max_hist_qがTh3以上である場合は、領域の画像が複数色の多値画像と判断する。
【0110】
ステップS236で、フラグbi_mul_flagの内容に示される値に基づいて、領域を構成する色の輝度値を抽出する。領域内にはフラグbi_mul_flagの内容に示される値だけ色が存在する。量子化頻度hist_q[i]からフラグbi_mul_flagの内容の個数の極大値を持つ輝度pm[g](g=1〜bi_mul_flag)(これを代表輝度値と呼ぶ)。これによって、領域内の画像表現に必要な量子化数と、表現に必要な色の輝度値が抽出され、その領域に対する量子化数決定処理を終了する。この後、ステップS238に進む。
【0111】
一方、変数max_hist_qが閾値Th3以上でない場合(ステップS233でNO)、領域の画像の属性を示すフラグbi_mul_flagの内容を「0」にセットした後、ステップS238に進む。
ステップS238で、ループカウンタkの内容を1インクリメントする。そして、すべての領域に対し画像表現に必要な量子化数を決定する量子化数決定処理が行われたら、つまり、ループカウンタkの内容がカウンタarea_countの値になったら、すべての処理を終了する。
【0112】
以上、図14〜図17のフローチャートで説明される処理によって、2値フレームメモリ207上に格納された2値画像データを領域分割し、分割された領域の属性が像域分離処理によって判定される。そして、判定された属性に基づいて2値画像データに含まれる各領域を量子化するための量子化数が決定される。
続いて、図18〜図21のフローチャートを用いて、2値画像データに含まれる各領域の属性と対応する量子化数に基づいて、2値画像データに含まれる各領域の構造化データを生成する処理について説明する。
【0113】
図18〜図21は第3の実施の形態で実行される2値画像データに含まれる各領域の構造化データを生成する処理の処理フローを示すフローチャートである。
図18において、ステップS301で、ループカウンタkの値を1にセットする。また、ループカウンタkは、各領域に対して構造化データを生成する処理が終了する毎に、1インクリメントされ、そのカウント値とカウンタarea_countでカウントされた領域の値が対応している。ステップS302で、ループカウンタkの値がカウンタarea_countの値よりも大きいか否かを判定する。ループカウンタkの値がカウンタarea_countの値よりも小さい場合(ステップS302でNO)、ステップS303に進む。一方、ループカウンタkの値がカウンタarea_countの値よりも大きい場合(ステップS302でYES)、すべてのカウントされた領域に対して、構造化データを生成する処理がなされたことになるので、処理を終了する。
【0114】
ステップS303で、ループカウンタkの値に対応する領域の像域分離処理による属性が「文字」であるか否かを判定する。領域の属性が「文字」である場合(ステップS303でYES)、以下、後述するステップS307〜ステップS312で説明される処理を行う。一方、領域の属性が「文字」でない場合(ステップS303でNO)、ステップS304に進む。
【0115】
以下、領域の属性が「文字」である場合に実行される処理について、図19のフローチャートを用いて説明する。
図19は第3の実施の形態の領域の属性が「文字」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS307で、領域の属性が「文字」である領域のフラグbi_mul_flagが「1」であるか否かを判定する。領域のフラグbi_mul_flagが「1」である場合(ステップS307でYES)、単色の「文字」領域であるので、ステップS309に進み、領域の属性が「文字」である領域のOCRを行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「1」でない場合(ステップS307でNO)、ステップS308に進む。
【0116】
尚、領域のフラグbi_mul_flagが「1」である場合は、その領域は単色の「文字」から構成されると判断され、領域のフラグbi_mul_flagが「0」である場合は、その領域は連続階調の画像から構成されると判断され、領域のフラグbi_mul_flagが「1」でも「0」でもない場合は、その領域は複数色の「文字」から構成されると判断される。また、OCRの結果から得られた文字列は、その対応する文字コード、座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0117】
ステップS308で、領域の属性が「文字」である領域のフラグbi_mul_flagが「0」であるか否かを判定する。領域のフラグbi_mul_flagが「0」でない場合(ステップS308でNO)、ステップS310に進む。ステップS310で、ステップS236で得られた領域の量子化数と各代表輝度値pm[g]より、各代表輝度値毎のビットプレーン画像をプログラムメモリ202の輝度画像から生成する。
【0118】
ここで、代表色の抽出は以下のように行う。まず、3個のバッファを用意し、各バッファをそれぞれRGB値に対応させる。更に、画素数カウンタcpを0にリセットしておく。ビットプレーン画像の画素値と同じ位置のカラー画像データを多値フレームメモリ206から読み出し、画素値p(x,y)が処理するビットプレーン画像の画素値が1であれば、バッファに格納したRGBの値に読みだしたカラー画像データのRGB各色の値をそれぞれ加算して、再度バッファに格納する。更に、画素数カウンタcpの内容を1インクリメントする。領域内の全ての画素について処理が終わったら、各バッファの内容を画素カウンタcpで割ってRGB毎の平均値を求め、これらを抽出された色とする。これを各代表輝度値について行い、全ての代表輝度値について、色の抽出が終了したら、その領域に対する量子化決定処理を終了する。この後、ステップS311に進む。
【0119】
ステップS311で、領域の属性が「文字」である領域のOCRを各代表輝度値毎に行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「0」である場合(ステップS308でYES)、ステップS312に進む。尚、ステップS311のOCRの結果から得られた文字列は、各文字列の色、対応する文字コード、座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0120】
ステップS312で、領域の属性が「文字」である領域のJPEG符号化を行い、符号化データとその座標と領域サイズを構造化データを構成する構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。そして、領域のJPEG符号化が終了したら、ステップS306に進む。
図18のフローチャートに戻る。
【0121】
ステップS304で、ループカウンタkの値に対応する領域の像域分離処理による属性が「図形」であるか否かを判定する。領域の属性が「図形」である場合(ステップS304でYES)、以下、後述するステップS313〜ステップS318で説明される処理を行う。一方、領域の属性が「図形」でない場合(ステップS304でNO)、ステップS305に進む。
【0122】
以下、領域の属性が「図形」である場合に実行される処理について、図20のフローチャートを用いて説明する。
図20は第3の実施の形態の領域の属性が「図形」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS313で、領域の属性が「図形」である領域のフラグbi_mul_flagが「1」であるか否かを判定する。領域のフラグbi_mul_flagが「1」である場合(ステップS313でYES)、ステップS315に進み、領域の属性が「図形」である領域のアウトライン抽出によるベクトル化を行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「1」でない場合(ステップS313でNO)、ステップS314に進む。
【0123】
尚、領域のフラグbi_mul_flagが「1」である場合は、その領域は単色の「図形」から構成されると判断され、領域のフラグbi_mul_flagが「0」である場合は、その領域は連続階調画像の「図形」から構成されると判断され、領域のフラグbi_mul_flagが「1」でも「0」でもない場合は、その領域は複数色の「図形」から構成されると判断される。また、ベクトル化の結果から得られたベクトルは、その座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0124】
ステップS314で、領域の属性が「図形」である領域のフラグbi_mul_flagが「0」であるか否かを判定する。領域のフラグbi_mul_flagが「0」でない場合(ステップS314でNO)、ステップS316に進む。ステップS316で、ステップS236で得られた領域の量子化数と各代表輝度値より、各代表輝度値毎のビットプレーン画像を生成する。ステップS317で、領域の属性が「図形」である領域のアウトライン抽出によるベクトル化を各代表輝度値毎に行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「0」である場合(ステップS314でYES)、ステップS318に進む。尚、ステップS317のベクトル化の結果から得られたベクトルは、各色の座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0125】
ステップS318で、領域の属性が「図形」である領域のJPEG符号化を行い、符号化データとその座標と領域サイズを構造化データを構成する構造化文書の書式にしたがって記憶装置204の所定の領域に書き込む。そして、領域のJPEG符号化が終了したら、ステップS306に進む。
図18のフローチャートに戻る。
【0126】
ステップS305で、ループカウンタkの値に対応する領域の像域分離処理による属性が「写真」であるか否かを判定する。領域の属性が「写真」である場合(ステップS305でYES)、以下、後述するステップS319〜ステップS324で説明される処理を行う。一方、領域の属性が「写真」でない場合(ステップS305でNO)、ステップS306に進む。
【0127】
以下、領域の属性が「写真」である場合に実行される処理について、図21のフローチャートを用いて説明する。
図21は第3の実施の形態の領域の属性が「写真」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS319で、領域の属性が「写真」である領域のフラグbi_mul_flagが「1」であるか否かを判定する。領域のフラグbi_mul_flagが「1」である場合(ステップS319でYES)、ステップS320に進み、領域の属性が「写真」である領域のJBIG符号化を行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「1」でない場合(ステップS319でNO)、ステップS320に進む。
【0128】
尚、領域のフラグbi_mul_flagが「1」である場合は、その領域は単色の「写真」から構成されると判断され、領域のフラグbi_mul_flagが「0」である場合は、その領域は単色の連続階調画像の「写真」から構成されると判断され、領域のフラグbi_mul_flagが「1」でも「0」でもない場合は、その領域は複数色の「写真」から構成されると判断される。尚、JBIG符号化の結果から得られた符号化データは、その座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0129】
ステップS320で、領域の属性が「写真」である領域のフラグbi_mul_flagが「0」であるか否かを判定する。領域のフラグbi_mul_flagが「0」でない場合(ステップS320でNO)、ステップS321に進む。ステップS321で、ステップS236で得られた領域を構成する色と各色の量子化頻度hist_q[i]の極大値より、各色毎のビットプレーン画像を生成する。ステップS323で、領域の属性が「写真」である領域のJBIG符号化を各色毎に行った後、ステップS306に進む。一方、領域のフラグbi_mul_flagが「0」である場合(ステップS320でYES)、ステップS324に進む。尚、ステップS323のJBIG符号化の結果から得られた符号化データは、各色の座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。
【0130】
ステップS324で、領域の属性が「写真」である領域のJPEG符号化を行い、符号化データの色、得られたベクトル、その座標と領域サイズを構造化データから構成される構造化文書の書式にしたがって記憶装置204の所定の領域に格納される。そして、領域のJPEG符号化が終了したら、ステップS306に進む。
【0131】
再び、図18のフローチャートに戻る。
ステップS306で、ループカウンタkの内容を1インクリメントする。そして、すべての領域に対し構造化データを生成する処理が行われたら、つまり、ループカウンタkの内容がカウンタarea_countの値になったら、すべての処理を終了する。
【0132】
以上、図18〜図21のフローチャートで説明される処理によって、2値画像データに含まれる各領域の属性と対応する量子化数に基づいて、2値画像データに含まれる各領域の構造化データが生成される。
尚、第3の実施の形態では、構造化データを記憶装置204に格納したが、通信インタフェース208を介して通信回線209に送信することもできる。
【0133】
以上説明したように、第3の実施の形態によれば、画像データの画素値のヒストグラムに基づいて、下地代表濃度bg_valueと下地の濃度幅上限値bt1と濃度幅下限値bt0を抽出し、濃度幅上限値bt1と濃度幅下限値bt0の範囲内に含まれる画素値をすべて下地代表濃度bg_valueとして出力することで、一定した好適な下地の濃度を出力することができる。
【0134】
また、画素値のヒストグラムを量子化し、量子化されたヒストグラムに基づいて、ノイズ閾値noise_thを算出し、その算出されたノイズ閾値noise_thを用いることで、下地の濃度として出力される出力頻度のノイズを好適に除去することができる。
また、カラー画像に対して、高速で比較的小さい回路規模で好適な領域判定が可能になる。画像データの存在するノイズによる影響を取り除くことで、図形/写真を正確に判定することができる。更に、下地と文字との輝度に差がない場合でも確実に文字を検出することができる。加えて、スキャナに特有なノイズを考慮した処理を行うようなプログラムを作成することで、最適な像域分離処理が行える効果もある。
【0135】
また、領域毎の画像を再現するのに必要な量子化を行うための好適な量子化数を決定することができる。更に、単色の図形や多値画像のほかに限定色の文字や図形を好適に判定できるので、構造化データを生成する精度を向上することができる。
尚、第1の実施の形態〜第3の実施の形態で説明された画像処理装置の構成はハードウェアで実現するものに限定されず、全部又は一部分をソフトウェア等のプログラムで実現してももちろん構わない。
【0136】
また、カラー多値画像データとして、均等色空間であるCIE1976L***空間を利用して、本発明で説明される処理を実行したが、もちろんこれに限定されず、RGB表色系でもよいし、YCbCr表色系やYIQ表色系を利用してもよい。更に入力ビット数、それに伴うヒストグラムの生成はこれに限定されず、量子化した結果の頻度分布であっても構わない。
【0137】
更に、像域分離処理や量子化の方法は本発明で説明される方法に限定されず、他の方法でも構わない。また、領域の形状を矩形として説明したが、これに限定されず、輪郭線等のあらゆる自由形状であってももちろん構わない。
また、更に、メモリ構成をフレームメモリとしたが、これに限定されず、ラインバッファ等で構成してももちろん構わない。
【0138】
また、多値の符号化としてJPRG符号化を例にとって説明を行ったが、もちろん、これに限定されず、DPCM符号化や、ベクトル量子化符号化等の他の多値の符号化を用いても構わない。更に、2値の符号化としてJBIG符号化を例にとって説明を行ったが、もちろん、これに限定されず、MMR符号化やLZW符号化等の他の2値の符号化を用いても構わない。更に、形状を表すのにベクトルを用いたが、チェイン符号化等の他の形状を表す符号化を用いても構わない。
【0139】
尚、本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置等)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0140】
この場合、記憶媒体から読出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【0141】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0142】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0143】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになる。簡単に説明すると、例えば、図22のメモリマップ例に示す各モジュールを記憶媒体に格納する。
すなわち、少なくとも「生成モジュール」、「算出モジュール」、「抽出モジュール」、「判定モジュール」、および「出力モジュール」の各モジュールのプログラムコードを記憶媒体に格納すればよい。
【0144】
尚、「生成モジュール」は、画像データの濃度の出力頻度の分布を生成する。「算出モジュール」は、生成された分布に基づいて、閾値を算出する。「抽出モジュール」は、生成された分布の最大出力頻度となる濃度を抽出する。「判定モジュール」は、最大出力頻度となる濃度を含み、閾値以上の出力頻度を有する濃度領域を判定する。「出力モジュール」は、濃度領域内の濃度を持つ画像データの濃度を一律に前記最大出力頻度となる濃度で出力する。
【0145】
以上説明したように、本発明の第1の実施の形態〜第3の実施の形態によれば、スキャナ等で読み取った原稿画像の画像データの下地に発生するノイズを好適に除去することができ、画像データによる出力画像の画質を向上する画像処理装置及びその方法を提供できる。
また、画像データの下地に発生するノイズを好適に除去することで、画像データを属性毎の領域に分離する像域分離処理の精度を向上する画像処理装置及びその方法を提供できる。
【0146】
また、画像データの下地に発生するノイズを好適に除去し、ノイズを除去した画像データから好適な下地の濃度を判定し、その判定された濃度を下地の濃度として出力することで、画像データの符号化効率を向上することができる画像処理装置及びその方法を提供できる。
<第4の実施の形態>
図23は第4の実施の形態の画像処理装置の構成を示すブロック図である。
【0147】
図1において、401は原稿画像を入力する画像入力部であり、イメージスキャナ等で構成される。ここでは入力する原稿画像を白黒の多値画像(8ビット/画素)として説明を行う。402は画像入力部401より得られる原稿画像の画像データを記憶しておくフレームメモリである。
403は読み込まれた画像データ(8ビット/画素の多値画像データ)の画素値のヒストグラムを作成するヒストグラム生成部である。
【0148】
尚、ヒストグラム生成部403は、256個のカウンタで構成され、各カウンタは読み込まれる画像データ(8ビット/画素の多値画像データ)の画素値に対応しており、1画素の画像データの入力に対しその画素値に対応するカウンタに1が加えられる。
404はヒストグラムから、出現頻度の最大値とその最大値を持つ画素値を出力する最大頻度検出部である。
【0149】
405はヒストグラム生成部403で生成されたヒストグラムの頻度上のノイズを除去するための所定の閾値Th1と最大頻度検出部404で検出された最大値に基づいて、下地を構成する濃度の幅を求める下地濃度幅検出部である。406は下地濃度幅検出部405から出力される下地を構成する濃度の幅基づいてフレームメモリ402の画像データを好適に量子化するのに必要な量子化数と後述する前景色代表濃度を判定する量子化数判定部である。
【0150】
407は最大頻度検出部404で検出された下地の濃度(最大値)を外部装置に出力する端子である。408は原稿画像を表現するのに必要な量子化数と後述する前景色代表濃度を外部装置に出力する端子である。409はフレームメモリ402の内容を外部装置に出力する端子である。413はヒストグラム生成部403の内容を外部装置に出力する端子である。
【0151】
410はCPUであり、各装置構成要素を制御する。411はROMであり、装置の制御に必要なプログラムを格納する。412はRAMであり、プログラムを動作させるのに必要なメモリ領域を確保する。
次に、図23を用いて、画像処理装置において実行される処理について説明する。
【0152】
まず、処理に先立ち、CPU410はフレームメモリ402と、ヒストグラム生成部403のカウンタの内容を0にクリアする。
続いて、CPU410はユーザの指示に従って、画像入力部401から白黒多値画像(8ビット/画素)である原稿画像を読み込み、その画像データをフレームメモリ402に格納する。原稿画像分の画像データがフレームメモリ402に格納された後、CPU410は、フレームメモリ402から画像データを読み出し、ヒストグラム生成部403に入力する。ヒストグラム生成部403の256個のカウンタは、入力される画像データの画素値に対応しており、1画素の画像データの入力に対してその画素値に対応するカウンタの内容に1を加える。
【0153】
入力された画像データの全ての画素によってヒストグラムが生成されたら、CPU410は最大頻度検出部404を動作させ、ヒストグラムの中で出現頻度が最大値を持つ画素値を検出する(つまり、カウンタの値が最大となる画素値)。そして、その検出される出現頻度の最大値mと、対応する画素値を出力する。また、この対応する画素値は下地の濃度を示すので、この濃度を下地代表濃度bと呼ぶ。この下地代表濃度bは端子407から出力される。
【0154】
下地濃度幅検出部405は、最大頻度検出部404から下地代表濃度bと所定の閾値Th1とヒストグラム生成部403で生成されたヒストグラムから、下地を構成する画素の濃度の幅を算出する。この幅は、下地代表濃度bを中心として最近傍の画素値において、出現頻度が所定の閾値Th1になっている画素値を検出する。図24を用いて、その検出する過程を示す。尚、図24には、ある原稿画像の画像データが持つ画素値とその出現頻度の関係を示しており、横軸に画素値、縦軸に出現頻度で表している。
【0155】
まず、下地代表濃度bから画素値の低い方へ出現頻度の検査を行い、出現頻度が所定の閾値Th1になった時の画素値bt0を求める。この画素値が濃度幅の下限値となるので濃度幅下限値と呼ぶ。同様に、画素値の高い方へ出現頻度の検査を行い、出現頻度が所定の閾値Th1になった時の画素値bt1を求める。この画素値が濃度幅の上限値となるので濃度幅上限値と呼ぶ。
【0156】
ここで、下地濃度幅検出部405の詳細な構成について、図25を用いて説明する。
図25は第4の実施の形態の下地濃度検出部405の詳細な構成を示すブロック図である。
図25において、426は端子であり、最大頻度検出部404から下地代表濃度bを入力する。420はラッチであり、下地代表濃度bを保持する。421はカウンタであり、CPU410の指示に従ってカウンタ421の内容をカウントアップするカウントアップモード、あるいはカウンタ421の内容をカウントダウンするカウントダウンモードのいずれかが選択され、選択されたモードに応じてその内容を増減する。428は端子であり、カウンタ421の内容をヒストグラム生成部403に出力し、出力された値に対応するヒストグラム生成部403で生成されたヒストグラムの画素値の出現頻度値を読み出す。
【0157】
427は端子であり、カウンタ421より出力された値に対応するヒストグラム生成部403で生成されたヒストグラムの画素値の出現頻度値を読み込む。422は比較部であり、端子427から読み込まれた出現頻度値と所定の閾値Th1とを比較する。そして、読み込まれた出現頻度値が所定の閾値Th1より大きい場合は「0」を出力し、所定の閾値Th1より小さい場合は「1」を出力する。423はセレクタであり、比較部422から「1」が出力された場合に、CPU410がカウンタ421に指示しているモードに応じて、カウンタ421の内容をラッチ424、ラッチ425のいずれかに保持する。424、425はラッチであり、セレクタ423からの出力を保持する。429、430は端子であり、それぞれがラッチ424、425の出力を外部に出力する。
【0158】
尚、所定の閾値Th1はヒストグラムに発生する頻度上のノイズを除去するための閾値である。
次に図25を用いて、下地濃度幅検出部405で実行される処理について説明する。
CPU410は、端子426を介して下地代表濃度bを読み込み、ラッチ420に保持する。そして、比較部422を0にリセットし、カウンタ421にラッチ420の下地代表濃度bから1を引いた画素値に対応する値をセットし、カウントダウンモードにセットする。
【0159】
カウントダウンモードをセットすると、カウンタ421より、その内容を端子428からヒストグラム生成部403に入力し、入力した値に対応するヒストグラムの画素値の出現頻度値をヒストグラム生成部403より読み出す。そして、読み出した出現頻度値を端子427から比較部422に入力する。比較部422は入力された出現頻度値と閾値Th1を比較し、閾値Th1よりも出現頻度値が大きい場合は「0」を出力し、閾値Th1よりも出現頻度値が小さい場合は「1」を出力する。
【0160】
尚、カウンタ421は、比較部422より「0」が出力される毎に、その内容を1デクリメントし、デクリメントされた値に対応するヒストグラムの画素値の出現頻度値をヒストグラム生成部403より読み出す。そして、出現頻度値を読み出す毎に、比較部422は読み出した出現頻度値と閾値Th1を比較する。
セレクタ423は、比較部422から「1」が出力された時点で、カウンタ421の内容をラッチ425に格納すると同時に、カウンタ421のカウントダウンモードによるカウントダウンを終了する。
【0161】
カウンタ421のカウントダウンが終了すると、CPU410は、比較部422を0にリセットし、カウンタ421にラッチ420の下地代表濃度bから1を足した画素値に対応する値をセットし、カウントアップモードにセットする。
カウントアップモードをセットすると、カウンタ421より、その内容を端子428からヒストグラム生成部403に入力し、入力した値に対応するヒストグラムの画素値の出現頻度値をヒストグラム生成部403より読み出す。そして、読み出した出現頻度値を端子427から比較部422に入力する。比較部422は入力された出現頻度値と閾値Th1を比較し、閾値Th1よりも出現頻度値が大きい場合は「0」を出力し、閾値Th1よりも出現頻度値が小さい場合は「1」を出力する。
【0162】
尚、カウンタ421は、比較部422より「0」が出力される毎に、その内容を1インクリメントし、インクリメントされた値に対応するヒストグラムの画素値の出現頻度値をヒストグラム生成部403より読み出す。そして、出現頻度値を読み出す毎に、比較部422は読み出した出現頻度値と閾値Th1を比較する。
【0163】
セレクタ423は、比較部422から「1」が出力された時点で、カウンタ421の内容をラッチ424に格納すると同時に、カウンタ421のカウントアップモードによるカウントアップを終了する。
以上のようにして、ラッチ424とラッチ425に保持される値が、それぞれ濃度幅上限値bt1と濃度幅下限値bt0である。そして、濃度幅上限値bt1と濃度幅下限値bt0をそれぞれ端子429、430を介して量子化数判定部406へ出力する。
【0164】
再び、図23の説明に戻る。
下地濃度幅検出部405で、濃度幅上限値bt1と濃度幅下限値bt0が検出されると、量子化数判定部406は、下地濃度幅検出部405で検出された濃度幅下限値bt0と濃度幅上限値bt1と、フレームメモリ402に格納される画像データの画素値を入力し、画像データを好適に量子化するための量子化数と前景色代表濃度を判定する。
【0165】
ここで、量子化数判定部406の詳細な構成について、図26を用いて説明する。
図26は第4の実施の形態の量子化数判定部406の詳細な構成を示すブロック図である。
441は比較部であり、端子449から入力される濃度幅上限値bt1と端子451から入力される画素値を比較する。そして、画素値が濃度幅上限値bt1よりも大きい場合は「0」を、小さい場合は「1」を出力する。442は比較部であり、端子450から入力される濃度幅下限値bt0と端子451から入力される画素値を比較する。そして、画素値が濃度幅下限値bt0よりも大きい場合は「1」を、小さい場合は「0」を出力する。443は比較部441と比較部442から出力される値の非論理積を算出するNAND回路である。444はラッチであり、端子451から入力される画素値をラッチする。また、NAND回路443が「1」を出力したときのみ、ラッチしている画素値を出力する。
【0166】
445は256個のカウンタで構成され、ラッチ444から出力される画素値の出現頻度のヒストグラムを生成するヒストグラム生成部である。446はヒストグラム生成部445で生成されたヒストグラムから、出現頻度の極大値とその極大値を持つ画素値を検出する極大値検出部である。447は極大値検出部446で検出された極大値の数を計数するカウンタである。448は極大値を持つ画素値を格納するメモリである。449は端子であり、図25の端子429を介して濃度幅上限値bt1を読み込む。450は端子であり、図25の端子430を介して濃度幅下限値bt0を読み込む。451は端子であり、フレームメモリ402に格納される画像データの画素値を読み込む。452はカウンタ447の内容を、453はメモリ448の内容を出力する端子である。
【0167】
次に図26を用いて、量子化数判定部406で実行される処理について説明する。
CPU410は、端子449から濃度幅上限値bt1を、端子450から濃度幅下限値bt0を読み込む。続いてフレームメモリ402から格納順に画像データの画素値を読み込み、比較部441、比較部442、ラッチ444に入力する。
【0168】
比較部441は、入力画素値と濃度幅上限値bt1、比較部442は入力画素値と濃度幅下限値bt0とを比較する。比較部441、比較部442のそれぞれの比較結果はNAND回路443に入力し、非論理積を算出する。上述の説明により、入力画素値が濃度幅上限値bt1と濃度幅下限値bt0の間にある場合は、NAND回路443は「0」を出力し、そうでなければ「1」を出力する。ラッチ444はNAND回路443の出力が「1」の場合、入力された画素値をヒストグラム生成部445に出力し、「0」の場合は出力しない。
【0169】
ラッチ444の出力がヒストグラム生成部445に入力されると、ヒストグラム生成部445の256個のカウンタは、入力される画素値に対応しており、その画素値に対応するカウンタの内容に1を加える。
フレームメモリ402に格納される画像データの全ての画素値に基づいて、ヒストグラム生成部445でヒストグラムが生成された後、CPU410は極大値検出部446を起動するとともにカウンタ447の内容を0にリセットする。続いて、ヒストグラム生成部445の256個のカウンタにおいて、各画素値の出現頻度を示すカウンタの内容を画素値の低い方から順に読み出し、出現頻度が極大値を持つ画素値を検出する。
【0170】
例えば、ヒストグラム445で生成されるヒストグラムが図27に示すようなものであるとすると、出現頻度が極大値を持つ画素値は、図において、矢印が示す位置の画素値が出現頻度の極大値を持つ画素値となる。そして、出現頻度の極大値が検出されたら、カウンタ447の内容を1インクリメントし、その極大値を持つ画素値をメモリ448に順に格納する。この場合、極大値の数は4つであり、カウンタ447の内容は4が格納されることになる。
【0171】
メモリ448に、格納された極大値を持つ画素値は、原稿画像を構成する背景(下地)以外の画像の濃度の代表を表わすものであり、これらを前景色代表濃度と呼ぶ。また、カウンタ447の内容に1を加えたものが画像を表現するのに必要な量子化数n(nは正の整数)であり、前景色代表濃度とともに端子452、端子453を介して端子408から外部装置に出力される。
【0172】
以上のようにして、原稿画像の下地代表濃度bと画像データを好適に量子化する量子化数nと前景色代表濃度が出力される。
次に第4の実施の形態で実行される処理について、図28のフローチャートを用いて説明する。
図28は第4の実施の形態で実行される処理の処理フローを示すフローチャートである。
【0173】
まず、処理に先立ち、CPU410はフレームメモリ402と、ヒストグラム生成部403のカウンタの内容を0にクリアする。
ステップS601で、続いて、CPU410はユーザの指示に従って、画像入力部401から白黒多値画像(8ビット/画素)である原稿画像を読み込み、その画像データをフレームメモリ402に格納する。ステップS602で、原稿画像分の画像データがフレームメモリ402に格納された後、CPU410は、フレームメモリ402から画像データを読み出し、ヒストグラム生成部403に入力し、入力された画像データの全ての画素によってヒストグラムを生成する。
ステップS603で、CPU410は最大頻度検出部404を動作させ、ヒストグラムの中で出現頻度が最大値を持つ画素値を下地代表濃度bとして抽出する。更に、下地濃度幅検出部405で、最大頻度検出部404から下地代表濃度bと所定の閾値Th1とヒストグラム生成部403で生成されたヒストグラムから、下地を構成する画素の濃度の幅として濃度幅下限値bt0と濃度幅上限値bt1を抽出する。
【0174】
ステップS604で、量子化数判定部406は、下地代表濃度以外の出現頻度の極大値を持つ画素値を前景色代表濃度としてヒストグラムより抽出する。ステップS605で、抽出された前景色代表濃度に基づいて、画像データを量子化するための量子化数を判定する。
次に第4の実施の形態で説明される画像処理装置の適用例を説明する。例えば、図29に示されるような画像送信装置に適用させた場合に、実行される動作とその構成を説明する。
【0175】
図29は第4の実施の形態の画像処理装置を適用させた画像送信装置の構成を示すブロック図である。
図29において、460は第4の実施の形態の図23に示される画像処理装置である。461は図23の端子407から出力された下地代表濃度bと端子408から出力された量子化数nと各前景色代表濃度とヒストグラムを入力し、画像データを量子化するための閾値を決定する閾値決定部である。462は閾値決定部461から出力される閾値にしたがって、端子409から出力された画像データを量子化する量子化部である。
【0176】
463はフレームメモリであり、量子化部462で量子化された画像データを格納する。例えば、量子化数がnであるとすると、n値化された画像データをn枚のビットプレーンで格納する。464はフレームメモリ463に格納された量子化された画像データを2値の符号化であるJBIG符号化を行うJBIG符号化部である。465は通信プロトコルに合わせて、JBIG符号化部464で生成されたJBIG符号化データを送信する通信インタフェースである。466は電話回線やLANで構成される通信回線である。
【0177】
次に図29で実行される処理の概要を説明する。
閾値決定部461は、画像処理装置460のカウンタ447とメモリ448から量子化数nと各前景色代表濃度を端子408を介して読み込み、ヒストグラムを端子413を介して読み込み、各前景色代表濃度に基づいて、量子化するための閾値を決定する。図30を用いて、その閾値を決定する過程を示す。まず、図24のヒストグラムに対し、図30に示すような前景色代表濃度f1〜f4が決定されたとする。そして、各前景色代表濃度を中心として形成される出現頻度の山の両側に存在する出現頻度の曲線の傾きが0となる出現頻度を持つ画素値を閾値として決定する。この場合、図のr1〜r4が量子化するための閾値として決定される。
【0178】
続いて、量子化部462は、閾値決定部461で決定された閾値を用いて、フレームメモリ402に格納される画像データの画素値を量子化する。例えば、図30に示した閾値r1〜r4場合、閾値r1未満の画素値を持つ画像データは「0」に、閾値r1以上閾値r2未満の画素値を持つ画像データは「1」に、閾値r2以上閾値r3未満の画素値を持つ画像データは「2」に、閾値r3以上閾値r4未満の画素値を持つ画像データは「3」に、閾値r4以上の画素値を持つ画像データは「4」に量子化する。そして、量子化部462によって得られる量子化結果はフレームメモリ463に格納される。
【0179】
フレームメモリ402内に格納される画像データについて量子化が終了したら、端子408から出力される量子化数nを通信インタフェース465を介して通信回線466に出力する。続いて、画素値の小さい方から下地代表濃度bと前景色代表濃度(この場合はf1〜4)を通信インタフェース465を介して通信回線466に出力する。更に、JBIG符号化部464によって、フレームメモリ463に格納されている量子化された画像データの画素値に対し、ビットプレーン毎にJBIG符号化を施し、通信インタフェース465を介して通信回線466に出力する。フレームメモリ402の全ての画像データを符号化し、送信を終えたら全ての動作を終了する。
【0180】
以上説明したように、第4の実施の形態によれば、画像データの画素値の出現頻度のヒストグラムに基づいて、下地代表濃度bと下地の濃度幅上限値bt1と濃度幅下限値bt0を抽出し、濃度幅上限値bt1と濃度幅下限値bt0の範囲内に含まれる画素値をすべて下地代表濃度bとして出力することで、一定した好適な下地の濃度を出力することができる。
【0181】
また、下地代表濃度bを示す極大値以外にヒストグラムに存在する出現頻度の極大値を持つ画素値を含む閾値Th1以上の出現頻度を持つ画素値群を、下地以外に原稿画像に存在する画像として判定する。そして、その判定された画像を表現する所定範囲の画素値群を一律にその所定範囲内の出現頻度の極大値を持つ画素値(前景色代表濃度)で出力することで、一定した好適な画素値で画像を出力することができる。
【0182】
更に、その判定された画像を表現する前景色代表濃度を含む所定範囲の画素値群の範囲とその個数に基づいて、原稿画像を量子化するための量子化数と閾値を判定するため、原稿画像を好適に量子化する量子化数を決定することができる。
また、白黒画像に対して、高速で比較的小さい回路規模で好適な量子化数の判定が可能になり、下地のノイズに影響されることなく、文字等の前景色を効率良く抽出できる。また、符号化に適用した場合、下地のノイズによる影響を取り除き、下地を一定濃度にすることができるので、符号化効率を向上させると同時に、必要最低限に量子化して送るので少ないプレーン数で符号化でき、効率的である。
【0183】
<第5の実施の形態>
第4の実施の形態では、白黒多値画像の原稿画像の下地の濃度幅と好適な下地濃度を判定し、かつ原稿画像を量子化するための好適な量子化数を判定する画像処理装置について説明した。第5の実施の形態では、カラー多値画像の原稿画像の下地の濃度幅と好適な下地濃度を判定し、かつ原稿画像を量子化するための好適な量子化数を判定する画像処理装置について説明する。
【0184】
図31は第5の実施の形態の画像処理装置の構成を示すブロック図である。
図31において、501は原稿画像を入力する画像入力部であり、カラーイメージスキャナ等で構成される。ここでは入力する原稿画像をカラー多値画像とし、RGB各色ごとに1画素あたり8ビットの精度を持つ画像データとして説明を行う。502は原稿画像をCIE1976L***画像データ(各成文8ビット)に変換する色変換部である。503は色変換部502より得られる原稿画像のL***画像データを記憶しておくフレームメモリである。
【0185】
504はCIE1976L***画像データの輝度を表わすL*画像データから入力画素が、平坦画素であるか否かを判定する平坦画素判定部である。505はラッチであり、制御信号によってその内容の出力するか否かを決定する。
506〜508は読み込まれたL*、a*、b*画像データの画素値のヒストグラムを作成するヒストグラム生成部である。
【0186】
尚、各ヒストグラム生成部506〜508は、256個のカウンタで構成され、各カウンタは読み込まれる画像データの画素値に対応しており、1画素の画像データの入力に対してその画素値に対応するカウンタに1が加えられる。
ヒストグラム生成部506はL*画像データ、ヒストグラム生成部507はa*画像データ、ヒストグラム生成部508はb*画像データのヒストグラムを生成する。
【0187】
509はL*画像データのヒストグラムから下地を構成する画素のL*画像データの下地表示濃度bLと濃度幅下限値btL0と濃度幅上限値btL1を決定する下地濃度判定部である。510はa*画像データのヒストグラムから下地を構成する画素のa*画像データの下地代表濃度baと濃度幅下限値bta0と濃度幅上限値bta1を決定する下地濃度判定部である。511はb*画像データのヒストグラムから下地を構成する画素のb*画像データの下地代表濃度bbと濃度幅下限値btb0と濃度幅上限値btb1を決定する下地濃度判定部である。
【0188】
尚、下地濃度判定部509〜511は、第4の実施の形態の図23に示される最大頻度検出部404と下地濃度幅検出部405より構成されており、その詳細については、第4の実施の形態で説明しているので、ここでは省略する。
512は比較部であり、フレームメモリ503に格納されるL***画像データの画素値を入力し、各L*、a*、b*画像データに対応する濃度幅下限値btL0と濃度幅上限値btL1、濃度幅下限値bta0と濃度幅上限値bta1、濃度幅下限値btb0と濃度幅上限値btb1とを比較し、その比較結果に基づいて、L***画像データを2値化する。513は比較部512で2値化されたL***画像データを格納する2値フレームメモリである。514は像域分離部であり、第3の実施の形態と同様の像域分離処理の方法を用いて、像域分離処理を行う。
【0189】
515は2値フレームメモリ513に格納される2値化されたL***画像データから、フレームメモリ503の画像データを量子化するための量子化数を判定する量子化数判定部である。516は像域分離部514と量子化数判定部515で検出された領域に関する情報を格納する領域情報メモリである。517〜519は各L*、a*、b*画像データの下地代表濃度bL、ba、bbを外部装置に出力する端子である。520は領域情報メモリ516の内容を外部装置に出力する端子である。521はフレームメモリ503の内容を外部装置に出力する端子である。
【0190】
570はCPUであり、各装置構成要素を制御する。571はROMであり、装置の制御に必要なプログラムを格納する。572はRAMであり、プログラムを動作させるのに必要なメモリ領域を確保する。
次に、図31を用いて、画像処理装置において実行される処理について説明する。
【0191】
まず、処理に先立ち、CPU570はフレームメモリ503と、ヒストグラム生成部506〜508のカウンタの内容を0にクリアする。
続いて、CPU570はユーザの指示に従って、画像入力部501からRGBカラー多値画像である原稿画像を読み込み、色変換部502によってL***画像データに変換し、フレームメモリ503に格納する。
【0192】
原稿画像分のL***画像データがフレームメモリ503に格納された後、CPU570は、フレームメモリ503からL***画像データを読み出し、平坦画素判定部504とラッチ505に入力する。
平坦画素判定部504は入力画素とその周囲の画素のL***画像データを入力する。フレームメモリ503上に格納されるL*、a*、b*画像データのそれぞれの座標をL(x,y)、a(x,y)、b(x,y)とした時、L***画像データの各エッジ量eL、ea、ebを前述の(4)式によって算出する。
【0193】
これらのエッジ量eL、ea、ebと閾値Th2を比較し、全てが閾値Th2以下であれば「1」を、そうでなければ「0」を出力する。
【0194】
ラッチ505は平坦画素判定部504からの出力が「0」の時、即ち、いずれかの色成分にエッジが存在する特は、格納されているL*、a*、b*画像データを出力せず、ヒストグラム生成部506〜508は処理を行わない。一方、平坦画素判定部504からの出力が「1」の時、即ち、平坦画素については、格納されているL*、a*、b*画像データを対応するヒストグラム生成部506〜508に出力する。
【0195】
そして、ヒストグラム生成部506ではL*画像データのヒストグラムを作成する。同様に、ヒストグラム生成部507ではa*画像データのヒストグラム、ヒストグラム生成部508ではb*画像データのヒストグラムを生成する。
フレームメモリ503内の全ての画素の平坦画素検出、ヒストグラム処理を終了したら、下地濃度判定部509〜511を起動させる。
【0196】
下地濃度判定部509は、L*画像データのヒストグラムからL*画像データの下地代表濃度bLと濃度幅下限値btL0と濃度幅上限値btL1を判定する。同様にして、下地濃度判定部510は、a*画像データのヒストグラムからa*画像データの下地代表濃度baと濃度幅下限値bta0と濃度幅上限値bta1を判定する。下地濃度判定部511は、b*画像データのヒストグラムからb*画像データの下地代表濃度bbと濃度幅下限値btb0と濃度幅上限値btb1を判定する。判定された各L*、a*、b*画像データの下地代表濃度bL、下地代表濃度ba、下地代表濃度bbを端子517〜519を介して外部装置に出力する。更に、判定された各L*、a*、b*画像データの濃度幅下限値btL0と濃度幅上限値btL1、濃度幅下限値bta0と濃度幅上限値bta1、濃度幅下限値btb0と濃度幅上限値btb1を比較部512に出力する。
【0197】
比較部512は、比較部512より入力された各L*、a*、b*画像データの濃度幅下限値、濃度幅上限値に対し、フレームメモリ503に格納される各L*、a*、b*画像データであるpL、pa、pbとを比較する。そして、濃度幅下限値btL0<pL<濃度幅上限値btL1、かつ濃度幅下限値bta0<pa<濃度幅上限値bta1、かつ濃度幅下限値btb0<pb<濃度幅上限値btb1を満たす場合は「0」を出力し、そうでなければ「1」を出力する。この比較によって、L***画像データが2値化される。2値化されたL***画像データは2値フレームメモリ513に格納される。
【0198】
フレームメモリ503のすべてのL***画像データについて、比較部512による比較処理が終了し、2値化されたL***画像データが2値フレームメモリ513に格納された後、CPU570は像域分離部514を起動する。
像域分離部514は2値フレームメモリ513から読み込んだ2値化されたL***画像データを領域分割し、分割された領域の属性を像域分離処理によって判定する。判定された領域の属性や各領域の位置等を示す情報は領域情報メモリ516に格納する。
【0199】
像域分離処理が終了し、領域情報メモリ516にL***画像データに含まれる全ての領域の属性と情報が格納されたら、CPU570は量子化数判定部515を起動する。そして、領域情報メモリ516に格納されている各領域の属性と情報に基づいて、各領域に対応するL***画像データをフレームメモリ503から順に、量子化数判定部515に入力し、各領域を量子化するための量子化数を判定する。
【0200】
ここで、量子化数判定部515の詳細な構成について、図32を用いて説明する。
図32は第5の実施の形態の量子化数判定部515の詳細な構成を示すブロック図である。
556は端子であり、領域情報メモリ516に格納されている各領域の属性と情報に基づいて、各領域に対応するL***画像データをフレームメモリ503から順に読み込む。555は端子であり、フレームメモリ503から読み込まれるL***画像データに同期して、2値フレームメモリ513から対応するする2値化されたL***画像データを読み込む。541〜543はラッチであり、端子555から入力される2値化されたL***画像データを制御信号として、制御信号が「1」の場合は保持されている内容を出力し、「0」である場合は何も出力しない。尚、ラッチ541はL*画像データ、ラッチ542はa*画像データ、ラッチ543はb*画像データを保持する。
【0201】
544〜546は読み込まれたL*、a*、b*画像データの画素値のヒストグラムを作成するヒストグラム生成部である。
尚、各ラッチ544〜546は、256個のカウンタで構成され、各カウンタは読み込まれる画像データの画素値に対応しており、1画素の画像データの入力に対してその画素値に対応するカウンタに1が加えられる。
【0202】
ラッチ544はL*画像データ、ラッチ545はa*画像データ、ラッチ546はb*画像データのヒストグラムを生成する。
547〜549は各ラッチ544〜546で生成されたヒストグラムを平滑化するヒストグラム平滑化部である。550〜552はヒストグラム平滑化部547〜549で平滑化されたヒストグラムで極大値をとる出現頻度の画素値を検出する極大値検出部。
【0203】
553は各極大値検出部550〜552で検出された極大値をとる出現頻度の画素値から、領域内を構成する可能性のある色の組み合せを抽出する代表色抽出部である。554は代表色抽出部553で抽出された色の組み合わせに基づいて、実際に領域内に存在する色を判定する代表色判定部である。また、色を判定するために、代表色抽出部553で抽出された色の組み合わせから得られる色差が最小となる色の出現頻度をカウントするカウンタが設けられている。557は領域内に存在する色の数と色のデータを外部装置に出力する端子である。
【0204】
次に図32を用いて、量子化数判定部515で実行される処理について説明する。
CPU570は、領域情報メモリ516に格納される各領域の属性と情報にしたがって、端子556よりフレームメモリ503から領域に対応するL***画像データ、端子555より2値フレームメモリ513から領域に対応する2値されたL***画像データを読み込む。端子556より読み込まれた各L*、a*、b*画像データは、それぞれラッチ541〜543に保持される。
【0205】
端子555より読み込まれた2値化されたL***画像データが「1」の場合、ラッチ541〜543はその内容を後段のラッチ544〜546にそれぞれ出力する。一方、「0」の場合、何も出力されず、ラッチ544〜546では、そのL***画像データに対応するL***画像データの処理は行わない。
ラッチ544〜546では、各L*、a*、b*画像データから各画像データのヒストグラムを生成する。256個のカウンタは、入力される画像データの画素値に対応しており、その画素値に対応するカウンタの内容に1を加える。
【0206】
入力された画像データの全ての画素によってヒストグラムが生成されたら、CPU570はヒストグラム平滑部547〜549を起動させる。ヒストグラム平滑部547〜549では、各ラッチ544〜546で生成された各L*、a*、b*画像データのヒストグラムの各画素値の出現頻度値hist[i](i=0〜255)と、あらかじめ設定された平滑化幅swから、(8)式を用いて出現頻度値hist[i]を平滑化し、平滑化された出現頻度値hist_sm[i](i=0〜255)らなる各L*、a*、b*画像データヒストグラムを生成する。
【0207】
【数1】
…(8)
極大値検出部550〜552はそれぞれ、ヒストグラム平滑部547〜549で、平滑化された出現頻度値hist_sm[i]からなる各L*、a*、b*画像データのヒストグラムから、第4の実施の形態の図26の極大値算出部446と同様の方法で、各L*、a*、b*画像データの出現頻度の極大値を持つ画素値を検出する。そして、検出された各L*、a*、b*画像データの出現頻度の極大値を持つ画素値は代表色抽出部553に入力される。
【0208】
代表色抽出部553では、各L*、a*、b*画像データから各L*、a*、b*画像データの出現頻度の極大値の数、極大値を持つ画素値をそれぞれ格納する。L*画像データの極大値の数をmL、各極大値をf1[i](i=1〜mL)、a*画像データの極大値の数をma、各極大値をfa[i](i=1〜ma)、b*画像データの極大値の数をmb、各極大値をfb[i](i=1〜mb)とした場合に、領域内に存在する可能性があると考えられる色のデータ数mcは、
mc=mL×ma×mb …(9)
で表わされる。この(9)式によって表される全ての色の組み合わせを抽出し、データ数mcとともに、代表色判定部554へ出力する。
【0209】
色の組み合わせが抽出されたら、CPU570は、代表色判定部554の色の組み合わせの出現頻度をカウントするカウンタを0にリセットする。そして、再度、領域情報メモリ516に格納される領域の属性と情報にしたがって、フレームメモリ503から領域に対応するL***画像データを代表色判定部554に読み込む。読み込まれたL***画像データは、代表色抽出部553で抽出された色の組み合わせの色差を判定し、色差が最小となる色に対応するカウンタの内容を1インクリメントする。
【0210】
フレームメモリ503に格納されるL***画像データのすべての画素値について、代表色抽出部553で抽出された色の組み合わせの色差の判定と、色差が最小となる色のカウントが終了したら、各色のカウンタの内容と閾値Th3を比較する。そして、閾値Th3以上となる色に関しては、その色が領域内の画像を表現するのに不可欠な色であるため、これらの色の数をカウントし、そのカウントされた数を画像を量子化するための量子化数nとする。また、閾値Th3以上となる色を前景色代表色とし、量子化数nともに端子557から外部に出力する。これらの量子化数nと前景色代表色は、対応する領域の属性と情報ともに領域情報メモリ516に格納される。
【0211】
以上のようにして、各L*、a*、b*画像データの下地代表濃度bL、下地代表濃度ba、下地代表濃度bbとL***画像データを好適に量子化する量子化数nと前景色代表色が出力される。
次に第5の実施の形態で実行される処理について、図33のフローチャートを用いて説明する。
【0212】
図33は第5の実施の形態で実行される処理の処理フローを示すフローチャートである。
まず、処理に先立ち、CPU570はフレームメモリ503と、ヒストグラム生成部506〜508のカウンタの内容を0にクリアする。
ステップS1101で、続いて、CPU570はユーザの指示に従って、画像入力部501からカラー多値画像である原稿画像を読み込み、そのL***画像データをフレームメモリ503に格納する。ステップS1102で、原稿画像分のL***画像データがフレームメモリ503に格納された後、CPU570は、フレームメモリ503からL***画像データを読み出し、各L*、a*、b*画像データをそれぞれヒストグラム生成部506〜508に入力し、入力された各L*、a*、b*画像データの全ての画素によってヒストグラムを生成する。
【0213】
ステップS1103で、CPU570は各下地濃度判定部509〜511を動作させ、各L*、a*、b*画像データのヒストグラムの中で出現頻度が最大値を持つ画素値を下地代表濃度bL、下地代表濃度ba、下地代表濃度bbとして抽出する。更に、各下地代表濃度bL、下地代表濃度ba、下地代表濃度bbと所定の閾値Th1と各ヒストグラム生成部506〜508で生成されたヒストグラムから、各L*、a*、b*画像データの下地を構成する画素の濃度の幅として濃度幅下限値btL0と濃度幅上限値btL1、濃度幅下限値bta0と濃度幅上限値bta1、濃度幅下限値btb0と濃度幅上限値btb1を抽出する。
【0214】
ステップS1104で、フレームメモリ503のすべてのL***画像データについて、2値化し、2値化されたL***画像データが2値フレームメモリ513に格納された後、CPU570は像域分離部514を起動する。像域分離部514は、2値フレームメモリ513から読み込んだ2値化されたL***画像データを領域分割し、分割された領域の属性を像域分離処理によって判定する。判定された領域の属性や各領域の位置等を示す情報は領域情報メモリ516に格納する。
【0215】
ステップS1105で、量子化数判定部515は、各L*、a*、b*画像データのヒストグラムにおいて、下地代表濃度以外の出現頻度の極大値を持つ画素値に基づいて、前景色代表色を抽出する。ステップS1106で、抽出された前景色代表色に基づいて、画像データを量子化するための量子化数を判定する。
尚、第5の実施の形態では、図32の代表色判定部554の領域内に存在する前景代表色の抽出において、色の頻度(L***画像データ)の比較に基づいて前景代表色の抽出を行ったが、これに限定されない。例えば、代表色抽出部553で抽出された色の組み合わせを初期ベクトルとし、フレームメモリ503からL***画像データを読み込む。そして、ベクトル量子化のベクトルを決定するのに一般的な手法であるLBG法を用いて最適なベクトルを算出する。更に、各ベクトルが表わすL***画像データ間で色差を判定し、視覚的に差が目立たない色差のものを統合することで前景代表色を抽出してももちろん構わない。
【0216】
更に、第5の実施の形態では、図32の色変換部502でL***に変換して代表色濃度、量子化数n、前景色代表色を得たが、他に輝度色度を表すYCbCrなどの画像データに変換しても構わない。また、処理を簡略化するために、色変換部502を省略して、RGBカラー画像データのまま行っても構わない。このときのブロック図を図34に示す。尚、図31と同じ番号を付したものはまったく同じ動作を行う。フレームメモリ503はRGB画像データを格納し、ヒストグラム生成部506と下地濃度判定部509はR画像データを、ヒストグラム生成部507と下地濃度判定部510はG画像データを、ヒストグラム生成部508と下地濃度判定部511はB画像データの処理を行う。
【0217】
また、処理を簡略化するために、L*画像データのみを像域分離に用いても構わない。このときのブロック図を図35に示す。尚、図31と同じ番号を付したものはまったく同じ動作を行う。530は平坦画素判定部であり、フレームメモリ503からL*画像データを読み込み、(4)式のエッジ量eLを求め、閾値Th2と比較を行い、0または1を出力する。531と532は最大頻度検出部であり、図23の最大頻度検出部404と同じ構成で同様に動作する。533は比較部であり、下地判定部509から濃度幅下限値btL0と濃度幅上限値btL1を、フレームメモリ503からL*画像データを入力する。
【0218】
***画像データが入力順にフレームメモリ503から読み出され、ラッチ505に入力されると同時に、L*画像データが平坦画素判定部530に入力され、エッジ量eLにしたがって0または1を出力する。
ヒストグラム生成部506〜508でヒストグラムの生成が終了したら、下地濃度判定部509と最大頻度検出部530、531を起動させ、下地濃度判定部509ではL*画像データの下地代表濃度bL、濃度幅下限値btL0、濃度幅上限値btL1を算出し、最大頻度検出部531、132はa*、b*画像データの下地代表濃度ba、bbをそれぞれ算出する。
【0219】
比較部532は濃度幅下限値btL0、濃度幅上限値btL1を入力し、更に、フレームメモリ503からL*画像データを読み込み、入力されたL*画像データが濃度幅下限値btL0と濃度幅上限値btL1の間の値であれば「0」をそうでなければ「1」を出力する。この2値結果を2値フレームメモリ513に格納し、像域分離処理を行い、領域情報を領域情報メモリ516に入力する。更に、フレームメモリ503からL***画像データを読み込み、量子化数判定部515で量子化数n、前景色代表色を算出する。
【0220】
次に第5の実施の形態で説明される画像処理装置の適用例を説明する。例えば、図36に示されるような光学的文字認識装置に適用させた場合に、実行される動作とその構成を説明する。
図36は第5の実施の形態の画像処理装置を適用させた光学的文字認識装置の構成を示すブロック図である。
【0221】
図36において、560は第5の実施の形態の図31に示される画像処理装置である。561は図31の端子517〜519から出力された各L*、a*、b*画像データの下地代表濃度bL、ba、bbと端子520から出力された領域情報と量子化数nと各前景色代表色を入力し、端子521から出力されたフレームメモリ503から出力されたL***画像データを量子化する量子化部である。
【0222】
562はフレームメモリであり、量子化部561で量子化されたL***画像データを格納する。例えば、量子化数がnであるとすると、n値化されたL***画像データをn枚のビットプレーンで格納する。563はフレームメモリ562に格納される各ビットプレーン画像を読み込み、読み込んだ画像に含まれる文字を認識し、対応する文字情報を文字のコードとして出力するOCR部である。
【0223】
564はOCR部563が出力した文字コードを格納すると同時に、L***画像データに存在する領域の属性と情報から文字の並びを調整し、色文字である文字については、文字コードのほかに色コードも付加する文字情報合成部である。565はL***画像データに存在する領域毎に文字コードと色コードを記憶する記憶装置である。
【0224】
次に図36で実行される処理の概要を説明する。
画像処理装置160で、L***画像データに存在する領域の属性と情報の抽出、各領域の量子化数nと前景色代表色の抽出が終了したら、CPU570は抽出された領域でその属性が「文字」である領域について、対応するL***画像データの画素値を端子521から、領域の情報を端子520から、各L***画像データの下地代表濃度bL、ba、bbを端子517〜519から読み出し、量子化部561に入力する。
【0225】
尚、ここで、フレームメモリ562に格納されるn枚のビットプレーン画像の内容を「0」にクリアしておく。また、量子化部561は、下地代表濃度bL、ba、bbで表わされる色を0番、領域情報の前景色代表色を1番からn番まで割り振っておく。そして、この1番からn番は、フレームメモリ562に格納されるn枚のビットプレーン画像に1対1で対応している。
【0226】
続いて、領域に対応するL***画像データの画素値より、L***画像データと下地の色、前景色代表色との間で色差を抽出し、最も色差の小さかった色を検出し、検出された色に対応する割り振られた番号を判定する。判定された番号が0以外であれば、その番号が表わすフレームメモリ562のビットプレーン画像に対応する画素を「1」とする。この作業を領域内の全ての画素について行った後に、CPU570はOCR部563を起動させる。
【0227】
OCR部563は、ビットプレーン画像を1番から順に入力し、入力されたビットプレーン画像に存在する文字をOCR処理によって文字コードを生成し、その生成された文字の位置を検出していく。1つのビットプレーン画像が終了したら、その文字コード、位置、ビットプレーン画像の番号を文字情報合成部564に領域毎に格納する。
【0228】
領域情報メモリ516に格納されているすべての領域について、上述の処理が実行され、その処理結果が文字情報合成部564へ格納されたら、CPU570は文字情報合成部564に格納される各領域の位置を示す情報から各領域を読み出す順番を推定する。そして、その推定された順番に従って、各領域に含まれる文字の情報を読み出し、文字の位置を示す情報から文字順を算出する。更に、対応する文字コードと文字の色のコードを正しく並び変えて、記憶装置565の所定の記憶領域に格納する。全ての領域に含まれる文字の情報が記憶装置565へ格納されたら、全ての動作を終了する。
【0229】
以上説明したように、第5の実施の形態によれば、各L*、a*、b*画像データの画素値のヒストグラムに基づいて、各L*、a*、b*画像データの下地代表濃度bL、下地代表濃度ba、下地代表濃度bbと、下地の濃度幅上限値btL1と濃度幅下限値btL0、下地の濃度幅上限値bta1、更には濃度幅下限値bta0、下地の濃度幅上限値btb1と濃度幅下限値btb0を抽出し、各濃度幅上限値と濃度幅下限値の範囲内に含まれる画素値をすべて下地代表濃度として出力することで、一定した好適な下地の濃度を出力することができる。
【0230】
また、各L*、a*、b*画像データの下地代表濃度bL、下地代表濃度ba、下地代表濃度bbを示す極大値以外にヒストグラムに存在する出現頻度の極大値の数に基づいて、下地以外に原稿画像に存在する画像の色の組み合わせを判定する。そして、その判定された画像の色の組み合わせを表現する各色群とL***画像データとの色差を算出し、算出された色差が最小となる色の出現頻度を各画素値毎に計数する。更に、色差が最小となる色の出現頻度の分布に対し、閾値Th3以上となる色(前景色代表色)で出力することで、一定した好適な色の画素値で画像を出力することができる。
【0231】
更に、閾値Th3以上となる色の個数に基づいて、原稿画像を量子化するための量子化数を判定するため、原稿画像を好適に量子化する量子化数を決定することができる。
また、カラー多値画像に対して、高速で比較的小さい回路規模で好適な量子化数の判定が可能になり、下地のノイズに影響されることなく、文字等の前景色を効率良く抽出できる。また、OCRに適用した場合、文字の色を抽出することができるため、色の情報を欠落させることがない。更に、文字情報を検索する際に色で検索したり、色文字を重要な情報とするキーワードとすることで効率的な検索を行うことも可能となる。
【0232】
<第6の実施の形態>
第6の実施の形態では、第4の実施の形態と第5の実施の形態で説明された装置構成によって実行される処理のプログラムを、例えば、ROM等の記憶媒体に記憶させ、そのプログラムを実行することで、本発明で説明される処理を行う。
図37は第6の実施の形態の画像処理装置の構成を示すブロック図である。
【0233】
図37において、1201は後述する第6の実施の形態で説明される処理(図40〜53のフローチャート参照)を実行する実行プログラムによって動作し、装置を構成する各構成要素の制御を行うCPUである。1202はその実行プログラムを格納し、実行プログラムを実行するのに必要な記憶容量を確保するプログラムメモリである。1203はユーザが実行プログラムの実行等の各種指示を入力する端末である。
【0234】
1204は磁気ディスク等で構成される記憶装置である。1205は原稿画像の読み込みを行う白黒スキャナである。ここではカラー多値画像データの原稿画像を読み込むこととする。1206はカラー多値画像データを、原稿画像分格納する多値フレームメモリである。
1207はカラー多値画像データを2値化して得られる2値画像データを、原稿画像分格納する2値フレームメモリである。1208は通信プロトコルに合わせて符号化データを送信する通信インタフェース(通信I/F)である。1209は電話回線やLANで構成される通信回線である。210は装置を構成する各構成要素を接続し、画像データ等の各種データや制御信号を授受するバスである。
【0235】
以下、第6の実施の形態で実行される処理について、図40〜図53のフローチャートを用いて説明する。
尚、第6の実施の形態では、例えば、ユーザの指示によって、原稿画像をスキャナ205より読み込む。そして、読み込んで得られる画像データを2値化し、2値化して得られる2値画像データの領域分割を行う。分割された各領域の属性を像域分離処理によって判定し、判定された属性に基づいて2値画像データに含まれる各領域を量子化するための量子化数を決定する。更に、決定された量子化数に基づいて、各領域の構造化データを生成し、生成された構造化データを記憶装置1204に格納するまでの処理を、例に挙げて説明する。
【0236】
また、構造化データは、各領域の属性に基づいて、領域に対応する2値画像データを好適に符号化した符号化データのことである。また、第6の実施の形態で説明される処理を実行する原稿画像は、例えば、図38の(a)に示されるような原稿画像を用いるものとする。原稿画像に存在する文字は、太字の「灰色」という文字が灰色であり、斜字の「赤文字」という文字が赤色であり、それ以外は黒色の文字から構成されている。
【0237】
まず、図40〜図42のフローチャートを用いて、白黒スキャナ1205にセットされた原稿画像を、端末1203から装置を起動することで、原稿画像の画像データを読み込み、読み込まれた画像データに基づいて、画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出するまでの処理について説明する。
【0238】
図40〜図42は第6の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
図40において、ステップS1001で、CPU1201は白黒スキャナ1205から画像データを読み込み、多値フレームメモリ1206に格納する。次に、ステップS1002で、多値フレームメモリ1206上に展開される画像データの各画素データp(x,y)の画素値をカウントするカウンタを0にリセットする。尚、カウンタは頻度hist_pixel[i](i=0〜255)からなり、例えば、画素値がiの画素データは、頻度hist_pixel[i]にカウントされる。また、各カウンタでカウントされる値は各画素値の出現頻度を示す。
【0239】
ステップS1003で、多値フレームメモリ1206上より画素データp(x,y)の画素値を順次読み込み、すべての画素データp(x,y)の画素値が読み込まれたか否かを判定する。そして、すべての画素データp(x,y)の画素値が読み込まれるまでは、ステップS1004で、順次読み込まれる画素データp(x,y)の画素値に対応する頻度hist_pixel[p(x,y)]の内容を1インクリメントする。
【0240】
そして、各画素データp(x,y)の画素値の読み込みが終了したら、ステップS1006に進む。尚、各画素データp(x,y)の画素値の読み込みが終了すると、頻度hist_pixel[i]に示される各画素値の出現頻度によって、画像データの画素値の出現頻度のヒストグラムが生成される。ステップS1006で、生成されたヒストグラムの各画素値の出現頻度と比較するための変数max_hist、比較の結果に基づいて決定される下地代表濃度bg_value、比較した画素値の数をカウントするループカウンタiの内容を0にリセットする。
【0241】
ステップS1007で、生成されたヒストグラムから各画素値の頻度hist_pixel[i]を読み込み、すべての頻度hist_pixel[i]が読み込まれたか否かを判定する。そして、すべての頻度hist_pixel[i]が読み込まれるまでは、ステップS1008で、順次読み込まれるhist_pixel[i]と変数max_histを比較する。頻度hist_pixel[i]が変数max_histより大きい場合(ステップS1008でYES)、ステップS1009に進む。ステップS1009で、変数max_histに頻度hist_pixel[i]を代入し、下地代表濃度bg_valueにループカウンタiの内容を代入する。一方、頻度hist_pixel[i]が変数max_histより小さい場合(ステップS1008でNO)、ステップS1010に進む。
【0242】
ステップS1010で、ループカウンタiの内容を1インクリメントする。そして、すべての頻度hist_pixel[i]の比較が終了したら、つまり、ループカウンタiの内容が255になったら、ステップS1011に進む。
図39において、ステップS1011で、ヒストグラムを正規化するための量子化ステップmax_hist /100を算出した後に、前述の(6)式に従って、量子化頻度hist_q[i]を算出する。
【0243】
次に、ステップS1012で、読み込まれる量子化頻度hist_q[i]の数をカウントするループカウンタiの内容を0にリセットする。
ステップS1013で、読み込まれる量子化頻度hist_q[i]を順次読み込み、すべての量子化頻度hist_q[i]が読み込まれたか否かを判定する。そして、すべての量子化頻度hist_q[i]が読み込まれるまでは、ステップS1014で、順次読み込まれる量子化頻度hist_q[i]とノイズ閾値noise_thを比較する。量子化頻度hist_q[i]がノイズ閾値noise_thより小さい場合(ステップS1014でNO)、ステップS1015に進む。ステップS1015で、量子化頻度hist_q[i]の内容を0にする。一方、量子化頻度hist_q[i]がノイズ閾値noise_thより大きい場合(ステップS1014でYES)、ステップS1016に進む。尚、ノイズ閾値noise_thは第4の実施の形態で説明される閾値Th1と同様の目的に使うための閾値である。
【0244】
ステップS1016で、ループカウンタiの内容を1インクリメントする。そして、すべての量子化頻度hist_q[i]の比較が終了したら、つまり、ループカウンタiの内容が256になったら、ステップS1017に進む。
ステップS1017で、下地濃度下限値bt0として下地代表濃度bg_valueから1を引いたものを算出する。ステップS1018で、順次、頻度hist_q[bt0]が0であるか否かを判定する。そして、頻度hist_q[bt0]が0になるまで、ステップS1019で、下地濃度下限値bt0から1デクリメントする。
【0245】
そして、頻度hist_q[bt0]が0になったら、ステップS1020で、下地濃度上限値bt1として下地代表濃度bg_valueから1を足したものを算出する。尚、頻度hist_q[bt0]が0になった時の下地濃度下限値bt0が、下地濃度下限値bt0となる。
ステップS1021で、順次、下地濃度上限値bt1の頻度hist_q[bt1]が0であるか否かを判定する。そして、頻度hist_q[bt1]が0になるまで、ステップS1022で、下地濃度上限値bt1から1インクリメントする。そして、頻度hist_q[bt1]が0になったら、処理を終了する。尚、頻度hist_q[bt1]が0になった時の下地濃度上限値bt1が、下地濃度上限値bt1となる。
【0246】
以上、図40〜図42のフローチャートで説明された処理によって、画像データの下地代表濃度bg_value、下地濃度下限値bt0、下地濃度上限値bt1が算出される。また、図38の(a)の原稿画像に上述の処理を適用した場合、図39のようなヒストグラムが得られる。図39において、点線はノイズ閾値noise_thを表わす。ヒストグラムで右端の最も大きな出現頻度を持つ画素値が下地代表濃度bg_valueであり、その山の両端に下地濃度下限値bt0、下地濃度上限値bt1が存在する。
【0247】
続いて、図43のフローチャートを用いて、画像データの像域分離処理を行うために画像データを2値化する処理について説明する。
図43は第6の実施の形態で実行される画像データを2値化する処理の処理フローを示すフローチャートである。
ステップS1101で、多値フレームメモリ1206上に展開される画像データの各画素データp(x,y)を順次読み込む。そして、ステップS1102で、すべての画素データp(x,y)に対し、後述のステップS1103で実行される処理が終了したか否かを判定する。そして、ステップS1103で、すべての画素データp(x,y)に対し、2値画像データb(x,y)に変換する2値化を行う。2値化の方法は、順次読み込まれる画素データp(x,y)の画素値が下地濃度下限値bt0以上でかつ下地濃度上限値bt1未満であるかを判定する。
【0248】
そして、画素データp(x,y)が下地濃度下限値bt0以上でかつ下地濃度上限値bt1未満であれば、ステップS1105で、その画素データp(x,y)の2値画像データb(x,y)を「0」として、2値フレームメモリ1207の対応する領域に書き込む。一方、画素データp(x,y)が下地濃度下限値bt0未満または下地濃度上限値bt1以上であれば、ステップS1104で、その画素データp(x,y)の2値画像データb(x,y)を「1」として、2値フレームメモリ1207の対応する領域に書き込む。
【0249】
多値フレームメモリ1206に上の全ての画素データp(x,y)について、2値化されたら、処理を終了する。
以上、図43のフローチャートで説明された処理によって、2値フレームメモリ1207に、多値フレームメモリ1206上に格納される画像データの各画素データp(x,y)の2値化された2値画像データb(x,y)が格納される。
【0250】
続いて、図44〜図47のフローチャートを用いて、2値フレームメモリ1207上に格納された2値画像データを領域分割し、分割された領域の属性を像域分離処理によって判定する。そして、判定された属性に基づいて多値画像データに含まれる各領域の前景色代表濃度を抽出し、抽出された前景色代表色、前景色代表濃度に基づいて、各領域を量子化するための量子化数を決定する処理について説明する。
【0251】
図44〜図47は第6の実施の形態で実行されるの多値画像データに含まれる各領域を量子化するための量子化数、前景色代表濃度を決定する処理の処理フローを示すフローチャートである。
図44において、ステップS1201で、2値フレームメモリ1207から2値画像データを読み込む。ステップS1202で、読み込まれた2値画像データに対し、類似する属性を持つ領域毎に分割する。そして、分離された領域数をカウンタarea_countでカウントする。また、各領域の位置座標と大きさを求める。ステップS1203で、カウントされた各領域に対して、各領域に含まれる「1」である2値画像データの塊の密度や形状、並びから「画像」、「図形」、「文字」等の領域の属性を判定する像域分離処理を行う。ここでは、上述の第3の実施形態と同様の像域分離処理の方法を用いて、像域分離を行う。尚、図38の(a)の原稿画像に対し、像域分離を行うと、図38の(b)のような領域1221〜1223に分割され、各領域は「文字」の属性を持つ領域として判定される。
【0252】
次に、カウントされた各領域に対し、画像表現に必要な量子化数を決定する量子化数決定処理を、ステップS1204以降で行う。
ステップS1204で、ループカウンタkの値を1にセットする。また、ループカウンタkは、各領域に対して量子化数決定処理が終了する毎に、1インクリメントされ、そのカウント値と領域の番号が対応している。ステップS1205で、ループカウンタkの値がカウンタarea_countの値よりも大きいか否かを判定する。ループカウンタkの値がカウンタarea_countの値よりも小さい場合(ステップS1205でNO)、ステップS1206に進む。一方、ループカウンタkの値がカウンタarea_countの値よりも大きい場合(ステップS1205でYES)、すべてのカウントされた領域に対して、量子化数決定処理がなされたことになるので、処理を終了する。
【0253】
ステップS1206で、多値フレームメモリ1206からループカウンタkの値に対応する領域の画素データp(x,y)の画素値をカウントするカウンタを0にリセットする。尚、カウンタは頻度hist_area[i](i=0〜255)からなり、例えば、画素値がiの画素データは、頻度hist_area[i]にカウントされる。また、各カウンタでカウントされる値は各画素値の出現頻度を示す。
【0254】
ステップS1207で、多値フレームメモリ1206からループカウンタkの値に対応する領域の画素データp(x,y)の画素値と2値フレームメモリ1207から画素データp(x,y)に対応する画素データb(x,y)の画素値を順次読み込み、すべての画素データp(x,y)と画素データb(x,y)の画素値が読み込まれたか否かを判定する。そして、すべての画素データp(x,y)と画素データb(x,y)の画素値が読み込まれるまでは、ステップS1208で、順次読み込まれる画素データb(x,y)の画素値を判定する。画素データb(x,y)の画素値が1の場合(ステップS1208でYES)、ステップS1209に進む。ステップS1209で、画素データp(x,y)の画素値に対応する頻度hist_area[p(x,y)]の内容を1インクリメントする。一方、画素データb(x,y)の画素値が1でない場合(ステップS1208でNO)、つまり、画素値が0である場合、ステップS1207に戻る。
【0255】
そして、全ての画素値の読み込みが終了したら、ステップS1210に進む。尚、全ての画素値の読み込みが終了すると、頻度hist_area[i]に示される各画素値の出現頻度によって、画像データの画素値の出現頻度のヒストグラムが生成される。 次に、ステップS1210〜ステップS1213で生成されたヒストグラムを平滑化する処理を行う。
【0256】
図43において、ステップS1210で、生成されたヒストグラムの各画素値の出現頻度hist_area[i]を平滑化した画素値の数をカウントするループカウンタiの内容を0にリセットする。
ステップS1211で、生成されたヒストグラムから各画素値の頻度hist_area[i]を読み込み、すべての頻度hist_area[i]が読み込まれたか否かを判定する。そして、すべての頻度hist_area[i]が読み込まれるまでは、ステップS1212で、上述の(8)式に従って、順次読み込まれるhist_area[i]を平滑化し、平滑化頻度hist_sm[i]を算出する。
【0257】
ステップS1213で、ループカウンタiの内容を1インクリメントする。そして、すべての頻度hist_area[i]の平滑化が終了したら、つまり、ループカウンタiの内容が256になったら、ステップS1214に進む。
次に、ステップS1214〜ステップS1228で、平滑化頻度hist_sm[i]からなるヒストグラムより、ヒストグラムに存在する極大値と極小値を検出し、検出された極大値と極小値に基づいて、領域の前景色代表濃度を判定する処理を行う。
【0258】
ステップS1214で、極大値テーブルlist_1[i]の内容と、平滑化されたヒストグラムに存在する極大値の数をカウントするカウンタex_count_1の内容と、平滑化頻度hist_sm[i]の数をカウントするループカウンタiの内容を0にリセットする。尚、極大値テーブルlist_1[i]は、カウンタex_count_1のカウント数(list_1[ex_count_1])とそのカウント数に対応する極大値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。
【0259】
ステップS1215で、極小値テーブルlist_2[1]の内容を0にセットし、平滑化されたヒストグラムに存在する極小値の数をカウントするカウンタex_count_2の内容を1にセットする。尚、極小値テーブルlist_2[i]は、カウンタex_count_2のカウント数(list_2[ex_count_2])とそのカウント数に対応する極小値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。但し、一般的に、平滑化されたヒストグラムには、画素値が小さい所で、出現頻度が0の極小値を持つ画素値を持っているので、1番目にカウントされる極小値を持つ画素値は0となり、極小値テーブルlist_2[1]には0がセットされる。
【0260】
ステップS1216で、平滑化されたヒストグラムから各画素値の平滑化頻度hist_sm[i]を読み込み、すべての平滑化頻度hist_sm[i]が読み込まれたか否かを判定する。そして、すべての平滑化頻度hist_sm[i]が読み込まれるまでは、ステップS1217で、順次読み込まれる平滑化頻度hist_sm[i]が極大値であるか否かを判定する。平滑化頻度hist_sm[i]が極大値である場合(ステップS1217でYES)、ステップS1218に進む。ステップS1218で、カウンタex_count_1の内容を1インクリメントし、極大値テーブルlist_1[i]のカウント数list_1[ex_count_1]に平滑化頻度hist_sm[i]の画素値を対応付ける。一方、平滑化頻度hist_sm[i]が極大値でない場合(ステップS1217でNO)、ステップS1219に進む。
【0261】
ステップS1219で、順次読み込まれる平滑化頻度hist_sm[i]が極小値であるか否かを判定する。平滑化頻度hist_sm[i]が極小値である場合(ステップS1219でYES)、ステップS1220に進む。ステップS1220で、カウンタex_count_2の内容を1インクリメントし、極小値テーブルlist_2[i]のカウント数list_2[ex_count_2]に平滑化頻度hist_sm[i]の画素値を対応付ける。一方、平滑化頻度hist_sm[i]が極小値でない場合(ステップS1219でNO)、ステップS1221に進む。
【0262】
ステップS1221で、ループカウンタiの内容を1インクリメントする。そして、すべての平滑化頻度hist_sm[i]の比較が終了したら、つまり、ループカウンタiの内容が256になったら、ステップS1222に進む。
図24において、ステップS1222で、極大値テーブルlist_3[i]の内容を0にリセットする。また、極大値テーブルlist_1[i]の中で極大値の値が近い極大値は、それらを1つの極大値として統合し、その統合後に得られる極大値とそれ以外の極大値の数をカウントするカウンタex_count_3の内容を0にリセットする。更に、統合する極大値の有無の判定がなされた平滑化頻度hist_sm[i]の数をカウントするループカウンタiの内容を0にリセットする。尚、極大値テーブルlist_3[i]は、カウンタex_count_3のカウント数(list_3[ex_count_3])とそのカウント数に対応する極大値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。
【0263】
ステップS1223で、極小値テーブルlist_2[1]の内容を極小値テーブルlist_4[1]にセットする。また、極大値が統合されることによって、なくなる極小値とそれ以外の極小値の数をカウントするカウンタex_count_4の内容を1にセットする。尚、極小値テーブルlist_4[i]は、カウンタex_count_4のカウント数(list_4[ex_count_4])とそのカウント数に対応する極小値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。
【0264】
ステップS1224で、極大値テーブルlist_1[i]から各極大値を読み込み、読み込まれた極大値の数がカウンタex_count_1よりも大きい否かを判定する。そして、読み込まれた極大値の数がカウンタex_count_1よりも大きくなるまでは、ステップS1225で、極大値テーブルlist_1[i]のi+1番目の極大値と、i番目の極大値に対応する画素値の差を算出し、算出された差が所定の閾値Th5よりも大きいか否かを判定する。
【0265】
算出された差が所定の閾値Th5よりも大きい場合(ステップS1225でYES)、ステップS1226に進む。ステップS1226で、カウンタex_count_3の内容を1インクリメントし、極大値テーブルlist_3[i]のカウント数list_3[ex_count_3]に、極大値テーブルlist_1[i]のカウント数list_1[i]に対応する平滑化頻度hist_sm[i]の画素値を対応付ける。ステップS1227で、極小値テーブルlist_4[i]のカウント数list_4[ex_count_4]に、極小値テーブルlist_2[i]のカウント数list_2[i]に対応する平滑化頻度hist_sm[i]の画素値を対応付ける。一方、算出された差が所定の閾値Th5よりも小さい場合(ステップS1225でNO)、ステップS1228に進む。
【0266】
ステップS1228で、ループカウンタiの内容を1インクリメントする。そして、極大値テーブルlist_1[i]から各極大値を読み込み、読み込まれた極大値の数、つまり、ループカウンタiの内容がカウンタex_count_1の内容よりも大きくなったら、ステップS1229に進む。
尚、極大値テーブルlist_3[i]に格納されている極大値に対応する画素値が、前景色代表濃度となる。
【0267】
次に、ステップS1229〜ステップS1237で、平滑化頻度hist_sm[i]からなるヒストグラムより検出された極大値と極小値に基づいて、領域の前景色代表濃度を判定する。更に、判定された前景色代表濃度に基づいて、領域を量子化するための量子化数、量子化するための閾値である前景色代表閾値を判定する処理を行う。
【0268】
図47において、ステップS1229で、前景色代表濃度テーブルlist_color[i]の内容と、前景色代表閾値テーブルlist_v[i]の内容と、前景色代表濃度の数をカウントするカウンタcolor_numberの内容と、前景色代表濃度の判定がなされた極大値(前景色代表濃度)の数をカウントするループカウンタiの内容を0にリセットする。尚、前景色代表濃度テーブルlist_color[i]は、カウンタcolor_numberのカウント数(list_color[color_number])とそのカウント数に対応する極大値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。また、前景色代表閾値テーブルlist_v[i]は、カウンタcolor_numberのカウント数(list_v[color_number])とそのカウント数に対応する極小値を持つ平滑化頻度hist_sm[i]の画素値の関係を示すテーブルである。
【0269】
ステップS1230で、極大値テーブルlist_3[i]から各極大値を読み込み、読み込まれた極大値の数がカウンタex_count_3よりも大きい否かを判定する。そして、読み込まれた極大値の数がカウンタex_count_3よりも大きくなるまでは、ステップS1231で、変数subを(9)式に従って算出する。
Figure 0003745069
ステップS1232で、算出された変数subが所定の閾値Th6よりも大きいか否かを判定する。算出された差が所定の閾値Th6よりも大きい場合(ステップS1232でYES)、ステップS1233に進む。ステップS1233で、カウンタcolor_numberの内容を1インクリメントし、前景色代表濃度テーブルlist_color[i]のカウント数list_color[color_number]に、極大値テーブルlist_3[i]のカウント数list_3[i]に対応する平滑化頻度hist_sm[i]の画素値を対応付ける。ステップS1234で、前景色代表閾値テーブルlist_v[i]のカウント数list_v[i][color_number]に、極小値テーブルlist_4[i]のカウント数list_4[i]に対応する平滑化頻度hist_sm[i]の画素値を対応付ける。一方、算出された差が所定の閾値Th6よりも小さい場合(ステップS1232でNO)、ステップS1235に進む。
【0270】
ステップS1235で、ループカウンタiの内容を1インクリメントする。そして、極大値テーブルlist_3[i]から各極大値を読み込み、読み込まれた極大値の数、つまり、ループカウンタiの内容がカウンタex_count_3の内容よりも大きくなったら、ステップS1236に進む。
ステップS1236で、前景色代表濃度テーブルlist_color[i]に格納されている極大値に対応する画素値を前景色代表濃度とし、前景色代表閾値テーブルlist_v[i]に格納されている極小値に対応する画素値を前景色代表閾値とする。また、カウンタcolor_numberは前景色代表濃度の存在する数を表しており、その領域を量子化するための量子化数とする。これらは、領域の情報として各領域毎にプログラムメモリ202の所定の領域に格納される。
【0271】
ステップS1237で、ループカウンタkの内容を1インクリメントする。そして、すべての領域に対し画像表現に必要な量子化数を決定する量子化数決定処理が行われたら、つまり、ループカウンタkの内容がカウンタarea_countの値になったら、すべての処理を終了する。
以上、図44〜図47のフローチャートで説明される処理によって、2値フレームメモリ1207上に格納された2値画像データを領域分割し、分割された領域の属性が像域分離処理によって判定される。そして、判定された属性に基づいて2値画像データに含まれる各領域を量子化するための量子化数と、量子化するための前景色代表閾値、更には前景色代表濃度が決定される。
【0272】
続いて、図48のフローチャートを用いて、各領域の前景色代表閾値、前景色代表濃度領域に基づいて、各領域を更に分割する処理について説明する。
尚、図38の(a)のようなカラー多値画像の場合、図44のステップS1202の領域分割では、色の区別がなされないため色毎に領域が分割されない。そのため、色毎に領域を分割するために図48のフローチャートで説明される処理を行う。
【0273】
図48は第6の実施の形態で実行される領域分割された各領域を、前景色代表閾値、前景色代表濃度領域に基づいて、更に分割する処理の処理フローを示すフローチャートである。
ステップS1301で、ループカウンタkの値を1にセットする。また、ループカウンタkは、各領域の前景色代表閾値、前景色代表濃度領域に基づいて、各領域を更に分割する処理が終了する毎に、1インクリメントされ、そのカウント値と量子化数color_numberでカウントされた領域の値が対応している。ステップS1302で、ループカウンタkの値が量子化数color_numberの値よりも大きいか否かを判定する。ループカウンタkの値がカウンタ量子化数color_numberの値よりも小さい場合(ステップS1302でNO)、ステップS1303に進む。一方、ループカウンタkの値が量子化数color_numberの値よりも大きい場合(ステップS1302でYES)、すべてのカウントされた領域に対して、各領域の前景色代表閾値、前景色代表濃度領域に基づいて、各領域を更に分割する処理がなされたことになるので、処理を終了する。
【0274】
ステップS1303で、多値フレームメモリ1206から対応する領域の画素データp(x,y)の画素値を順次読み込み、すべての画素データp(x,y)が読み込まれたか否かを判定する。そして、すべての画素データp(x,y)の画素値が読み込まれるまでは、ステップS1304で、順次読み込まれる画素データp(x,y)の画素値が、前景色代表閾値list_v[k-1]以上でかつ前景色代表閾値list_v[k]未満であるかを判定する。
【0275】
そして、画素データp(x,y)が前景色代表閾値list_v[k-1]以上でかつ前景色代表閾値list_v[k]未満であれば、ステップS1305で、その画素データp(x,y)の2値画像データb(x,y)を「1」として、2値フレームメモリ1207の対応する領域に書き込む。一方、画素データp(x,y)が前景色代表閾値list_v[k-1]未満または前景色代表閾値list_v[k]以上であれば、ステップS1306で、その画素データp(x,y)の2値画像データb(x,y)を「0」として、2値フレームメモリ1207の対応する領域に書き込む。
【0276】
多値フレームメモリ1206に上の全ての画素データp(x,y)について、前景色代表閾値との比較が終了したら、ステップS1307に進む。
ステップS1307で、2値フレームメモリ1207に書き込まれた2値画像データに含まれる領域に対し、類似する属性を持つ領域毎に更に分割する。そして、各領域が更に分離された領域数をカウンタarea_count_areaでカウントする。また、更に分離された各領域の位置座標と大きさを求める。ステップS1308で、カウントされた更に分離された各領域に対して、更に分離された各領域に含まれる「1」である2値画像データの塊の密度や形状、並びから「画像」、「図形」、「文字」等の領域の属性を判定する像域分離処理を行う。ここでは、上述の第3の実施形態と同様の像域分離処理の方法を用いて、像域分離を行う。
【0277】
ステップS1309で、更に分離された各領域の位置座標と大きさ、属性、前景色代表濃度を対応する領域毎に、プログラムメモリ1202の所定の領域に格納される。
ステップS1310で、ループカウンタkの内容を1インクリメントする。そして、すべての領域に対し、各領域の前景色代表閾値、前景色代表濃度領域に基づいて、各領域を更に分割する処理が行われたら、つまり、ループカウンタkの内容が量子化数color_numberの値になったら、すべての処理を終了する。
【0278】
以上、図48のフローチャートで説明される処理によって、図42のステップS1202の領域分割された各領域が色毎の領域に更に分割される。また、分割された領域の属性が像域分離処理によって判定される。
尚、図38の(a)の原稿画像の場合、図44のステップS1202で説明される領域分割によって得られる図38の(b)の領域に対し、図48のフローチャートで説明される処理によって、図38の(c)に示されるように、領域222内には灰色文字を示す領域1224、領域1223には赤色文字を示す領域225が更に領域をして分割される。また、第6の実施の形態のように、カラー多値画像データを白黒スキャナで読み込む場合は、カラー多値画像データに含まれる色の情報は読み込まれない。しかし、色によってカラー多値画像データの濃度が異なるので、その濃度の違いによって色を判定あるいは推定できるので、図48のフローチャートで説明される処理のように、領域を更に色毎の領域に分割することが可能となる。
【0279】
また、従来は下地の濃度を含んだまま、原稿画像の前景色代表濃度を、その原稿画像の画素値の出現頻度に基づいて判定していた。例えば、図38の(b)の領域1222の画素値の出現頻度のヒストグラムは図49の(a)、領域1223の画素値の出現頻度のヒストグラムは図49の(b)のように生成されていた。そのため、これらのヒストグラムより、前景色代表濃度を極大値から判定しようとすると背景の裏写り等のノイズによって極大値のカウントを誤ってしまう。また、本来、文字等の抽出したい濃度の頻度が全体に比べて小さいため、ノイズとの分離が困難であった。
【0280】
そこで、第6の実施の形態では、原稿画像の下地の濃度を除去することで、原稿画像の前景色代表濃度の判定の精度を向上させている。例えば、図38の(b)の領域1222の下地濃度を除去した画素値の出現頻度のヒストグラムは図49の(c)となり、図38の(b)の領域1223の下地濃度を除去した画素値の出現頻度のヒストグラムは図49の(d)となる。これによって、文字等の必要な濃度が強調されたヒストグラムが得られるので、黒文字の代表濃度、灰色文字の代表濃度、赤文字を白黒スキャナ1205で読み込んだ場合でも、代表濃度を明確にできるわけである。
【0281】
続いて、図50〜図53のフローチャートを用いて、2値画像データに含まれる各領域の属性と対応する量子化数に基づいて、2値画像データに含まれる各領域の構造化データを生成する処理について説明する。
図50〜図53は第6の実施の形態で実行される2値画像データに含まれる各領域の構造化データを生成する処理の処理フローを示すフローチャートである。
【0282】
図50において、ステップS1401で、CPU570は、メモリ1202に格納されている全ての領域について領域の並び変えを行う。並び変えは、原稿画像に含まれる領域の構造化データを生成する処理の処理順を決定するために行う。ここでは、まず最初にカウンタarea_countでカウントされた数の領域の内、「文字」の属性を持つ領域が、図48のフローチャートで説明される処理によって更に領域が分割される場合は、更に分割される前の「文字」の属性を持つ領域を削除する。そして、その「文字」の属性を持つ領域については、更に領域が分割された複数の領域として判定する。それ以外の更に分割されない領域は、1つの領域として判定する。このようにして、原稿画像に含まれる領域を判定し、メモリ1202に格納される領域において、まず、更に分割されない領域をラスタ方向で検索し、検索された順に更に分割されない領域を並べる。続いて、更に分割されるをラスタ方向で検索し、検索された順に更に分割される領域を並べる。
【0283】
ステップS1402で、並び変えられる領域の総数をカウンタarea_count_allでカウントする。ステップS1403で、ループカウンタkの値を1にセットする。また、ループカウンタkは、各領域に対して構造化データを生成する処理が終了する毎に、1インクリメントされ、そのカウント値とカウンタarea_count_allでカウントされた領域の値が対応している。ステップS1404で、ループカウンタkの値がカウンタarea_count_allの値よりも大きいか否かを判定する。ループカウンタkの値がカウンタarea_count_allの値よりも小さい場合(ステップS1404でNO)、ステップS1405に進む。一方、ループカウンタkの値がカウンタarea_count_allの値よりも大きい場合(ステップS1404でYES)、すべてのカウントされた領域に対して、構造化データを生成する処理がなされたことになるので、処理を終了する。
【0284】
ステップS1405で、ループカウンタkの値に対応する領域の像域分離処理による属性が「文字」であるか否かを判定する。領域の属性が「文字」である場合(ステップS1405でYES)、以下、後述するステップS1409〜ステップS1414で説明される処理を行う。一方、領域の属性が「文字」でない場合(ステップS1405でNO)、ステップS1406に進む。
【0285】
以下、領域の属性が「文字」である場合に実行される処理について、図51のフローチャートを用いて説明する。
図51は第6の実施の形態の領域の属性が「文字」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS1409で、領域の属性が「文字」である領域に対応する画像データを多値フレームメモリ1206から読み込む。そして、読み込んだ画像データに対し、前景色代表濃度を持つ画素は「1」、それ以外は「0」にして、画像データを2値化する。
【0286】
ステップS1410で、領域の属性が「文字」である領域のOCRを行い、ステップS1411で、色文字であるか否かを判定する。色文字である場合(ステップS1411でYES)、ステップS1412に進む。ステップS1412で、色を抽出し、その抽出した色とその文字列をキーワードとする。一方、色文字でない場合(ステップS1411でNO)、ステップS1413に進む。
【0287】
ステップS1413で、領域の属性が「文字」である領域のJBIG符号化を行い、ステップS1410、ステップS1412によって、OCRの結果から得られた文字列、各文字列の濃度(前景色代表濃度)、対応する文字コード、キーワードとともにJBIG符号化データを構造化データから構成される構造化文書の書式にしたがって記憶装置1204の所定の領域に格納する。そして、領域のJBIG符号化と格納が終了したら、ステップS1408に進む。
【0288】
図50のフローチャートに戻る。
ステップS1406で、ループカウンタkの値に対応する領域の像域分離処理による属性が「図形」であるか否かを判定する。領域の属性が「図形」である場合(ステップS1406でYES)、以下、後述するステップS1415〜ステップS1417で説明される処理を行う。一方、領域の属性が「図形」でない場合(ステップS1406でNO)、ステップS1407に進む。
【0289】
以下、領域の属性が「図形」である場合に実行される処理について、図52のフローチャートを用いて説明する。
図52は第6の実施の形態の領域の属性が「図形」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS1415で、領域の属性が「図形」である領域に対応する画像データを多値フレームメモリ1206から読み込む。そして、読み込んだ画像データに対し、前景色代表濃度を持つ画素は「1」、それ以外は「0」にして、画像データを2値化する。ステップS1416で、領域の属性が「図形」である領域のアウトライン抽出によるベクトル化を行う。
【0290】
ステップS1417で、ベクトル化の結果から得られたベクトルは、前景色代表濃度、その座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置1204の所定の領域に格納される。そして、領域のベクトル化と格納が終了したら、ステップS1408に進む。
図50のフローチャートに戻る。
【0291】
ステップS1407で、ループカウンタkの値に対応する領域の像域分離処理による属性が「写真」であるか否かを判定する。領域の属性が「写真」である場合(ステップS1407でYES)、以下、後述するステップS1418、ステップS1419で説明される処理を行う。一方、領域の属性が「写真」でない場合(ステップS1407でNO)、ステップS1408に進む。
【0292】
以下、領域の属性が「写真」である場合に実行される処理について、図53のフローチャートを用いて説明する。
図53は第6の実施の形態の領域の属性が「写真」である場合に実行される処理の処理フローを示すフローチャートである。
ステップS1418で、領域の属性が「写真」である領域に対応する画像データを多値フレームメモリ1206から読み込む。そして、読み込んだ画像データに対し、JPEG符号化を行う。
【0293】
ステップS1419で、JPEG符号化の結果から得られた符号化データは、その座標、領域サイズとともに構造化データから構成される構造化文書の書式にしたがって記憶装置1204の所定の領域に格納される。そして、領域のJPEG符号化と格納が終了したら、ステップS1408に進む。
再び、図50のフローチャートに戻る。
【0294】
ステップS1408で、ループカウンタkの内容を1インクリメントする。そして、すべての領域に対し構造化データを生成する処理が行われたら、つまり、ループカウンタkの内容がカウンタarea_count_allの値になったら、すべての処理を終了する。
以上、図50〜図53のフローチャートで説明される処理によって、2値画像データに含まれる各領域の属性と対応する量子化数に基づいて、2値画像データに含まれる各領域の構造化データが生成される。
【0295】
尚、第6の実施の形態では、構造化データを記憶装置1204に格納したが、通信インタフェース208を介して通信回線1209に送信することもできる。以上説明したように、第6の実施の形態によれば、画像データの画素値のヒストグラムに基づいて、下地代表濃度bg_valueと下地の濃度幅上限値bt1と濃度幅下限値bt0を抽出し、濃度幅上限値bt1と濃度幅下限値bt0の範囲内に含まれる画素値をすべて下地代表濃度bg_valueとして出力することで、一定した好適な下地の濃度を出力することができる。
【0296】
また、下地代表濃度bg_valueを示す極大値以外にヒストグラムに存在する出現頻度の極大値を持つ画素値を含む閾値noith_th以上の出現頻度を持つ画素値群を、下地以外に原稿画像に存在する画像として判定する。そして、その判定された画像を表現する所定範囲の画素値群を一律にその所定範囲内の出現頻度の極大値を持つ画素値(前景色代表濃度)で出力することで、一定した好適な画素値で画像を出力することができる。
【0297】
また、その判定された画像を表現する前景色代表濃度を含む所定範囲の画素値群の範囲とその個数に基づいて、原稿画像を量子化するための量子化数と閾値を判定するため、原稿画像を好適に量子化する量子化数を決定することができる。また、カラー画像に対して、高速で比較的小さい回路規模で好適な領域判定が可能になる。領域毎に画像を再現するのに必要な量子化を正しく行い、限定色の文字や図形を好適に判定し、画像の構造化をより高いレベルにすることができる。
【0298】
尚、第4の実施の形態〜第6の実施の形態で説明された画像処理装置の構成はこれに限定されず、一部分をソフトウェア等のプログラムで実現してももちろん構わない。
また、第4の実施の形態、第6の実施の形態では白黒画像データを例にとって説明したが、L***画像を白黒画像と同じように扱うことによってカラー画像への拡張が可能であることは言うまでもない。更に入力ビット数、それに伴うヒストグラムの生成はこれに限定されず、量子化した結果の頻度分布であっても構わない。
【0299】
また、ヒストグラムは、入力されたすべての画素ではなく、間引くなどして一部の画素を用いて形成しても良い。これにより、処理を高速に行うことができる。
更に、像域分離処理や量子化の方法は本発明で説明される方法に限定されず、他の方法でも構わない。また、領域の形状を矩形として説明したが、これに限定されず、輪郭線等のあらゆる自由形状であってももちろん構わない。
【0300】
また、更に、メモリ構成をフレームメモリとしたが、これに限定されず、ラインバッファ等で構成してももちろん構わない。
尚、本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置等)に適用してもよい。
【0301】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0302】
この場合、記憶媒体から読出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【0303】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0304】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0305】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートの処理を実現するためのコンピュータのプログラムコードを格納することになる。簡単に説明すると、例えば、図54のメモリマップ例に示す各モジュールを記憶媒体に格納する。
すなわち、少なくとも「生成モジュール」、「判定モジュール」、および「決定モジュール」の各モジュールのプログラムコードを記憶媒体に格納すればよい。
【0306】
尚、「生成モジュール」は、画像データの濃度の出現頻度の分布を生成する。「判定モジュール」は、生成された分布の最大出現頻度を含み、所定の閾値以上の出現頻度を有する濃度領域を判定する。「決定モジュール」は、判定された濃度領域以外の分布に含まれる極大値の数に基づいて、量子化数を決定する。
以上説明したように、本発明の第4の実施形態〜第6の実施の形態によれば、スキャナ等で読み取った原稿画像の画像データの下地に発生するノイズを好適に除去することができ、画像データによる出力画像の画質を向上する画像処理装置及びその方法を提供できる。
【0307】
また、画像データの下地に発生するノイズを好適に除去し、画像データを量子化するための量子化数を好適に判定する画像処理装置及びその方法を提供できる。
また、画像に対して、高速で比較的小さい回路規模で好適な領域判定が可能になる。ノイズによる影響を取り除き、図形/写真を正確に判定できる。更に、下地と文字の輝度に差がない場合でも確実に検出できる。
【0308】
また、領域毎に画像を再現するのに必要な量子化を正しく行い、限定色の文字や図形を好適に判定し、画像の出力、符号化、構造化をより高いレベルにすることができる効果がある。
尚、本発明は、上述の実施の形態に限らず、クレームの記載の範囲内で様々な変形、応用が可能である。
【0309】
【発明の効果】
以上説明したように、本発明の第1の発明によれば、対象画像の特徴に応じて良好な量子化を行うことができる。
また、第2の発明によれば、画像データの下地に発生するノイズを好適に除去し、画像データを量子化するための量子化数を好適に判定することができる。
【0310】
また、第3の発明によれば、色文字を良好に抽出することができる。
また、第4の発明によれば、スキャナ等で読み取った原稿画像の画像データの下地に発生するノイズを好適に除去することができ、画像データによる出力画像の画質を向上することがでる。
また、画像データの下地に発生するノイズを好適に除去することで、画像データを属性毎の領域に分離する像域分離処理の精度を向上すること、また、画像データの下地に発生するノイズを好適に除去し、ノイズを除去した画像データから好適な下地の濃度を判定し、その判定された濃度を下地の濃度として出力することで、画像データの符号化効率を向上することができる。
【図面の簡単な説明】
【図1】第1の実施の形態の画像処理装置の構成を示すブロック図である。
【図2】第1の実施の形態の下地の濃度幅抽出の様子を説明するための図である。
【図3】第1の実施の形態で実行される処理の処理フローを示すフローチャートである。
【図4】第1の実施の形態の画像処理装置を適用させた画像送信装置の構成を示すブロック図である。
【図5】第2の実施の形態の画像処理装置の構成を示すブロック図である。
【図6】第2の実施の形態の下地濃度判定部109の詳細な構成を示すブロック図である。
【図7】第2の実施の形態で実行される処理の処理フローを示すフローチャートである。
【図8】第2の実施の形態の画像処理装置を適用させたプリンタ装置の構成を示すブロック図である。
【図9】第3の実施の形態の画像処理装置の構成を示すブロック図である。
【図10】第3の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図11】第3の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図12】第3の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図13】第3の実施の形態で実行される画像データを2値化する処理の処理フローを示すフローチャートである。
【図14】第3の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数を決定する処理の処理フローを示すフローチャートである。
【図15】第3の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数を決定する処理の処理フローを示すフローチャートである。
【図16】第3の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数を決定する処理の処理フローを示すフローチャートである。
【図17】第3の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数を決定する処理の処理フローを示すフローチャートである。
【図18】第3の実施の形態で実行される2値画像データに含まれる各領域の構造化データを生成する処理の処理フローを示すフローチャートである。
【図19】第3の実施の形態の領域の属性が「文字」である場合に実行される処理の処理フローを示すフローチャートである。
【図20】第3の実施の形態の領域の属性が「図形」である場合に実行される処理の処理フローを示すフローチャートである。
【図21】第3の実施の形態の領域の属性が「写真」である場合に実行される処理の処理フローを示すフローチャートである。
【図22】本発明で実行される処理フローのプログラムを記憶させた記憶媒体のメモリマップの構造を示す図である。
【図23】第4の実施の形態の画像処理装置の構成を示すブロック図である。
【図24】第4の実施の形態の下地の濃度幅抽出の様子を説明するための図である。
【図25】第4の実施の形態の下地濃度幅検出部405の詳細な構成を示すブロック図である。
【図26】第4の実施の形態の量子化数判定部406の詳細な構成を示すブロック図である。
【図27】第4の実施の形態の前景色代表濃度の抽出の様子を説明するための図である。
【図28】第4の実施の形態で実行される処理の処理フローを示すフローチャートである。
【図29】第4の実施の形態の画像処理装置を適用させた画像送信装置の構成を示すブロック図である。
【図30】第4の実施の形態の量子化数を決定する様子を説明するための図である。
【図31】第5の実施の形態の画像処理装置の構成を示すブロック図である。
【図32】第5の実施の形態の量子化数判定部515の詳細な構成を示すブロック図である。
【図33】第5の実施の形態で実行される処理の処理フローを示すフローチャートである。
【図34】第5の実施の形態の他の構成による画像処理装置の構成を示すブロック図である。
【図35】第5の実施の形態の更に他の構成による画像処理装置の構成を示すブロック図である。
【図36】第5の実施の形態の画像処理装置を適用させた光学的文字認識装置の構成を示すブロック図である。
【図37】第6の実施の形態の画像処理装置の構成を示すブロック図である。
【図38】(a)は原稿画像の例を示す図であり、(b)は原稿画像を領域分割して得られる領域の構成を示す図であり、(c)は領域分割された各領域を更に分割して得られる領域の構成を示す図である。
【図39】第6の実施の形態の下地の濃度幅抽出の様子を説明するための図である。
【図40】第6の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図41】第6の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図42】第6の実施の形態によって実行される画像データの下地代表濃度bg_valueと濃度幅下限値bt0と濃度幅上限値bt1を算出する処理の処理フローを示すフローチャートである。
【図43】第6の実施の形態で実行される画像データを2値化する処理の処理フローを示すフローチャートである。
【図44】第6の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数、前景色代表色、前景色代表濃度を決定する処理の処理フローを示すフローチャートである。
【図45】第6の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数、前景色代表色、前景色代表濃度を決定する処理の処理フローを示すフローチャートである。
【図46】第6の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数、前景色代表色、前景色代表濃度を決定する処理の処理フローを示すフローチャートである。
【図47】第6の実施の形態で実行されるの2値画像データに含まれる各領域を量子化するための量子化数、前景色代表色、前景色代表濃度を決定する処理の処理フローを示すフローチャートである。
【図48】第6の実施の形態で実行される領域分割された各領域を、前景色代表閾値、前景色代表濃度領域に基づいて、更に分割する処理の処理フローを示すフローチャートである。
【図49】(a)、(b)は従来の方法によって抽出される下地の濃度幅抽出、下地代表濃度、前景色代表濃度の抽出の様子を説明するための図であり、(c)、(d)は第6の実施の形態によって抽出される下地の濃度幅抽出、下地代表濃度、前景色代表濃度の抽出の様子を説明するための図である。
【図50】第6の実施の形態で実行される2値画像データに含まれる各領域の構造化データを生成する処理の処理フローを示すフローチャートである。
【図51】第6の実施の形態の領域の属性が「文字」である場合に実行される処理の処理フローを示すフローチャートである。
【図52】第6の実施の形態の領域の属性が「図形」である場合に実行される処理の処理フローを示すフローチャートである。
【図53】第6の実施の形態の領域の属性が「写真」である場合に実行される処理の処理フローを示すフローチャートである。
【図54】本発明で実行される処理フローのプログラムを記憶させた記憶媒体のメモリマップの構造を示す図である。
【符号の説明】
1 画像入力装置
2 フレームメモリ
3、7 ヒストグラム生成部
4 最大頻度検出部
5 量子化ステップ算出部
6 量子化部
8 ノイズ閾値決定部
9 比較部
10 下地濃度幅検出部
11、12、13 端子
20 画像処理装置
22 ラッチ
23 セレクタ
24 JPEG符号化部
25 通信インターフェイス
101 画像入力部
102 色変換部
103 フレームメモリ
104 平坦画素判定部
105 ラッチ
106〜108 ヒストグラム生成部
109 下地濃度判定部
110、111 最大頻度検出部
140 画像処理装置
141 白色下地判定部
142 比較部
143 ラッチ
144 セレクタ
145 色変換部
146 2値化部
147 2値プリンタ
201 CPU
202 プログラムメモリ
203 端末
204 記憶装置
205 スキャナ
206 多値フレームメモリ
207 2値フレームメモリ
210 バス

Claims (4)

  1. 画像処理装置であって、
    画像を表す多値画像データを入力する入力手段と、
    前記多値画像データの下地を構成する濃度幅として、該多値画像データの画素値の頻度ヒストグラム中の最大頻度となる下地代表濃度を含み、かつ前記下地代表濃度から低濃度方向の濃度の内、最初に所定閾値よりも小さくなる頻度の濃度を下地濃度下限値とし、かつ前記下地代表濃度から高濃度方向の濃度の内、最初に前記所定閾値よりも小さくなる頻度の濃度を下地濃度上限値とする、濃度幅を判定し、該多値画像データが該濃度幅に含まれるか否かに基づいて、該多値画像データより2値画像データを抽出する抽出手段と、
    前記2値画像データの配置に基づいて、前記画像を属性毎に複数の画像領域に分割する分割手段と、
    前記画像領域内の前記多値画像データを量子化する量子化手段を備え、
    前記多値画像データの量子化数は、前記画像領域単位で決定される
    ことを特徴とする画像処理装置。
  2. 前記属性は、少なくとも文字、写真を含む
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記量子化手段は、更に、前記画像領域単位で前記多値画像データの頻度ヒストグラムを生成する生成手段からなり、
    前記多値画像データの量子化数は、前記頻度ヒストグラムに基づき決定される
    ことを特徴とする請求項1に記載の画像処理装置。
  4. 画像処理方法であって、
    画像を表す多値画像データを入力する入力工程と、
    前記多値画像データの下地を構成する濃度幅として、該多値画像データの画素値の頻度ヒストグラム中の最大頻度となる下地代表濃度を含み、かつ前記下地代表濃度から低濃度方向の濃度の内、最初に所定閾値よりも小さくなる頻度の濃度を下地濃度下限値とし、かつ前記下地代表濃度から高濃度方向の濃度の内、最初に前記所定閾値よりも小さくなる頻度の濃度を下地濃度上限値とする、濃度幅を判定し、該多値画像データが該濃度幅に含まれるか否かに基づいて、該多値画像データより2値画像データを抽出する抽出工程と、
    前記2値画像データの配置に基づいて、前記画像を属性毎に複数の画像領域に分割する分割工程と、
    前記画像領域内の前記多値画像データを量子化する量子化工程を備え、
    前記多値画像データの量子化数は、前記画像領域単位で決定される
    ことを特徴とする画像処理方法。
JP02786797A 1996-02-15 1997-02-12 画像処理装置及びその方法 Expired - Fee Related JP3745069B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP02786797A JP3745069B2 (ja) 1996-02-15 1997-02-12 画像処理装置及びその方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2789396 1996-02-15
JP8-33625 1996-02-21
JP8-27893 1996-02-21
JP3362596 1996-02-21
JP02786797A JP3745069B2 (ja) 1996-02-15 1997-02-12 画像処理装置及びその方法

Publications (2)

Publication Number Publication Date
JPH09289586A JPH09289586A (ja) 1997-11-04
JP3745069B2 true JP3745069B2 (ja) 2006-02-15

Family

ID=27285980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02786797A Expired - Fee Related JP3745069B2 (ja) 1996-02-15 1997-02-12 画像処理装置及びその方法

Country Status (1)

Country Link
JP (1) JP3745069B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100375222B1 (ko) * 2000-07-19 2003-03-08 엘지전자 주식회사 스케일러블 칼라 히스토그램 엔코딩 방법
US7191103B2 (en) * 2001-08-08 2007-03-13 Hewlett-Packard Development Company, L.P. Predominant color identification in digital images
JP4217575B2 (ja) 2003-09-29 2009-02-04 キヤノン株式会社 画像処理装置、画像処理方法ならびにプログラム、記憶媒体
JP4496106B2 (ja) * 2005-02-28 2010-07-07 株式会社東芝 画像処理装置及び画像処理方法
JP4720529B2 (ja) 2005-03-10 2011-07-13 富士ゼロックス株式会社 画像処理装置、画像形成装置、画像処理方法及びプログラム
JP4811133B2 (ja) * 2005-07-01 2011-11-09 富士ゼロックス株式会社 画像形成装置及び画像処理装置
JP4847398B2 (ja) * 2007-06-06 2011-12-28 キヤノン株式会社 画像処理装置およびその方法
JP4528846B2 (ja) 2008-04-21 2010-08-25 シャープ株式会社 画像圧縮方法、画像圧縮装置、画像処理装置、画像形成装置、コンピュータプログラム及び記録媒体
JP5976477B2 (ja) * 2012-09-21 2016-08-23 株式会社東芝 文字読取装置、及び紙葉類処理装置
JP6233142B2 (ja) * 2014-03-28 2017-11-22 ブラザー工業株式会社 画像処理装置、および、コンピュータプログラム
JP6372409B2 (ja) * 2015-03-31 2018-08-15 ブラザー工業株式会社 画像処理プログラム、画像処理装置、及び画像処理方法

Also Published As

Publication number Publication date
JPH09289586A (ja) 1997-11-04

Similar Documents

Publication Publication Date Title
US7623712B2 (en) Image processing method and apparatus
US6389162B2 (en) Image processing apparatus and method and medium
JP5302768B2 (ja) 画像処理装置及び画像処理方法
US11854244B2 (en) Labeling techniques for a modified panoptic labeling neural network
EP0724229B1 (en) Image processing apparatus and method
CN101520901B (zh) 图像处理装置和图像处理方法
KR100937543B1 (ko) 세그먼트된 계층화 이미지 시스템, 사진 복사기, 문서 스캐너, 광학 문자 인식 시스템, pda, 팩스 장치, 디지털 카메라, 디지털 비디오 카메라, 비디오 게임 시스템, 마스크의 생성 방법, 마스크 분리기 컴포넌트, 문서 이미지 압축 시스템, 데이터 패킷 및 컴퓨터 판독가능 매체
JP4242532B2 (ja) デジタル画像データ区分方法
US8483499B2 (en) Image processing apparatus, image processing method, computer-readable medium and computer data signal
JP3745069B2 (ja) 画像処理装置及びその方法
Li et al. Globally and locally semantic colorization via exemplar-based broad-GAN
JPH11345339A (ja) 画像セグメンテ―ション方法及び装置及びシステム及びコンピュ―タ可読メモリ
JP2006197178A (ja) 画像処理装置および画像処理方法およびプログラムおよび記憶媒体
CN113902613A (zh) 一种基于三支聚类语义分割的图像风格迁移系统及其方法
US7609881B2 (en) Device and method for image processing as well as image processing computer program
Ishchenko et al. Elaboration of structural representation of regions of scanned document images for MRC model
WO2005046213A1 (en) Document image encoding/decoding
KR20180035746A (ko) 문서 이미지를 최적화하는 방법, 장치 및 컴퓨터-판독가능 매체
JP3115725B2 (ja) 背景付き文字列からの文字列画像の抽出処理方式
Birari et al. Constraint and Descriptor Based Image Retrieval through Sketches with Data Retrieval using Reversible Data Hiding
JP4383187B2 (ja) 画像処理装置、画像処理用プログラム及び記憶媒体
KR101826039B1 (ko) 문서 이미지를 최적화하는 방법, 장치 및 컴퓨터-판독가능 매체
JPH08186706A (ja) 画像処理装置およびその方法
JP2005303506A (ja) 画像処理装置、画像処理方法、画像処理用プログラム及び記憶媒体
CN115730032A (zh) 自适应文档理解

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees