光学的情報読取装置及び画像データ取込方法
【課題】専用の素子を用いることなくユーザの用途に柔軟に対応し、撮像画像を階調変換することができる光学的情報読取装置及び画像データ取込方法を提供する。
【解決手段】イメージセンサ1によって撮像された画像をCPU2の階調変換手段により階調変換を施して内部メモリ20に保持し、内部メモリ20からメモリ3に転送している。この変換規則を規定した階調変換テーブル23はユーザが任意に選択することができ、柔軟な変換規則を有する光学的情報読取装置とすることができる。
【解決手段】イメージセンサ1によって撮像された画像をCPU2の階調変換手段により階調変換を施して内部メモリ20に保持し、内部メモリ20からメモリ3に転送している。この変換規則を規定した階調変換テーブル23はユーザが任意に選択することができ、柔軟な変換規則を有する光学的情報読取装置とすることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は2次元コード等を光学的に読み取る光学的情報読取技術に係り、特に2次元撮像素子を用いた光学的情報読取装置及び画像データ取込方法に関する。
【背景技術】
【0002】
例えば、1次元コードや2次元コード等の光学的情報を撮像し、その撮像した光学的情報をデコードすることにより光学的情報の読み取りを行うイメージセンシング方式の光学的情報読取装置が知られている。このイメージセンシング方式の光学的情報読取装置は、画像データをフレーム毎に解析して復号化が行われる。光学的情報読取装置においては、特に製造コストや消費電力の低減という観点から、撮像部にCMOSイメージセンサを用いた光学的情報読取装置が普及する傾向にある。一般にCMOSイメージセンサでは、撮像画像における高解像度化の要求によって情報量の大容量化が求められている。このためデータ出力が10ビットであるものが主流になりつつある。一方光学的情報読取装置本体においては、製造コストの削減や小型化、画像処理の高速化という観点から処理能力の向上及びメモリ容量の拡大には限界がある。またQRコード等の2次元コードを認識するためには、8ビットの画像データで十分である場合が多い。そこでCMOSイメージセンサからの出力データをあらかじめ定められた規則に則り、ビット数がより小さいデジタルデータに変換して画像データの取込みを行う光学的情報読取装置が提案されている。特許文献1には上位ビットに応じて10ビットのうちの8ビットのみを画像データとして取込むデータ取込装置が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−6569号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の光学的情報読取装置では、CPU前段の専用回路でCMOSイメージセンサによる画像データの各画素の出力のうち、一部のビットのデータ出力を落し、残りのビットのデータ出力を有効な画像データとして取込みが可能である。しかし専用のCPLDやゲートアレー素子が必要となり、変換規則の変更が容易ではない。そのため撮像画像に対する解析の用途・精度を考慮してビット数の削減手法の変更ができないという欠点があった。
【0005】
本発明では上述した問題点に鑑みてなされたもので、専用の素子を用いることなくユーザの用途に柔軟に対応し、撮像画像に対する解析精度を考慮してビット数を削減して取込むことができる光学的情報読取装置及び画像データ取込方法を提供するものである。
【課題を解決するための手段】
【0006】
この課題を解決するために、本発明の光学的情報読取装置は、読取対象を撮像する2次元撮像素子を有する撮像部と、CPUを有し、前記撮像部で撮像された読取対象をメモリに保持するときに画像処理してデコードする制御部と、前記撮像部で撮像された読取対象の画像を保持するメモリと、を有する光学的情報読取装置であって、前記制御部は、前記撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データを前記メモリに保持する階調変換手段と、前記メモリに格納された階調変換後の画像データを読出し、デコードする演算手段と、を具備するものである。
【0007】
ここで前記制御部のCPUは、内部メモリを有し、前記内部メモリは、撮像部より得られる行単位の画像データを保持する受信バッファと、前記メモリに転送する前の階調変換後の行単位の画像データを保持する送信バッファと、を有するようにしてもよい。
【0008】
ここで前記内部メモリはSRAMであり、前記受信バッファは少なくとも2つの受信バッファを有し、前記送信バッファは少なくとも2つの送信バッファを有し、前記階調変換手段は、前記撮像部で撮像された画像信号を行単位で前記2つの受信バッファに交互に保持するデータ受信処理、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送する階調変換処理、及び前記2つの送信バッファより交互に前記メモリに転送する転送処理を並列に実行するようにしてもよい。
【0009】
ここで前記撮像部は、L列M行の画像データを出力するイメージセンサを有し、前記階調変換手段は、画像処理に必要なi行からi+N行(1≦i<N≦L)までのデータを取込んで前記受信バッファに保持し、前記送信バッファの変換後のデータのうちjからj+K(1≦j<K≦M)までの列の画像データを送信バッファより前記メモリに出力するようにしてもよい。この場合に不要な画像データをメモリに保持する必要がなく、このためメモリの容量を削減することができ、ハードウェア資源を有効に活用することができる。
【0010】
ここで前記制御部は、取込んだ画像に対してフィルタ処理の少なくとも一部もしくは全部を行って前記送信バッファに保持するようにしてもよい。
【0011】
この課題を解決するために、本発明の光学的情報読取装置のデータ取込方法は、撮像された画像信号を受信して前記画像信号を行単位で前記2つの受信バッファに交互に保持し、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送し、及び送信バッファより前記メモリへの転送する処理を並列に実行するものである。
【0012】
ここで前記制御部は、受信バッファに保持された画像データのうち夫々異なった階調変換処理を施し、前記送信バッファに保持し、複数の画像データを前記メモリに転送するものであり、前記演算手段は、前記メモリに保持されている複数の画素データに基づいてデコード処理を行うようにしてもよい。変換後の複数の画像データをメモリに保持するため、デコードの失敗の確率を少なくすることができる。ここで複数の画像データは、メモリの連続した領域に配置されるようにしてもよい。この場合に1枚の画像でデータのデコード処理が完了しなくても他の画像データのデータを用いてデコードすることができるため、待機時間を短縮することができるという効果が得られる。
【発明の効果】
【0013】
このような特徴を有する本発明によれば、ユーザが選択した変換規則で画像を階調変換してメモリに保持することができる。従ってユーザの用途に柔軟に対応した階調変換が可能となり、専用のハードウェアも不要となる。
【図面の簡単な説明】
【0014】
【図1】図1は本発明の第1の実施の形態による2次元コードリーダの全体構成を示すブロック図である。
【図2】図2は本実施の形態によるCPU内部のSRAMとデータの移動を示す図である。
【図3】図3は本実施の形態によるSRAMとイメージセンサのデータ及びメモリへの転送の詳細を示す図である。
【図4】図4はビット取込処理、階調変換処理、及びデータのメモリへの転送処理を示すタイムチャートである。
【図5A】図5Aは第1の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図5B】図5Bは第2の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図5C】図5Cは第3の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図6A】図6Aは本実施の形態による10ビットの画像を上位8ビットの画像に変換した画像データの一例を示す図である。
【図6B】図6Bは本実施の形態による10ビットの画像を中間8ビットの画像に変換した画像データの一例を示す図である。
【図6C】図6Cは本実施の形態による10ビットの画像を下位8ビットの画像に変換した画像データの一例を示す図である。
【図7】図7はレーザマーカで記録したQRコードの一例を示す図である。
【図8】図8はオリジナルのQRコードの一例を示す図である。
【図9】図9は本実施の形態による動作開始後の処理を示す図である。
【図10】図10は本実施の形態による動作開始後のデータ取込処理を示すフローチャートである。
【図11】図11はイメージセンサからの出力とCPUへの処理及びメモリへの取込画像を示す図である。
【図12】図12はイメージセンサからの出力の画像及びCPUでの処理内容、メモリへの画像を示す図である。
【図13】図13は本発明の第3の実施の形態によるデータの取込処理を示す概略図である。
【図14】図14は本発明の第3の実施の形態によるデータの取込処理を示す概略図である。
【図15】図15は従来例によるデータ取込後のデコード処理を示すタイムチャートである。
【図16】図16は本実施の形態によるデータ取込後のデコード処理を示すタイムチャートである。
【発明を実施するための形態】
【0015】
図1は本発明の第1の実施の形態による2次元撮像素子を有するコードリーダの構成を示すブロック図である。この実施の形態によるコードリーダは、2次元コード等が印字された商品や製造物の搬送ラインに隣接して設置され、2次元コード等に記録された情報を読み取るものである。図1においてイメージセンサ1はCCD等の2次元撮像素子であり、搬送されてきた物体の2次元コード等を撮像する撮像部である。ここでイメージセンサ1は、各画素毎に例えば10ビットの階調を有する画像データを出力する。一方QRコード等の2次元コードを認識するためには、8ビットの画像データで十分である。そこで本実施の形態では、イメージセンサ1からの画像出力をCPU2の内部で10ビットから8ビットにデータを変換した後、メモリ3に取込むようにしている。通信制御部4は図示しない上位ホストからのコマンドを受け取り、デコード結果を転送するものである。又ROM5には10ビットの階調を有する画像データを8ビットの画像データに変換するための変換ルールのファイルを少なくとも1つ保持しており、複数の場合ユーザが選択できるようにしている。
【0016】
CPU2は撮像部で撮像された読取対象をメモリに保持するときに画像処理すると共に、メモリに保持された画像を用いてデコードを実行する制御部であり、その内部構成について説明する。CPU2内にはデータ転送のためのDMAコントローラ10、SRAM20及び演算器30が設けられている。SRAM20はデータを一時的に保持する内部メモリである。演算器30はメモリ3に保持された8ビットの1画面分の2次元コードの画像に基づいて2次元コードをデコードする演算手段である。SRAM20内には、転送されてきた1行分の画像データを一時保持する受信バッファ21、階調変換後の1行分の画像データを送信するまで保持する送信バッファ22、及び10ビットのデータを8ビットに変換する少なくとも1つの階調変換テーブル23の各領域を有している。CPU2はSRAM20を用いて撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データをメモリに保持する階調変換手段の機能を達成している。
【0017】
図2は最も基本的なイメージセンサ1とCPU2内の内部のSRAM及びメモリ3の間のデータの移動を示す図である。データを取込む前にユーザはあらかじめROM5の変換ルールファイルを選択して、CPU2のSRAM20に階調変換テーブル23として保持している。図2に示すようにイメージセンサ1は2次元コードを含む画像を撮像した後、1画素当り10ビットの画像データを1行目より順次行単位で転送してくるものとする。CPU2内部では受信バッファ21にこのデータを取込む。そしてCPUのSRAM20内で階調変換テーブル23を用いて受信バッファ21に保持された10ビットのデータを8ビットのデータに変換し、送信バッファ22に保持する。そして送信バッファ22からメモリ3にデータを転送する。この処理を並列的に行うことによって画像取込時間を短縮している。
【0018】
次に図3はCPU2内部のSRAM20とイメージセンサ1からのデータ及びメモリ3に転送するデータの詳細を示す。この実施の形態に示すようにCPU2内部のSRAM20には10ビットの1行分のデータを保持する受信バッファ21a,21b及び8ビットの1行分のデータを保持する送信バッファ22a,22bを有している。
【0019】
図4はデータ取込、データ変換及びデータ転送を並列に実行する状態を示すタイムチャートである。本図において期間T1には、イメージセンサ1から得られた10ビットの1行目のデータを受信バッファ21aに保持する。次に期間T2にはイメージセンサ1より2行目の10ビットのデータを受信し、受信バッファ21bに保持する。この期間T2には、同時に受信バッファ21aに保持されている1行目の10ビットの画像データを後述する規則に従って8ビットの画像に変換して、送信バッファ22aに順次転送していく。次の期間T3にはイメージセンサ1より得られる3行目の画像データを受信バッファ21aに取込み、更に受信バッファ21bに保持されている2行目のデータを8ビットの画像に変換して送信バッファ22bに転送する。このとき同時に送信バッファ22aの1行目の変換後のデータをメモリ3に転送する。期間T4にはイメージセンサ1より得られる4行目の画像データを受信バッファ21bに取込み、更に受信バッファ21aに保持されている3行目のデータを8ビットの画像に変換して送信バッファ22aに転送する。このとき同時に送信バッファ22bの2行目の変換後のデータをメモリ3に転送する。以降の期間T5・・・TN,TN+1にも行番号をずらせて同様の処理を繰り返す。このように2つの受信バッファ21a,21b及び2つの送信バッファ22a,22bを備えることにより、データ取込、データ変換及びデータ転送処理を並列的に実行することができる。
【0020】
次にこの10ビットの画像データを8ビットの画像データに変換する3つの規則について説明する。図5A〜図5Cはイメージセンサからの10ビットの出力と8ビットの変換後の出力の関係を示す図である。第1の方法はイメージセンサの10ビットのうち下位2ビットを削除し、上位8ビットのみを変換後の8ビットの画像データとするものである。図5A(a)において左方に示す0〜1023はイメージセンサ1の出力、0〜255は変換後の8ビットの出力を示している。この場合には、図5A(b)のグラフに示すように1024階調の変化が256階調に直線的に変化することとなる。
【0021】
第2の方法は、10ビットのデータのうち上位の2ビットを削除し、下位8ビットを変換後の8ビットの画像データとするものである。この場合には、図5B(b)のグラフに示すように入力の0〜255階調までは直線的に変化するが、255で飽和し、それ以降は最高レベルを保持するものとなる。
【0022】
次に第3の方法は、入力となる10ビットのデータを対数項を含む関数を用いて8ビットのデータに変化させる略対数変換処理である。この場合には、例えば図5C(b)のグラフに示すように1024階調の変化が256階調に曲線状に変化するものとなる。この変換手法では係数を選択することにより種々の曲線とすることができる。
【0023】
上記の3つの方法以外に中間の8ビットを選択する方法が考えられる。本実施の形態ではこれらのいずれかの変換のための入出力をテーブルとしてあらかじめ階調変換テーブル23に保持しておく。こうすれば変換テーブルの変更のみでハードウェアを変更せずに変換方法を変更することができる。変換方法は後述するように、ユーザが任意に選択できるようにしている。
【0024】
図6Aは10ビットの画像データのうち、上位8ビットを用いて8ビットの画像データに変換した4つの画像の例を示す図、図6Bは10ビットの画像データのうち中間の8ビットにより構成された4つの画像の例を示す図、図6Cは10ビットの画像データのうち下位8ビットを用いて8ビットの画像データに変換した4つの画像の例を示す図である。又対数変換画像については上位8ビットの暗い部分と下位8ビットの明るい部分とを構成したような画像となる。
【0025】
このようにビット選択によって、メモリに保持する画像の特徴(明るさ、階調変化)を変化させることができ、メモリに格納された画像を用いてCPU2で実行するデコード可否にも影響を及ぼす。例えば、図6A〜図6Cで示す一番左のQRコードは、図6Aでは暗すぎるため、デコードが困難となるが、図6Cであればデコードが容易となる。一方、一番右のQRコードでは、図6Cでは明るすぎて、デコード困難となるが、図6Aであればデコード容易となる。すなわち、階調変化はデコード処理の際の白黒判別のし易さに影響を及ぼし、明るさは各白黒ドットやセルの膨張収縮によるコード情報の誤認識にもつながる。コードリーダ内には撮像条件を保持するための領域がバンクパラメータとして設けられており、2次元コード等の撮像条件と共に、ビット選択条件をバンクパラメータに設定する。当該パラメータに基づき画像を取り込むことにより、デコード成功率の向上につながる。
【0026】
次にフィルタ処理について説明する。10ビットのデータを8ビットのデータに変換する際に、同時にフィルタ処理を行うようにしてもよい。フィルタ処理は例えば膨張フィルタ処理や収縮フィルタ処理が考えられる。本実施の形態では1行単位で階調変換しているため、膨張フィルタ処理や収縮フィルタ処理についても行単位で行うことが可能となる。この場合の膨張フィルタ処理とは、注目画素の輝度データを隣接する2つの画素と注目画素の3つの中で最大輝度のデータに置き換える処理をいう。又収縮フィルタ処理とは、注目画素の輝度データを隣接する2つの画素と注目画素の3つの中で最小輝度のデータに置き換える処理をいう。フィルタ処理は例えばレーザマーカで記録した場合など図7に示すようにQRコードが点線となっていれば、そのままではデコードできない。一方元のQRコードの場合には図8に示すようにQRコードが直線になっており、デコードすることができる。このような場合フィルタ処理で画像を適宜変換してデコードできるようにする。
【0027】
次に本実施の形態による画像の取込処理の動作について説明する。図9は動作を開始した直後の処理を示すフローチャートである。この処理を開始すると、まずステップS1においてユーザに変換規則の選択を促す。次にステップS2においてユーザにフィルタの要否、種類の選択を促す。こうして変換規則とフィルタが選択されると、変換規則に基づいて入力データを出力データに変換するテーブルを作成する(ステップS3)。そしてこのテーブルをCPU2内のSRAM20に階調変換テーブル23として書込んでおく(ステップS4)。
【0028】
次にデータの取込み後の処理について図10を用いて説明する。処理を開始すると、ステップS11においてイメージセンサ1から1行分のデータをSRAMの受信バッファ21に取得する。そしてステップS12において1行分のデータを階調変換する。次いでステップS13において画像データのフィルタ処理が必要かどうかを判別し、必要であれば1行分のデータのフィルタ処理を行う(ステップS14)。そしてステップS15において処理後のデータを送信バッファ22に保持する。ステップS16において1行分のデータをSRAM20からメモリ3に転送し、1画像全体の取込処理を終了したかどうかを判別する(S17)。処理が終了していなければステップS11に戻って同様の処理を繰り返す。処理が終了した場合には取込処理を終了する。尚ステップS12の処理はステップS15の直前であってもよい。
【0029】
こうすればデータの階調変換処理等のための専用チップが不要となり、低コスト化を図ることができる。又階調変換のデータ処理はソフトウェア処理で実行しているため、上位8ビットの選択、下位8ビットの選択、又上下の1ビットを除く中間の8ビットの選択やログ変換等、自由な変換規則を任意に選択することができる。又フィルタ処理を階調変換とほぼ並列的に実行することができる。ここでフィルタ処理は不要であればステップS2のフィルタ選択やステップS13,S14を削除するようにしてもよい。
【0030】
次に本実施の形態の変形例について説明する。前述した第1の実施の形態のフィルタ処理では、行単位でフィルタ処理を行っていた。これに代えて隣接する3行単位で膨張フィルタ処理や収縮フィルタ処理を行うこともできる。この場合の膨張フィルタ処理とは、3×3画素の中心画素の輝度を隣接する周囲の9画素の中での最大輝度のデータに置き換える処理をいう。又収縮フィルタ処理とは、3×3画素の中心画素の輝度を周囲の9画素の中で最小輝度のデータに置き換える処理をいう。この場合には10ビットの画像データ受信用のバッファとして3行分を2組、即ち6つの受信バッファが必要であり、同様に送信バッファとしても3行分のバッファを2組、即ち6つの送信バッファが必要となる。このように行単位でのフィルタ処理を階調変換と同時に行うようにしておけば、フィルタ処理を短時間で行うことができる。又3×3画素のフィルタ処理を行う場合であっても、行単位でメモリ3に一旦保持した後、メモリ3から読出して改めてフィルタ処理を行うようにしてもよい。
【0031】
次に本発明の第2の実施の形態について説明する。本実施の形態はCPU2のSRAMへの取込画像の領域制限を行うものであり、基本的な構成は図1と同様である。イメージセンサ1から出力される画像データのうち、必要な領域は全領域のうちの一部である場合がある。このような場合には、不要な領域はメモリ3に取込む必要はなく、必要な領域のみを取込めば足りる。CCDやCMOSセンサ等の撮像素子には、露出時間やハードウェアのタイミングがセンサから出力する列数に依存して変化するものがある。そのため列単位で取込みの領域を制限した場合には、CCD等の画像撮像素子の露出時間のタイミングやハードウェアのタイミング設計が複雑となる。そこで本実施の形態では、行単位で必要な行のみを前述したように階調変換してメモリに取込むようにしている。
【0032】
イメージセンサ1はL行M列の10ビットのデータを出力するものとする。図11(a)はイメージセンサが出力する画像、図12(a)はこれに対応する画像データを示している。このL行M列の画像データ40のうち図11(a)に示すように、一部の領域のみに2次元コードが撮像されていたとすると、この領域を注目領域(ROI:region of interest)41とする。注目領域41を例えばi〜i+N行、j〜j+K列(1≦i<N≦L,1≦j<K≦M)とすると、この領域の画像情報のみがあれば2次元コードをデコードするには十分である。
【0033】
従ってCPU2は図11(b)に示すように2次元コードデータの処理に必要な行、即ちハッチングを施していないi〜i+N行の全ての列のデータを受信バッファ21a,21bに交互に保持する。そしてこれらの行の10ビットを8ビットのデータに変換し、順次送信バッファ22a,22bに交互に保持する。このうちj〜j+K列目のデータのみをメモリ3に転送する。図11(c)はメモリ3上に構築された画像、図12(c)はその画像データを示している。
【0034】
例えばイメージセンサの画像データが480行752列の10ビット画像データである場合に、そのうち必要な領域は101行〜200行、101列〜200列とする。このとき101行〜200行の画像データのみをCPU2に取込み、10ビットから8ビットに変換してメモリ3に転送する。そして階調変換した101行〜200行のうち101列目から200列目までのデータをメモリ3に転送するようにすれば、メモリには100列100行分の8ビット画像データを得ることができる。これによって図12(c)に示すようにメモリ3に保持する必要があるデータを大幅に削減することができる。このような処理は2次元コードを対象とし、2次元コードが撮像された領域のみをメモリに取込む際に極めて有用となる。
【0035】
次に本発明の第3の実施の形態について説明する。この実施の形態では複数の変換規則を用いて階調変換された複数の画像データを保持するものであり、基本的な構成は図1と同様である。階調変換された1枚の画像データをメモリに保持した場合には、保持した後にメモリより読出し、演算器を用いてデコード処理が行われる。しかしイメージセンサの露出時間やゲイン設定が十分でなければ、再度撮像してメモリに撮像するか、階調変換規則を変更し、メモリに転送する必要がある。従って環境の変化によってデコードできない場合に、複数回の処理が必要となって時間がかかるという欠点があった。この実施の形態では複数の画像を同時に保持しておくものとする。図13はCPU2の構造とこの処理のイメージセンサからメモリへのデータ転送を示す図である。図13においてCPU2は第1の実施の形態のDMAコントローラ10,SRAM20及び演算器30を有している。この実施の形態においてSRAM20には受信バッファ21と送信バッファ25,26及び複数の階調変換テーブル23a,23bが設けられる。そして図示のようにイメージセンサ1からの出力をCPU2を介して10ビットデータのままで一旦メモリ3に保持する。その後CPU2はこれを読出し、受信バッファ21に保持する。そして異なる階調変換テーブル23a,23bを用いて階調変換し、2つの8ビットの画像データA,Bを作成して再びメモリ3に書き込む。このとき2つの8ビットの画像データA,Bは夫々異なった変換規則で変換された画像データである。
【0036】
こうして8ビットの2つの画像データを図2に示すように連続したメモリ領域に配置することで、まとめて1つの大きな画像データとして取り扱えば、後にフィルタ処理を行う場合にこれらをまとめて処理することができる。ここで2つの画像データA,Bは夫々異なった変換規則を用いるものとする。例えば前述したように、10ビットのうち上位8ビットの選択、10ビット中の中間の8ビットの選択、10ビット中の下位8ビットの選択、ログ変換などから任意の階調変換規則を選択して2つの画像データを生成するようにしてもよい。こうすれば1回の画像データの取込みで明るさなどの異なる8ビットの2枚の画像データをメモリ3の連続した領域に保持することができる。
【0037】
又これに代えて図14に示すようにCPUの処理能力に余裕があれば、10ビットの画像データを一旦CPU2のSRAM20に保持し、このデータを用いて8ビットの画像データA,Bを夫々作成し、メモリ3に転送してもよい。このバッファには10ビットの画像データを保持するための受信バッファ21a,21bと8ビットの画像データを保持するための送信バッファ25a,25b,26a,26bを用いる。これによりデータの転送と2つの画像データへの階調変換及びデータ転送を並列して行うことができる。
【0038】
ここで従来例と本実施の形態のデコードの時間を比較して説明する。例えばある条件で撮像した画像をデコードし、デコードに成功しない場合はタイムアウトし、次の撮像条件で撮像してこれをデコードするまで繰り返すものとする。一般的に撮像に要する時間を30ms、デコードに成功したときのデコードにかかる時間を20ms、デコードが成功しないときに処理を打ち切るタイムアウト時間を成功時間の5倍と仮定し100msとする。そして撮像条件、例えばゲインを変化させて条件A,B,Cとし、これらの条件A,B,Cで順にデコードするものとする。この場合、図15(a)に示すように条件Aで撮像しデコードしたが、デコードに成功せず、次いで条件Bで撮像しデコードしたが、デコードに成功せずいずれもタイムアウトし、条件Cで撮像してデコードが成功したとする。この場合は所要時間は310msとなる。次に例えば図15(b)に示すように撮像とデコードを繰り返し2回目にデコードに成功した場合には、所要時間は例えば180msとなる。又撮像とデコードを繰り返して1回目にデコードに成功した場合は、例えば図15(c)に示すように50msとなる。以上の3つの条件でデコードに成功する確率が等しいとすると、この場合の読取時間の期待値は180msとなる。
【0039】
一方本実施の形態において3枚の画像、例えば10ビットの上位8ビットの画像データA、上下1ビットを除く中位8ビットの画像データB及び下位8ビットの画像データCを作成し、メモリの連続した領域に配置し、3枚分の大きさの1枚の連結画像を生成してからデコード処理を行う場合について説明する。この場合10ビット画像の取得にかかる時間を30ms、10ビット画像をメモリ上の3つの画像データに展開するに要する時間を15ms、デコードが成功したときのデコードにかかる時間は画像のデータ量に比例する傾向があるので従来例に比べ3倍の60msとし、デコードが成功しないときに処理を打ち切るタイムアウト時間を成功時間の5倍と仮定し300msとする。ここで10ビットの画像を取り込んで3つの8ビット画像に展開し、通常画像をデコードした画像Cでデコードが成功した場合には、図16(a)に示すように105msを要する。同様にして画像Bでデコードに成功した場合には、図16(b)に示すように105msを要する。画像Aをデコードして成功した場合には図16(c)に示すように105msを要する。3倍の画像データを処理するのでデコード時間は従来例に比べ3倍の60msとなるが、A,B,Cのどの部分で成功しても読取時間は105msとなり、従来例で示した期待値よりも短く、且つばらつきがないという効果が得られる。
【0040】
尚この実施の形態では2種類の相異なる画像データをメモリに保持するようにしているが、3種類、又はそれ以上の画像データをメモリ3の連続した領域に保持するようにしてもよい。
【0041】
上述した各実施の形態では、階調変換テーブルを用いて10ビットを8ビットに変換するようにしているが、ビット数はこれに限定されるものではない。又階調変換テーブルに限らず、階調変換規則を数式として保持するものであってもよい。
【0042】
尚この実施の形態では2次元コードリーダを例にして説明したが、本発明による光学的情報読取装置は2次元コードリーダに限らず、2次元の画像情報を読取る種々の光学的情報読取装置にも適用することができる。
【産業上の利用可能性】
【0043】
本発明は2次元コード等を光学的に読み取る光学的情報読取装置において、ユーザの用途に対応しユーザが選択した変換規則で画像を階調変換してメモリに保持することができ、種々の使用状態での光学的情報読取装置に有用である。
【符号の説明】
【0044】
1 イメージセンサ
2 CPU
3 メモリ
4 通信制御部
10 DMAコントローラ
20 SRAM
21,21a,21b 受信バッファ
22,22a,22b,25,25a,25b,26,26a,26b 送信バッファ
23,23a,23b 階調変換テーブル
30 演算器
40 画像データ
41 注目領域
【技術分野】
【0001】
本発明は2次元コード等を光学的に読み取る光学的情報読取技術に係り、特に2次元撮像素子を用いた光学的情報読取装置及び画像データ取込方法に関する。
【背景技術】
【0002】
例えば、1次元コードや2次元コード等の光学的情報を撮像し、その撮像した光学的情報をデコードすることにより光学的情報の読み取りを行うイメージセンシング方式の光学的情報読取装置が知られている。このイメージセンシング方式の光学的情報読取装置は、画像データをフレーム毎に解析して復号化が行われる。光学的情報読取装置においては、特に製造コストや消費電力の低減という観点から、撮像部にCMOSイメージセンサを用いた光学的情報読取装置が普及する傾向にある。一般にCMOSイメージセンサでは、撮像画像における高解像度化の要求によって情報量の大容量化が求められている。このためデータ出力が10ビットであるものが主流になりつつある。一方光学的情報読取装置本体においては、製造コストの削減や小型化、画像処理の高速化という観点から処理能力の向上及びメモリ容量の拡大には限界がある。またQRコード等の2次元コードを認識するためには、8ビットの画像データで十分である場合が多い。そこでCMOSイメージセンサからの出力データをあらかじめ定められた規則に則り、ビット数がより小さいデジタルデータに変換して画像データの取込みを行う光学的情報読取装置が提案されている。特許文献1には上位ビットに応じて10ビットのうちの8ビットのみを画像データとして取込むデータ取込装置が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−6569号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の光学的情報読取装置では、CPU前段の専用回路でCMOSイメージセンサによる画像データの各画素の出力のうち、一部のビットのデータ出力を落し、残りのビットのデータ出力を有効な画像データとして取込みが可能である。しかし専用のCPLDやゲートアレー素子が必要となり、変換規則の変更が容易ではない。そのため撮像画像に対する解析の用途・精度を考慮してビット数の削減手法の変更ができないという欠点があった。
【0005】
本発明では上述した問題点に鑑みてなされたもので、専用の素子を用いることなくユーザの用途に柔軟に対応し、撮像画像に対する解析精度を考慮してビット数を削減して取込むことができる光学的情報読取装置及び画像データ取込方法を提供するものである。
【課題を解決するための手段】
【0006】
この課題を解決するために、本発明の光学的情報読取装置は、読取対象を撮像する2次元撮像素子を有する撮像部と、CPUを有し、前記撮像部で撮像された読取対象をメモリに保持するときに画像処理してデコードする制御部と、前記撮像部で撮像された読取対象の画像を保持するメモリと、を有する光学的情報読取装置であって、前記制御部は、前記撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データを前記メモリに保持する階調変換手段と、前記メモリに格納された階調変換後の画像データを読出し、デコードする演算手段と、を具備するものである。
【0007】
ここで前記制御部のCPUは、内部メモリを有し、前記内部メモリは、撮像部より得られる行単位の画像データを保持する受信バッファと、前記メモリに転送する前の階調変換後の行単位の画像データを保持する送信バッファと、を有するようにしてもよい。
【0008】
ここで前記内部メモリはSRAMであり、前記受信バッファは少なくとも2つの受信バッファを有し、前記送信バッファは少なくとも2つの送信バッファを有し、前記階調変換手段は、前記撮像部で撮像された画像信号を行単位で前記2つの受信バッファに交互に保持するデータ受信処理、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送する階調変換処理、及び前記2つの送信バッファより交互に前記メモリに転送する転送処理を並列に実行するようにしてもよい。
【0009】
ここで前記撮像部は、L列M行の画像データを出力するイメージセンサを有し、前記階調変換手段は、画像処理に必要なi行からi+N行(1≦i<N≦L)までのデータを取込んで前記受信バッファに保持し、前記送信バッファの変換後のデータのうちjからj+K(1≦j<K≦M)までの列の画像データを送信バッファより前記メモリに出力するようにしてもよい。この場合に不要な画像データをメモリに保持する必要がなく、このためメモリの容量を削減することができ、ハードウェア資源を有効に活用することができる。
【0010】
ここで前記制御部は、取込んだ画像に対してフィルタ処理の少なくとも一部もしくは全部を行って前記送信バッファに保持するようにしてもよい。
【0011】
この課題を解決するために、本発明の光学的情報読取装置のデータ取込方法は、撮像された画像信号を受信して前記画像信号を行単位で前記2つの受信バッファに交互に保持し、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送し、及び送信バッファより前記メモリへの転送する処理を並列に実行するものである。
【0012】
ここで前記制御部は、受信バッファに保持された画像データのうち夫々異なった階調変換処理を施し、前記送信バッファに保持し、複数の画像データを前記メモリに転送するものであり、前記演算手段は、前記メモリに保持されている複数の画素データに基づいてデコード処理を行うようにしてもよい。変換後の複数の画像データをメモリに保持するため、デコードの失敗の確率を少なくすることができる。ここで複数の画像データは、メモリの連続した領域に配置されるようにしてもよい。この場合に1枚の画像でデータのデコード処理が完了しなくても他の画像データのデータを用いてデコードすることができるため、待機時間を短縮することができるという効果が得られる。
【発明の効果】
【0013】
このような特徴を有する本発明によれば、ユーザが選択した変換規則で画像を階調変換してメモリに保持することができる。従ってユーザの用途に柔軟に対応した階調変換が可能となり、専用のハードウェアも不要となる。
【図面の簡単な説明】
【0014】
【図1】図1は本発明の第1の実施の形態による2次元コードリーダの全体構成を示すブロック図である。
【図2】図2は本実施の形態によるCPU内部のSRAMとデータの移動を示す図である。
【図3】図3は本実施の形態によるSRAMとイメージセンサのデータ及びメモリへの転送の詳細を示す図である。
【図4】図4はビット取込処理、階調変換処理、及びデータのメモリへの転送処理を示すタイムチャートである。
【図5A】図5Aは第1の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図5B】図5Bは第2の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図5C】図5Cは第3の方法による10ビットのデータの8ビットへの変換出力を示すグラフである。
【図6A】図6Aは本実施の形態による10ビットの画像を上位8ビットの画像に変換した画像データの一例を示す図である。
【図6B】図6Bは本実施の形態による10ビットの画像を中間8ビットの画像に変換した画像データの一例を示す図である。
【図6C】図6Cは本実施の形態による10ビットの画像を下位8ビットの画像に変換した画像データの一例を示す図である。
【図7】図7はレーザマーカで記録したQRコードの一例を示す図である。
【図8】図8はオリジナルのQRコードの一例を示す図である。
【図9】図9は本実施の形態による動作開始後の処理を示す図である。
【図10】図10は本実施の形態による動作開始後のデータ取込処理を示すフローチャートである。
【図11】図11はイメージセンサからの出力とCPUへの処理及びメモリへの取込画像を示す図である。
【図12】図12はイメージセンサからの出力の画像及びCPUでの処理内容、メモリへの画像を示す図である。
【図13】図13は本発明の第3の実施の形態によるデータの取込処理を示す概略図である。
【図14】図14は本発明の第3の実施の形態によるデータの取込処理を示す概略図である。
【図15】図15は従来例によるデータ取込後のデコード処理を示すタイムチャートである。
【図16】図16は本実施の形態によるデータ取込後のデコード処理を示すタイムチャートである。
【発明を実施するための形態】
【0015】
図1は本発明の第1の実施の形態による2次元撮像素子を有するコードリーダの構成を示すブロック図である。この実施の形態によるコードリーダは、2次元コード等が印字された商品や製造物の搬送ラインに隣接して設置され、2次元コード等に記録された情報を読み取るものである。図1においてイメージセンサ1はCCD等の2次元撮像素子であり、搬送されてきた物体の2次元コード等を撮像する撮像部である。ここでイメージセンサ1は、各画素毎に例えば10ビットの階調を有する画像データを出力する。一方QRコード等の2次元コードを認識するためには、8ビットの画像データで十分である。そこで本実施の形態では、イメージセンサ1からの画像出力をCPU2の内部で10ビットから8ビットにデータを変換した後、メモリ3に取込むようにしている。通信制御部4は図示しない上位ホストからのコマンドを受け取り、デコード結果を転送するものである。又ROM5には10ビットの階調を有する画像データを8ビットの画像データに変換するための変換ルールのファイルを少なくとも1つ保持しており、複数の場合ユーザが選択できるようにしている。
【0016】
CPU2は撮像部で撮像された読取対象をメモリに保持するときに画像処理すると共に、メモリに保持された画像を用いてデコードを実行する制御部であり、その内部構成について説明する。CPU2内にはデータ転送のためのDMAコントローラ10、SRAM20及び演算器30が設けられている。SRAM20はデータを一時的に保持する内部メモリである。演算器30はメモリ3に保持された8ビットの1画面分の2次元コードの画像に基づいて2次元コードをデコードする演算手段である。SRAM20内には、転送されてきた1行分の画像データを一時保持する受信バッファ21、階調変換後の1行分の画像データを送信するまで保持する送信バッファ22、及び10ビットのデータを8ビットに変換する少なくとも1つの階調変換テーブル23の各領域を有している。CPU2はSRAM20を用いて撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データをメモリに保持する階調変換手段の機能を達成している。
【0017】
図2は最も基本的なイメージセンサ1とCPU2内の内部のSRAM及びメモリ3の間のデータの移動を示す図である。データを取込む前にユーザはあらかじめROM5の変換ルールファイルを選択して、CPU2のSRAM20に階調変換テーブル23として保持している。図2に示すようにイメージセンサ1は2次元コードを含む画像を撮像した後、1画素当り10ビットの画像データを1行目より順次行単位で転送してくるものとする。CPU2内部では受信バッファ21にこのデータを取込む。そしてCPUのSRAM20内で階調変換テーブル23を用いて受信バッファ21に保持された10ビットのデータを8ビットのデータに変換し、送信バッファ22に保持する。そして送信バッファ22からメモリ3にデータを転送する。この処理を並列的に行うことによって画像取込時間を短縮している。
【0018】
次に図3はCPU2内部のSRAM20とイメージセンサ1からのデータ及びメモリ3に転送するデータの詳細を示す。この実施の形態に示すようにCPU2内部のSRAM20には10ビットの1行分のデータを保持する受信バッファ21a,21b及び8ビットの1行分のデータを保持する送信バッファ22a,22bを有している。
【0019】
図4はデータ取込、データ変換及びデータ転送を並列に実行する状態を示すタイムチャートである。本図において期間T1には、イメージセンサ1から得られた10ビットの1行目のデータを受信バッファ21aに保持する。次に期間T2にはイメージセンサ1より2行目の10ビットのデータを受信し、受信バッファ21bに保持する。この期間T2には、同時に受信バッファ21aに保持されている1行目の10ビットの画像データを後述する規則に従って8ビットの画像に変換して、送信バッファ22aに順次転送していく。次の期間T3にはイメージセンサ1より得られる3行目の画像データを受信バッファ21aに取込み、更に受信バッファ21bに保持されている2行目のデータを8ビットの画像に変換して送信バッファ22bに転送する。このとき同時に送信バッファ22aの1行目の変換後のデータをメモリ3に転送する。期間T4にはイメージセンサ1より得られる4行目の画像データを受信バッファ21bに取込み、更に受信バッファ21aに保持されている3行目のデータを8ビットの画像に変換して送信バッファ22aに転送する。このとき同時に送信バッファ22bの2行目の変換後のデータをメモリ3に転送する。以降の期間T5・・・TN,TN+1にも行番号をずらせて同様の処理を繰り返す。このように2つの受信バッファ21a,21b及び2つの送信バッファ22a,22bを備えることにより、データ取込、データ変換及びデータ転送処理を並列的に実行することができる。
【0020】
次にこの10ビットの画像データを8ビットの画像データに変換する3つの規則について説明する。図5A〜図5Cはイメージセンサからの10ビットの出力と8ビットの変換後の出力の関係を示す図である。第1の方法はイメージセンサの10ビットのうち下位2ビットを削除し、上位8ビットのみを変換後の8ビットの画像データとするものである。図5A(a)において左方に示す0〜1023はイメージセンサ1の出力、0〜255は変換後の8ビットの出力を示している。この場合には、図5A(b)のグラフに示すように1024階調の変化が256階調に直線的に変化することとなる。
【0021】
第2の方法は、10ビットのデータのうち上位の2ビットを削除し、下位8ビットを変換後の8ビットの画像データとするものである。この場合には、図5B(b)のグラフに示すように入力の0〜255階調までは直線的に変化するが、255で飽和し、それ以降は最高レベルを保持するものとなる。
【0022】
次に第3の方法は、入力となる10ビットのデータを対数項を含む関数を用いて8ビットのデータに変化させる略対数変換処理である。この場合には、例えば図5C(b)のグラフに示すように1024階調の変化が256階調に曲線状に変化するものとなる。この変換手法では係数を選択することにより種々の曲線とすることができる。
【0023】
上記の3つの方法以外に中間の8ビットを選択する方法が考えられる。本実施の形態ではこれらのいずれかの変換のための入出力をテーブルとしてあらかじめ階調変換テーブル23に保持しておく。こうすれば変換テーブルの変更のみでハードウェアを変更せずに変換方法を変更することができる。変換方法は後述するように、ユーザが任意に選択できるようにしている。
【0024】
図6Aは10ビットの画像データのうち、上位8ビットを用いて8ビットの画像データに変換した4つの画像の例を示す図、図6Bは10ビットの画像データのうち中間の8ビットにより構成された4つの画像の例を示す図、図6Cは10ビットの画像データのうち下位8ビットを用いて8ビットの画像データに変換した4つの画像の例を示す図である。又対数変換画像については上位8ビットの暗い部分と下位8ビットの明るい部分とを構成したような画像となる。
【0025】
このようにビット選択によって、メモリに保持する画像の特徴(明るさ、階調変化)を変化させることができ、メモリに格納された画像を用いてCPU2で実行するデコード可否にも影響を及ぼす。例えば、図6A〜図6Cで示す一番左のQRコードは、図6Aでは暗すぎるため、デコードが困難となるが、図6Cであればデコードが容易となる。一方、一番右のQRコードでは、図6Cでは明るすぎて、デコード困難となるが、図6Aであればデコード容易となる。すなわち、階調変化はデコード処理の際の白黒判別のし易さに影響を及ぼし、明るさは各白黒ドットやセルの膨張収縮によるコード情報の誤認識にもつながる。コードリーダ内には撮像条件を保持するための領域がバンクパラメータとして設けられており、2次元コード等の撮像条件と共に、ビット選択条件をバンクパラメータに設定する。当該パラメータに基づき画像を取り込むことにより、デコード成功率の向上につながる。
【0026】
次にフィルタ処理について説明する。10ビットのデータを8ビットのデータに変換する際に、同時にフィルタ処理を行うようにしてもよい。フィルタ処理は例えば膨張フィルタ処理や収縮フィルタ処理が考えられる。本実施の形態では1行単位で階調変換しているため、膨張フィルタ処理や収縮フィルタ処理についても行単位で行うことが可能となる。この場合の膨張フィルタ処理とは、注目画素の輝度データを隣接する2つの画素と注目画素の3つの中で最大輝度のデータに置き換える処理をいう。又収縮フィルタ処理とは、注目画素の輝度データを隣接する2つの画素と注目画素の3つの中で最小輝度のデータに置き換える処理をいう。フィルタ処理は例えばレーザマーカで記録した場合など図7に示すようにQRコードが点線となっていれば、そのままではデコードできない。一方元のQRコードの場合には図8に示すようにQRコードが直線になっており、デコードすることができる。このような場合フィルタ処理で画像を適宜変換してデコードできるようにする。
【0027】
次に本実施の形態による画像の取込処理の動作について説明する。図9は動作を開始した直後の処理を示すフローチャートである。この処理を開始すると、まずステップS1においてユーザに変換規則の選択を促す。次にステップS2においてユーザにフィルタの要否、種類の選択を促す。こうして変換規則とフィルタが選択されると、変換規則に基づいて入力データを出力データに変換するテーブルを作成する(ステップS3)。そしてこのテーブルをCPU2内のSRAM20に階調変換テーブル23として書込んでおく(ステップS4)。
【0028】
次にデータの取込み後の処理について図10を用いて説明する。処理を開始すると、ステップS11においてイメージセンサ1から1行分のデータをSRAMの受信バッファ21に取得する。そしてステップS12において1行分のデータを階調変換する。次いでステップS13において画像データのフィルタ処理が必要かどうかを判別し、必要であれば1行分のデータのフィルタ処理を行う(ステップS14)。そしてステップS15において処理後のデータを送信バッファ22に保持する。ステップS16において1行分のデータをSRAM20からメモリ3に転送し、1画像全体の取込処理を終了したかどうかを判別する(S17)。処理が終了していなければステップS11に戻って同様の処理を繰り返す。処理が終了した場合には取込処理を終了する。尚ステップS12の処理はステップS15の直前であってもよい。
【0029】
こうすればデータの階調変換処理等のための専用チップが不要となり、低コスト化を図ることができる。又階調変換のデータ処理はソフトウェア処理で実行しているため、上位8ビットの選択、下位8ビットの選択、又上下の1ビットを除く中間の8ビットの選択やログ変換等、自由な変換規則を任意に選択することができる。又フィルタ処理を階調変換とほぼ並列的に実行することができる。ここでフィルタ処理は不要であればステップS2のフィルタ選択やステップS13,S14を削除するようにしてもよい。
【0030】
次に本実施の形態の変形例について説明する。前述した第1の実施の形態のフィルタ処理では、行単位でフィルタ処理を行っていた。これに代えて隣接する3行単位で膨張フィルタ処理や収縮フィルタ処理を行うこともできる。この場合の膨張フィルタ処理とは、3×3画素の中心画素の輝度を隣接する周囲の9画素の中での最大輝度のデータに置き換える処理をいう。又収縮フィルタ処理とは、3×3画素の中心画素の輝度を周囲の9画素の中で最小輝度のデータに置き換える処理をいう。この場合には10ビットの画像データ受信用のバッファとして3行分を2組、即ち6つの受信バッファが必要であり、同様に送信バッファとしても3行分のバッファを2組、即ち6つの送信バッファが必要となる。このように行単位でのフィルタ処理を階調変換と同時に行うようにしておけば、フィルタ処理を短時間で行うことができる。又3×3画素のフィルタ処理を行う場合であっても、行単位でメモリ3に一旦保持した後、メモリ3から読出して改めてフィルタ処理を行うようにしてもよい。
【0031】
次に本発明の第2の実施の形態について説明する。本実施の形態はCPU2のSRAMへの取込画像の領域制限を行うものであり、基本的な構成は図1と同様である。イメージセンサ1から出力される画像データのうち、必要な領域は全領域のうちの一部である場合がある。このような場合には、不要な領域はメモリ3に取込む必要はなく、必要な領域のみを取込めば足りる。CCDやCMOSセンサ等の撮像素子には、露出時間やハードウェアのタイミングがセンサから出力する列数に依存して変化するものがある。そのため列単位で取込みの領域を制限した場合には、CCD等の画像撮像素子の露出時間のタイミングやハードウェアのタイミング設計が複雑となる。そこで本実施の形態では、行単位で必要な行のみを前述したように階調変換してメモリに取込むようにしている。
【0032】
イメージセンサ1はL行M列の10ビットのデータを出力するものとする。図11(a)はイメージセンサが出力する画像、図12(a)はこれに対応する画像データを示している。このL行M列の画像データ40のうち図11(a)に示すように、一部の領域のみに2次元コードが撮像されていたとすると、この領域を注目領域(ROI:region of interest)41とする。注目領域41を例えばi〜i+N行、j〜j+K列(1≦i<N≦L,1≦j<K≦M)とすると、この領域の画像情報のみがあれば2次元コードをデコードするには十分である。
【0033】
従ってCPU2は図11(b)に示すように2次元コードデータの処理に必要な行、即ちハッチングを施していないi〜i+N行の全ての列のデータを受信バッファ21a,21bに交互に保持する。そしてこれらの行の10ビットを8ビットのデータに変換し、順次送信バッファ22a,22bに交互に保持する。このうちj〜j+K列目のデータのみをメモリ3に転送する。図11(c)はメモリ3上に構築された画像、図12(c)はその画像データを示している。
【0034】
例えばイメージセンサの画像データが480行752列の10ビット画像データである場合に、そのうち必要な領域は101行〜200行、101列〜200列とする。このとき101行〜200行の画像データのみをCPU2に取込み、10ビットから8ビットに変換してメモリ3に転送する。そして階調変換した101行〜200行のうち101列目から200列目までのデータをメモリ3に転送するようにすれば、メモリには100列100行分の8ビット画像データを得ることができる。これによって図12(c)に示すようにメモリ3に保持する必要があるデータを大幅に削減することができる。このような処理は2次元コードを対象とし、2次元コードが撮像された領域のみをメモリに取込む際に極めて有用となる。
【0035】
次に本発明の第3の実施の形態について説明する。この実施の形態では複数の変換規則を用いて階調変換された複数の画像データを保持するものであり、基本的な構成は図1と同様である。階調変換された1枚の画像データをメモリに保持した場合には、保持した後にメモリより読出し、演算器を用いてデコード処理が行われる。しかしイメージセンサの露出時間やゲイン設定が十分でなければ、再度撮像してメモリに撮像するか、階調変換規則を変更し、メモリに転送する必要がある。従って環境の変化によってデコードできない場合に、複数回の処理が必要となって時間がかかるという欠点があった。この実施の形態では複数の画像を同時に保持しておくものとする。図13はCPU2の構造とこの処理のイメージセンサからメモリへのデータ転送を示す図である。図13においてCPU2は第1の実施の形態のDMAコントローラ10,SRAM20及び演算器30を有している。この実施の形態においてSRAM20には受信バッファ21と送信バッファ25,26及び複数の階調変換テーブル23a,23bが設けられる。そして図示のようにイメージセンサ1からの出力をCPU2を介して10ビットデータのままで一旦メモリ3に保持する。その後CPU2はこれを読出し、受信バッファ21に保持する。そして異なる階調変換テーブル23a,23bを用いて階調変換し、2つの8ビットの画像データA,Bを作成して再びメモリ3に書き込む。このとき2つの8ビットの画像データA,Bは夫々異なった変換規則で変換された画像データである。
【0036】
こうして8ビットの2つの画像データを図2に示すように連続したメモリ領域に配置することで、まとめて1つの大きな画像データとして取り扱えば、後にフィルタ処理を行う場合にこれらをまとめて処理することができる。ここで2つの画像データA,Bは夫々異なった変換規則を用いるものとする。例えば前述したように、10ビットのうち上位8ビットの選択、10ビット中の中間の8ビットの選択、10ビット中の下位8ビットの選択、ログ変換などから任意の階調変換規則を選択して2つの画像データを生成するようにしてもよい。こうすれば1回の画像データの取込みで明るさなどの異なる8ビットの2枚の画像データをメモリ3の連続した領域に保持することができる。
【0037】
又これに代えて図14に示すようにCPUの処理能力に余裕があれば、10ビットの画像データを一旦CPU2のSRAM20に保持し、このデータを用いて8ビットの画像データA,Bを夫々作成し、メモリ3に転送してもよい。このバッファには10ビットの画像データを保持するための受信バッファ21a,21bと8ビットの画像データを保持するための送信バッファ25a,25b,26a,26bを用いる。これによりデータの転送と2つの画像データへの階調変換及びデータ転送を並列して行うことができる。
【0038】
ここで従来例と本実施の形態のデコードの時間を比較して説明する。例えばある条件で撮像した画像をデコードし、デコードに成功しない場合はタイムアウトし、次の撮像条件で撮像してこれをデコードするまで繰り返すものとする。一般的に撮像に要する時間を30ms、デコードに成功したときのデコードにかかる時間を20ms、デコードが成功しないときに処理を打ち切るタイムアウト時間を成功時間の5倍と仮定し100msとする。そして撮像条件、例えばゲインを変化させて条件A,B,Cとし、これらの条件A,B,Cで順にデコードするものとする。この場合、図15(a)に示すように条件Aで撮像しデコードしたが、デコードに成功せず、次いで条件Bで撮像しデコードしたが、デコードに成功せずいずれもタイムアウトし、条件Cで撮像してデコードが成功したとする。この場合は所要時間は310msとなる。次に例えば図15(b)に示すように撮像とデコードを繰り返し2回目にデコードに成功した場合には、所要時間は例えば180msとなる。又撮像とデコードを繰り返して1回目にデコードに成功した場合は、例えば図15(c)に示すように50msとなる。以上の3つの条件でデコードに成功する確率が等しいとすると、この場合の読取時間の期待値は180msとなる。
【0039】
一方本実施の形態において3枚の画像、例えば10ビットの上位8ビットの画像データA、上下1ビットを除く中位8ビットの画像データB及び下位8ビットの画像データCを作成し、メモリの連続した領域に配置し、3枚分の大きさの1枚の連結画像を生成してからデコード処理を行う場合について説明する。この場合10ビット画像の取得にかかる時間を30ms、10ビット画像をメモリ上の3つの画像データに展開するに要する時間を15ms、デコードが成功したときのデコードにかかる時間は画像のデータ量に比例する傾向があるので従来例に比べ3倍の60msとし、デコードが成功しないときに処理を打ち切るタイムアウト時間を成功時間の5倍と仮定し300msとする。ここで10ビットの画像を取り込んで3つの8ビット画像に展開し、通常画像をデコードした画像Cでデコードが成功した場合には、図16(a)に示すように105msを要する。同様にして画像Bでデコードに成功した場合には、図16(b)に示すように105msを要する。画像Aをデコードして成功した場合には図16(c)に示すように105msを要する。3倍の画像データを処理するのでデコード時間は従来例に比べ3倍の60msとなるが、A,B,Cのどの部分で成功しても読取時間は105msとなり、従来例で示した期待値よりも短く、且つばらつきがないという効果が得られる。
【0040】
尚この実施の形態では2種類の相異なる画像データをメモリに保持するようにしているが、3種類、又はそれ以上の画像データをメモリ3の連続した領域に保持するようにしてもよい。
【0041】
上述した各実施の形態では、階調変換テーブルを用いて10ビットを8ビットに変換するようにしているが、ビット数はこれに限定されるものではない。又階調変換テーブルに限らず、階調変換規則を数式として保持するものであってもよい。
【0042】
尚この実施の形態では2次元コードリーダを例にして説明したが、本発明による光学的情報読取装置は2次元コードリーダに限らず、2次元の画像情報を読取る種々の光学的情報読取装置にも適用することができる。
【産業上の利用可能性】
【0043】
本発明は2次元コード等を光学的に読み取る光学的情報読取装置において、ユーザの用途に対応しユーザが選択した変換規則で画像を階調変換してメモリに保持することができ、種々の使用状態での光学的情報読取装置に有用である。
【符号の説明】
【0044】
1 イメージセンサ
2 CPU
3 メモリ
4 通信制御部
10 DMAコントローラ
20 SRAM
21,21a,21b 受信バッファ
22,22a,22b,25,25a,25b,26,26a,26b 送信バッファ
23,23a,23b 階調変換テーブル
30 演算器
40 画像データ
41 注目領域
【特許請求の範囲】
【請求項1】
読取対象を撮像する2次元撮像素子を有する撮像部と、
CPUを有し、前記撮像部で撮像された読取対象をメモリに保持するときに画像処理してデコードする制御部と、
前記撮像部で撮像された読取対象の画像を保持するメモリと、を有する光学的情報読取装置であって、
前記制御部は、前記撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データを前記メモリに保持する階調変換手段と、
前記メモリに格納された階調変換後の画像データを読出し、デコードする演算手段と、を具備する光学的情報読取装置。
【請求項2】
前記制御部のCPUは、内部メモリを有し、
前記内部メモリは、
撮像部より得られる行単位の画像データを保持する受信バッファと、
前記メモリに転送する前の階調変換後の行単位の画像データを保持する送信バッファと、を有する請求項1記載の光学的情報読取装置。
【請求項3】
前記内部メモリはSRAMであり、
前記受信バッファは少なくとも2つの受信バッファを有し、
前記送信バッファは少なくとも2つの送信バッファを有し、
前記階調変換手段は、前記撮像部で撮像された画像信号を行単位で前記2つの受信バッファに交互に保持するデータ受信処理、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送する階調変換処理、及び前記2つの送信バッファより交互に前記メモリに転送する転送処理を並列に実行する請求項2記載の光学的情報読取装置。
【請求項4】
前記撮像部は、L列M行の画像データを出力するイメージセンサを有し、
前記階調変換手段は、画像処理に必要なi行からi+N行(1≦i<N≦L)までのデータを取込んで前記受信バッファに保持し、
前記送信バッファの変換後のデータのうちjからj+K(1≦j<K≦M)までの列の画像データを送信バッファより前記メモリに出力する請求項2又は3記載の光学的情報読取装置。
【請求項5】
前記制御部は、取込んだ画像に対してフィルタ処理の一部もしくは全部を行って前記送信バッファに保持する請求項2又は3記載の光学的情報読取装置。
【請求項6】
請求項3記載の光学的情報読取装置のデータ取込方法であって、
撮像された画像信号を受信して前記画像信号を行単位で前記2つの受信バッファに交互に保持し、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送し、
及び送信バッファより前記メモリへの転送する処理を並列に実行する光学的情報読取装置のデータ取込方法。
【請求項7】
前記制御部は、受信バッファに保持された画像データのうち夫々異なった階調変換処理を施し、前記送信バッファに保持し、複数の画像データを前記メモリに転送するものであり、
前記演算手段は、前記メモリに保持されている複数の画像データに基づいてデコード処理を行う請求項1〜5のいずれか1項記載の光学的情報読取装置。
【請求項8】
複数の画像データは、メモリの連続した領域に配置される請求項7記載の光学的情報読取装置。
【請求項1】
読取対象を撮像する2次元撮像素子を有する撮像部と、
CPUを有し、前記撮像部で撮像された読取対象をメモリに保持するときに画像処理してデコードする制御部と、
前記撮像部で撮像された読取対象の画像を保持するメモリと、を有する光学的情報読取装置であって、
前記制御部は、前記撮像部から画像データを受け、所定条件に基づく階調変換を実行し、階調変換後の画像データを前記メモリに保持する階調変換手段と、
前記メモリに格納された階調変換後の画像データを読出し、デコードする演算手段と、を具備する光学的情報読取装置。
【請求項2】
前記制御部のCPUは、内部メモリを有し、
前記内部メモリは、
撮像部より得られる行単位の画像データを保持する受信バッファと、
前記メモリに転送する前の階調変換後の行単位の画像データを保持する送信バッファと、を有する請求項1記載の光学的情報読取装置。
【請求項3】
前記内部メモリはSRAMであり、
前記受信バッファは少なくとも2つの受信バッファを有し、
前記送信バッファは少なくとも2つの送信バッファを有し、
前記階調変換手段は、前記撮像部で撮像された画像信号を行単位で前記2つの受信バッファに交互に保持するデータ受信処理、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送する階調変換処理、及び前記2つの送信バッファより交互に前記メモリに転送する転送処理を並列に実行する請求項2記載の光学的情報読取装置。
【請求項4】
前記撮像部は、L列M行の画像データを出力するイメージセンサを有し、
前記階調変換手段は、画像処理に必要なi行からi+N行(1≦i<N≦L)までのデータを取込んで前記受信バッファに保持し、
前記送信バッファの変換後のデータのうちjからj+K(1≦j<K≦M)までの列の画像データを送信バッファより前記メモリに出力する請求項2又は3記載の光学的情報読取装置。
【請求項5】
前記制御部は、取込んだ画像に対してフィルタ処理の一部もしくは全部を行って前記送信バッファに保持する請求項2又は3記載の光学的情報読取装置。
【請求項6】
請求項3記載の光学的情報読取装置のデータ取込方法であって、
撮像された画像信号を受信して前記画像信号を行単位で前記2つの受信バッファに交互に保持し、前記受信バッファの行単位の画像データを各画素のデータ数を削減して、交互に前記送信バッファに転送し、
及び送信バッファより前記メモリへの転送する処理を並列に実行する光学的情報読取装置のデータ取込方法。
【請求項7】
前記制御部は、受信バッファに保持された画像データのうち夫々異なった階調変換処理を施し、前記送信バッファに保持し、複数の画像データを前記メモリに転送するものであり、
前記演算手段は、前記メモリに保持されている複数の画像データに基づいてデコード処理を行う請求項1〜5のいずれか1項記載の光学的情報読取装置。
【請求項8】
複数の画像データは、メモリの連続した領域に配置される請求項7記載の光学的情報読取装置。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図6A】
【図6B】
【図6C】
【図7】
【図8】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図6A】
【図6B】
【図6C】
【図7】
【図8】
【公開番号】特開2011−76518(P2011−76518A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−229366(P2009−229366)
【出願日】平成21年10月1日(2009.10.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願日】平成21年10月1日(2009.10.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】
[ Back to top ]