IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2022-90340画像処理プログラム、画像処理装置および画像処理方法
<>
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図1
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図2
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図3
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図4
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図5
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図6
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図7
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図8
  • 特開-画像処理プログラム、画像処理装置および画像処理方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022090340
(43)【公開日】2022-06-17
(54)【発明の名称】画像処理プログラム、画像処理装置および画像処理方法
(51)【国際特許分類】
   H04N 1/393 20060101AFI20220610BHJP
   B41J 3/01 20060101ALI20220610BHJP
【FI】
H04N1/393
B41J3/01
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2020202685
(22)【出願日】2020-12-07
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際特許業務法人
(72)【発明者】
【氏名】梶川 佳史
【テーマコード(参考)】
2C055
5C076
【Fターム(参考)】
2C055JJ02
2C055JJ07
2C055JJ12
5C076AA14
5C076AA21
5C076AA22
(57)【要約】
【課題】バーコードの品質を向上させる。
【解決手段】プリンタ1の制御部11は、最大ランレングス値との比率がバーコード仕様を満たす最小のランレングス値を最小モジュール幅として算出し、複数のランレングス値のそれぞれについて最小モジュール幅に対する比率を最小ランレングス比率として算出する。制御部11は、複数の縮小後最小モジュール候補値のうち、最小バーコードサイズに縮小後最小モジュール候補値を乗じた縮小後バーコードサイズが配置可能領域のバーコード配列方向に沿った長さ以下となる最大の値を縮小後最小モジュール決定値として設定する。制御部11は、複数の最小ランレングス比率に対して縮小後最小モジュール決定値を乗じた値を複数の更新ランレングス値とする。
【選択図】図1
【特許請求の範囲】
【請求項1】
印刷媒体に画像を印刷するように構成された印刷部と、
前記印刷部を制御するように構成された制御部と
を備えた画像処理装置において、前記制御部が実行可能な画像処理プログラムであって、
前記制御部に、
予め設定された配列方向に沿って交互に配置された複数のバーおよび複数のスペースによって表されるバーコードを示すバーコード画像を含む画像データに基づいて、前記バーコードにおける複数の前記バーおよび複数の前記スペースのそれぞれの前記配列方向に沿った長さを示す複数のランレングス値を算出するランレングス算出処理と、
前記バーコードを構成する複数の前記バーおよび複数の前記スペースのそれぞれをモジュールとし、クワイエットゾーンを構成する前記モジュール以外の複数の前記モジュールにおける複数の前記ランレングス値の中で最も大きい前記ランレングス値を最大ランレングス値として、前記最大ランレングス値との比率が、前記バーコードに対して予め設定されているバーコード仕様を満たす最小の前記ランレングス値を、最小モジュール幅として算出する最小モジュール算出処理と、
前記ランレングス算出処理により算出された複数の前記ランレングス値のそれぞれについて、前記最小モジュール算出処理により算出された前記最小モジュール幅に対する比率を、最小ランレングス比率として算出する比率算出処理と、
前記比率算出処理で算出された複数の前記最小ランレングス比率を複数の前記ランレングス値とした前記バーコードを最小バーコードとし、前記最小バーコードの前記配列方向に沿った長さを最小バーコードサイズとし、正の整数値を有する倍率を候補倍率として、複数の前記候補倍率のうち、前記最小バーコードサイズに前記候補倍率を乗じた候補バーコードサイズが、前記バーコードが配置される配置可能領域の前記配列方向に沿った長さ以下となる最大の前記候補倍率を、更新倍率として設定する倍率設定処理と、
前記比率算出処理で算出された複数の前記最小ランレングス比率のそれぞれに対して前記更新倍率を乗じた値を複数の更新ランレングス値とするランレングス更新処理と、
複数の前記更新ランレングス値に基づいて、前記バーコードを生成するバーコード生成処理と
を実行させるように構成されている画像処理プログラム。
【請求項2】
請求項1に記載の画像処理プログラムであって、
前記倍率設定処理は、前記印刷部の出力解像度に応じて、前記出力解像度が高いほど前記更新倍率の最小値を大きくする画像処理プログラム。
【請求項3】
請求項1または請求項2に記載の画像処理プログラムであって、
前記バーコード仕様は、CODE128、GS1-128、ITF、CODE39、CODABAR(NW-7)、CODE93、UPC、JANおよびEANの何れか1つで規定される仕様である画像処理プログラム。
【請求項4】
印刷媒体に画像を印刷するように構成された印刷部と、
前記印刷部を制御するように構成された制御部と
を備える画像処理装置であって、
前記制御部は、
予め設定された配列方向に沿って交互に配置された複数のバーおよび複数のスペースによって表されるバーコードを示すバーコード画像を含む画像データに基づいて、前記バーコードにおける複数の前記バーおよび複数の前記スペースのそれぞれの前記配列方向に沿った長さを示す複数のランレングス値を算出するランレングス算出処理と、
前記バーコードを構成する複数の前記バーおよび複数の前記スペースのそれぞれをモジュールとし、クワイエットゾーンを構成する前記モジュール以外の複数の前記モジュールにおける複数の前記ランレングス値の中で最も大きい前記ランレングス値を最大ランレングス値として、前記最大ランレングス値との比率が、前記バーコードに対して予め設定されているバーコード仕様を満たす最小の前記ランレングス値を、最小モジュール幅として算出する最小モジュール算出処理と、
前記ランレングス算出処理により算出された複数の前記ランレングス値のそれぞれについて、前記最小モジュール算出処理により算出された前記最小モジュール幅に対する比率を、最小ランレングス比率として算出する比率算出処理と、
前記比率算出処理で算出された複数の前記最小ランレングス比率を複数の前記ランレングス値とした前記バーコードを最小バーコードとし、前記最小バーコードの前記配列方向に沿った長さを最小バーコードサイズとし、正の整数値を有する倍率を候補倍率として、複数の前記候補倍率のうち、前記最小バーコードサイズに前記候補倍率を乗じた候補バーコードサイズが、前記バーコードが配置される配置可能領域の前記配列方向に沿った長さ以下となる最大の前記候補倍率を、更新倍率として設定する倍率設定処理と、
前記比率算出処理で算出された複数の前記最小ランレングス比率のそれぞれに対して前記更新倍率を乗じた値を複数の更新ランレングス値とするランレングス更新処理と、
複数の前記更新ランレングス値に基づいて、前記バーコードを生成するバーコード生成処理と
を実行するように構成されている画像処理装置。
【請求項5】
印刷媒体に画像を印刷するように構成された印刷部と、
前記印刷部を制御するように構成された制御部と
を備える画像処理装置で実行される画像処理方法であって、
予め設定された配列方向に沿って交互に配置された複数のバーおよび複数のスペースによって表されるバーコードを示すバーコード画像を含む画像データに基づいて、前記バーコードにおける複数の前記バーおよび複数の前記スペースのそれぞれの前記配列方向に沿った長さを示す複数のランレングス値を算出するランレングス算出ステップと、
前記バーコードを構成する複数の前記バーおよび複数の前記スペースのそれぞれをモジュールとし、クワイエットゾーンを構成する前記モジュール以外の複数の前記モジュールにおける複数の前記ランレングス値の中で最も大きい前記ランレングス値を最大ランレングス値として、前記最大ランレングス値との比率が、前記バーコードに対して予め設定されているバーコード仕様を満たす最小の前記ランレングス値を、最小モジュール幅として算出する最小モジュール算出ステップと、
前記ランレングス算出ステップにより算出された複数の前記ランレングス値のそれぞれについて、前記最小モジュール算出ステップにより算出された前記最小モジュール幅に対する比率を、最小ランレングス比率として算出する比率算出ステップと、
前記比率算出ステップで算出された複数の前記最小ランレングス比率を複数の前記ランレングス値とした前記バーコードを最小バーコードとし、前記最小バーコードの前記配列方向に沿った長さを最小バーコードサイズとし、正の整数値を有する倍率を候補倍率として、複数の前記候補倍率のうち、前記最小バーコードサイズに前記候補倍率を乗じた候補バーコードサイズが、前記バーコードが配置される配置可能領域の前記配列方向に沿った長さ以下となる最大の前記候補倍率を、更新倍率として設定する倍率設定ステップと、
前記比率算出ステップで算出された複数の前記最小ランレングス比率のそれぞれに対して前記更新倍率を乗じた値を複数の更新ランレングス値とするランレングス更新ステップと、
複数の前記更新ランレングス値に基づいて、前記バーコードを生成するバーコード生成ステップと
を備える画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、バーコードを表す画像データを処理する技術に関する。
【背景技術】
【0002】
特許文献1には、複数のバーと複数のスペースとを交互に配置して構成されるバーコードを含む画像を縮小し、縮小した画像を表す縮小画像データを生成する画像処理装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019-180046号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
バーコードを縮小することによって縮小後のバーコードの品質が極力劣化しないように、バーコードの縮小率は、バーおよびスペースの縮小後の最小幅が、縮小前の最小幅の整数分の一となる倍率にされている。しかし、縮小後におけるバーおよびスペースの最小幅が、バーコード規格で規定された仕様に対して適切であるか否かを確認することなく縮小率の算出が行われるため、算出された縮小率が適切でない場合がある。この場合には、縮小後のバーコードの品質が低下する。
【0005】
本開示は、バーコードの品質を向上させることを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様は、印刷部と制御部とを備えた画像処理装置において、制御部が実行可能な画像処理プログラムであって、制御部に、ランレングス算出処理と、最小モジュール算出処理と、比率算出処理と、倍率設定処理と、ランレングス更新処理と、バーコード生成処理とを実行させるように構成されている。
【0007】
印刷部は、印刷媒体に画像を印刷するように構成される。制御部は、印刷部を制御するように構成される。
ランレングス算出処理は、予め設定された配列方向に沿って交互に配置された複数のバーおよび複数のスペースによって表されるバーコードを示すバーコード画像を含む画像データに基づいて、バーコードにおける複数のバーおよび複数のスペースのそれぞれの配列方向に沿った長さを示す複数のランレングス値を算出する。
【0008】
最小モジュール算出処理は、最大ランレングス値との比率が、バーコードに対して予め設定されているバーコード仕様を満たす最小のランレングス値を、最小モジュール幅として算出する。モジュールは、バーコードを構成する複数のバーおよび複数のスペースのそれぞれである。最大ランレングス値は、クワイエットゾーンを構成するモジュール以外の複数のモジュールにおける複数のランレングス値の中で最も大きいランレングス値である。
【0009】
比率算出処理は、ランレングス算出処理により算出された複数のランレングス値のそれぞれについて、最小モジュール算出処理により算出された最小モジュール幅に対する比率を、最小ランレングス比率として算出する。
【0010】
倍率設定処理は、複数の候補倍率のうち、最小バーコードサイズに候補倍率を乗じた候補バーコードサイズが、バーコードが配置される配置可能領域の配列方向に沿った長さ以下となる最大の候補倍率を、更新倍率として設定する。最小バーコードは、比率算出処理で算出された複数の最小ランレングス比率を複数のランレングス値としたバーコードである。最小バーコードサイズは、最小バーコードの配列方向に沿った長さである。候補倍率は、正の整数値を有する倍率である。
【0011】
ランレングス更新処理は、比率算出処理で算出された複数の最小ランレングス比率のそれぞれに対して更新倍率を乗じた値を複数の更新ランレングス値とする。
バーコード生成処理は、複数の更新ランレングス値に基づいて、バーコードを生成する。
【0012】
このように構成された本開示の画像処理プログラムは、最大ランレングス値との比率が、バーコード仕様を満たす最小のランレングス値を、最小モジュール幅として算出する。そして、本開示の画像処理プログラムは、最小モジュール幅に基づいて算出された複数の最小ランレングス比率を複数のランレングス値とした最小バーコードに対して、配置可能領域に収まる最大の倍率を乗じることによって、バーコードを生成する。
【0013】
これにより、本開示の画像処理プログラムは、バーコード仕様を満たすようにしてバーコードを再構築することができ、生成したバーコードの品質を向上させることができる。
本開示の別の態様は、印刷部と制御部とを備えた画像処理装置であって、制御部は、ランレングス算出処理と、最小モジュール算出処理と、比率算出処理と、倍率設定処理と、ランレングス更新処理と、バーコード生成処理とを実行するように構成されている。
【0014】
このように構成された本開示の画像処理装置は、本開示の画像処理プログラムによって制御される装置であり、本開示の画像処理プログラムと同様の効果を得ることができる。
本開示の画像処理方法は、印刷部と制御部とを備える画像処理装置で実行される画像処理方法であって、ランレングス算出ステップと、最小モジュール算出ステップと、比率算出ステップと、倍率設定ステップと、ランレングス更新ステップと、バーコード生成ステップとを備える。
【0015】
本開示の画像処理方法は、本開示の画像処理プログラムにて実行される方法であり、当該方法を実行することで、本開示の画像処理プログラムと同様の効果を得ることができる。
【図面の簡単な説明】
【0016】
図1】プリンタの構成を示すブロック図である。
図2】バーコードの構成を示す図である。
図3】シッピングラベルを示す図である。
図4】シッピングラベル縮小処理を示すフローチャートである。
図5】再構築処理を示すフローチャートである。
図6】バーコードのランレングス情報、シンボル構造およびデータを示す図である。
図7】バーコードの最小ランレングス情報を示す図である。
図8】縮小後最小モジュール候補値が2である場合のランレングス情報を示す図である。
図9】縮小後最小モジュール候補値が3である場合のランレングス情報を示す図である。
【発明を実施するための形態】
【0017】
以下に本開示の実施形態を図面とともに説明する。
(1)プリンタ1の構成
本実施形態のプリンタ1は、ラベルに画像を印刷するラベルプリンタであり、図1に示すように、制御部11と、表示部12と、入力部13と、通信部14と、印刷部15とを備える。
【0018】
制御部11は、CPU21およびメモリ22を備える。CPU21は、メモリ22に記憶されたプログラムを実行し、これにより、プリンタ1の各種機能が実現される。なお、制御部11により実現される各種機能は、プログラムの実行によって実現することに限るものではなく、その一部または全部について、一つあるいは複数のハードウェアを用いて実現してもよい。メモリ22は、非遷移的実体的記録媒体である半導体メモリ(例えば、ROM、RAMおよびフラッシュメモリ)を備え、プログラムおよびデータを記憶する。
【0019】
表示部12は、図示しない表示装置を備え、表示装置に各種画像を表示する。入力部13は、表示部12の表示画面の周囲に設置されたスイッチを備える。そして入力部13は、利用者がスイッチを介して行った入力操作を特定するための入力操作情報を出力する。
【0020】
通信部14は、LANを用いた有線通信、LANを用いた無線通信、USBを用いた有線通信、または、Bluetooth規格に準拠した方式の近距離無線通信によって、データ通信を行う。LANは、Local Area Networkの略である。USBは、Universal Serial Busの略である。Bluetoothは登録商標である。
【0021】
印刷部15は、感熱方式の印刷機構を備え、所定幅(例えば、4インチ)の感熱ロール紙に画像を印刷することができる。なお、印刷部15は、カット紙に対して印刷可能に構成されていてもよいし、感熱方式以外の周知の記録方式(例えば、インクジェット方式)で印刷可能に構成されていてもよい。
【0022】
(2)バーコードの構成
本実施形態で用いられるバーコードは、バーコード規格の1つであるCode128で規定された仕様で作成されるバーコードである。バーコードは、例えば図2に示すように、バーコード配列方向BDに沿って、左から順に、クワイエットゾーンQZ1、スタートキャラクタSTC、第1,2,3,4,5データキャラクタDC1,DC2,DC3,DC4,DC5、シンボルチェックキャラクタSC、ストップキャラクタSPCおよびクワイエットゾーンQZ2を配置して構成される。
【0023】
スタートキャラクタSTC、第1~5データキャラクタDC1~DC5およびシンボルチェックキャラクタSCは、3本のバーと3本のスペースとを交互に配置して構成される。ストップキャラクタSPCは、4本のバーと3本のスペースとを交互に配置して構成される。バーは、モジュールのうち、反射率が低いモジュールである。スペースは、モジュールのうち、反射率が高いモジュールである。なお、モジュールは、1本のバーまたはスペースである。またシンボルキャラクタは、バーおよびスペース等による数字、文字および記号の表現である。
【0024】
Code128では、バーおよびスペースの幅は、1モジュール幅、2モジュール幅、3モジュール幅および4モジュール幅の4種類である。1モジュール幅は、バーコードを構成するバーおよびスペースにおいて最も狭い幅である。2モジュール幅は、1モジュール幅の2倍の幅である。3モジュール幅は、1モジュール幅の3倍の幅である。4モジュール幅は、1モジュール幅の4倍の幅である。
【0025】
そしてシンボルキャラクタは、3本のバーと3本のスペースとを交互に配置することにより表現される。なお、シンボルキャラクタでは、3本のバーおよび3本のスペースの合計の幅が11モジュール幅となるように、3本のバーおよび3本のスペースの幅が設定される。
【0026】
クワイエットゾーンQZ1,QZ2は、最小モジュール幅の10倍の幅、または2.54mmの幅のうち、大きい方の幅を有する余白である。なお、最小モジュール幅は、0.191mmである。なお、プリンタ1の出力解像度が200dpiの場合には最小モジュール幅は2ピクセルに相当し、プリンタ1の出力解像度が300dpiの場合には最小モジュール幅は3ピクセルに相当する。
【0027】
スタートキャラクタSTCは、データキャラクタの直前に配置されるキャラクタであり、データの始まりを示す。スタートキャラクタSTCには、バーコードで使用するキャラクタセットを示す3種類のコードセット「CODE A」、「CODE B」および「CODE C」の何れか一つが設定される。
【0028】
第1~5データキャラクタDC1~DC5は、データを表すシンボルキャラクタである。
シンボルチェックキャラクタSCには、バーコードのデータが正しいか否かをチェックするためのデータが設定される。
【0029】
ストップキャラクタSPCは、シンボルチェックキャラクタSCの直後に配置されるキャラクタであり、データの終わりを示す。ストップキャラクタSPCは、4本のバーと3本のスペースとを交互に配置することにより表現される。なお、ストップキャラクタSPCでは、4本のバーおよび3本のスペースの合計の幅が13モジュール幅となるように、4本のバーおよび3本のスペースの幅が設定される。
【0030】
(3)プリンタ1において実行される処理
プリンタ1は、シッピングラベルを縮小して印刷するためにシッピングラベル縮小処理を実行する。
【0031】
シッピングラベルは、商品が収納された配送箱を販売代行業者へ配送する際に配送箱に貼り付けられる。シッピングラベルは、所定サイズ(例えば、A4サイズ)のシートであり、販売代行業者へ配送するために必要な所定事項が記載されている。販売業者は、シッピングラベルのデータファイルを、販売代行業者のウェブサイトなどからダウンロードすることにより取得することができる。販売業者は、シッピングラベルのデータファイルをプリンタ1から印刷することでシッピングラベルを作成し、作成したシッピングラベルを配送箱に貼り付ける。
【0032】
プリンタ1で用いられる印刷媒体の幅は例えば4インチであるため、例えばA4サイズのシッピングラベルのデータファイルを印刷する場合には、シッピングラベルが印刷媒体に収まるようにシッピングラベルを縮小する必要がある。
【0033】
シッピングラベルは、例えば図3に示すように、第1バーコードBC1が配置される矩形状の第1バーコード配置領域R1と、第2バーコードBC2が配置される矩形状の第2バーコード配置領域R2と、配送箱の配送先などを示す文字および数字等が記載された情報記載領域R3とを備える。すなわち、シッピングラベルを構成する全領域のうち、第1バーコード配置領域R1および第2バーコード配置領域R2を除外した領域が、情報記載領域R3である。第1バーコードBC1は、第1バーコード配置領域R1の略中央に配置される。第2バーコードBC2は、第2バーコード配置領域R2の略中央に配置される。
【0034】
次に、プリンタ1のCPU21が実行するシッピングラベル縮小処理の手順を説明する。シッピングラベル縮小処理は、シッピングラベルのデータファイルを印刷するための入力操作が入力部13に対して行われた後に開始される処理である。
【0035】
シッピングラベル縮小処理が実行されると、CPU21は、図4に示すように、まずS10にて、バーコードを基準として入力画像を回転させる処理を実行する。入力画像とは、シッピングラベル縮小処理が開始される起因となった入力操作において印刷対象として特定されたデータファイルで表されるシッピングラベルの画像である。具体的には、CPU21は、S10にて、入力画像に含まれるバーコードのバーコード配列方向BDと、プリンタ1が印刷時に印刷媒体を搬送する搬送方向とが直交するように、入力画像を回転させる。
【0036】
さらにCPU21は、S20にて、シッピングラベルの画像データに対して2値化処理を行う。具体的には、CPU21は、シッピングラベルの画像データを、黒(すなわち、ドットを形成する)と、白(すなわち、ドットを形成しない)との2値データに変換する。
【0037】
そしてCPU21は、S30にて、シッピングラベルの画像データにおいてバーコード配置可能領域を探索する。バーコード配置可能領域は、シッピングラベルに含まれるバーコード毎に設定される矩形状の領域であり、対応するバーコード以外で2値データの黒を含まない最も広い領域が設定される。例えば、図3において一点鎖線で示す領域R11は第1バーコードBC1のバーコード配置可能領域であり、図3において一点鎖線で示す領域R12は第2バーコードBC2のバーコード配置可能領域である。
【0038】
次にCPU21は、図4に示すように、S40にて、バーコード配置可能領域をリサイズして、バーコード配置領域を設定する。具体的には、CPU21は、複数のバーコード配置可能領域が存在する場合に、複数のバーコード配置可能領域が互いに重ならないように複数のバーコード配置可能領域の大きさを調整し、調整後のバーコード配置可能領域をバーコード配置領域として設定する。図3における第1バーコード配置領域R1は、バーコード配置可能領域R11を調整した後の領域であり、図3における第2バーコード配置領域R2は、バーコード配置可能領域R12を調整した後の領域である。
【0039】
さらにCPU21は、図4に示すように、S50にて、シッピングラベルの幅と、印刷媒体の幅とに基づいて、シッピングラベルが印刷媒体に収まるようにシッピングラベルの縮小率を算出する。
【0040】
そしてCPU21は、S60にて、S50で算出された縮小率に基づいて、縮小が必要であるか否かを判断する。具体的には、CPU21は、S50で算出された縮小率が100%未満である場合には、縮小が必要であると判断し、縮小率が100%以上である場合には、縮小が必要でないと判断する。
【0041】
ここで、縮小が必要でない場合には、CPU21は、S70にて、S10の処理が行われた後の入力画像を出力画像に設定して、シッピングラベル縮小処理を終了する。なお、「S10の処理が行われた後の入力画像」とは、S10において入力画像の回転が行われた場合には、回転させられた後の入力画像であり、S10において入力画像の回転が行われなかった場合には、回転させられていない入力画像である。
【0042】
一方、縮小が必要である場合には、CPU21は、S80にて、入力画像においてバーコードと背景とを分離する。背景は、入力画像においてバーコード以外の部分である。
そしてCPU21は、S90にて、S80で分離されたバーコードのうち、後述するS100~S140の処理が行われていないバーコード(以下、未処理のバーコード)があるか否かを判断する。
【0043】
ここで、未処理のバーコードがない場合には、CPU21は、S150に移行する。一方、未処理のバーコードがある場合には、CPU21は、S100にて、未処理のバーコードを1つ選択する。
【0044】
そしてCPU21は、S110にて、S100で選択したバーコードの領域が、対応する縮小バーコード配置領域より大きいか否かを判断する。具体的には、CPU21は、まず、S100で選択したバーコードに対応するバーコード配置領域を、S50で算出された縮小率で縮小した縮小バーコード配置領域を生成する。そしてCPU21は、S100で選択したバーコードの領域が、生成した縮小バーコード配置領域より大きいか否かを判断する。
【0045】
ここで、バーコードの領域が縮小バーコード配置領域より大きい場合には、CPU21は、S120にて、S100で選択したバーコードを縮小して再構築する再構築処理を実行する。なお、再構築処理の詳細な手順は後述する。
【0046】
さらにCPU21は、S130にて、縮小する前と後とで、S120で再構築したバーコードの配置の見た目が異ならないように、S120で再構築したバーコードの縮小バーコード配置領域内における位置を調整し、S90に移行する。
【0047】
またS110にて、バーコードの領域が縮小バーコード配置領域より大きくない場合には、CPU21は、S140にて、縮小する前と後とで、S100で選択したバーコードの配置の見た目が異ならないように、S100で選択したバーコードの縮小バーコード配置領域内における位置を調整し、S90に移行する。
【0048】
そして、S150に移行すると、CPU21は、S80で分離した背景を示す背景画像を、S50で算出された縮小率で縮小し、縮小背景画像を生成する。
さらにCPU21は、S160にて、S80で分離されたバーコードと、S150で生成された縮小背景画像とを統合するマージ処理を実行する。
【0049】
マージ処理では、具体的には、CPU21は、まず、S80で分離されたバーコード毎に、再構築処理が実行されたか否かを判断する。ここで、再構築処理が実行された場合には、CPU21は、再構築処理が行われた後のバーコードを、S130で調整された位置で、縮小背景画像において対応する縮小バーコード配置領域内に配置する。一方、再構築処理が実行されていない場合には、CPU21は、S80で分離されたバーコードをそのまま、S140で調整された位置で、縮小背景画像において対応する縮小バーコード配置領域内に配置する。そして、全てのバーコードについて縮小背景画像への配置が終了すると、CPU21は、全てのバーコードが配置された縮小背景画像を出力画像に設定し、マージ処理を終了する。
【0050】
マージ処理が終了すると、CPU21は、シッピングラベル縮小処理を終了する。
次に、S120で実行される再構築処理の手順を説明する。
再構築処理が実行されると、CPU21は、図5に示すように、まずS210にて、S100で選択されたバーコード画像のランレングス情報を作成する。
【0051】
ランレングス情報は、図6に示すように、バーコードを構成する複数のバーおよび複数のスペースとのバーコード配列方向BDに沿った長さを示す複数のランレングス値を、バーコード配列方向BDに沿って左から順に配置して形成されている。すなわち、クワイエットゾーンQZ1、スタートキャラクタSTC、第1~5データキャラクタDC1~DC5、シンボルチェックキャラクタSC、ストップキャラクタSPC、クワイエットゾーンQZ2の順にランレングス値が配置される。但し、ランレングス情報における最初の値は0である。図6におけるランレングス情報は、「0,70,15,8,7,15,8,30,・・・・・・,15,22,23,7,8,7,15,71」である。なお、本実施形態のランレングス値は、ピクセル数で表される。
【0052】
次にCPU21は、図5に示すように、S220にて、S210で作成されたランレングス情報を構成する複数のランレングス値の中から最大値と最小値を取得する。但し、CPU21は、クワイエットゾーンQZ1,QZ2のランレングス値以外のランレングス値の中から最大値と最小値を取得する。図6に示すランレングス情報では、最大値は30であり、最小値は6である。さらにS220にて、CPU21は、取得した最小値を最小モジュール候補値とする。
【0053】
そしてCPU21は、S230にて、最大値を最小モジュール候補値で除することにより得られる商が4以下であるか否かを判断する。ここで、上記の商が4より大きい場合には、CPU21は、S240にて、最小モジュール候補値に1を加算した値を新たな最小モジュール候補値とし、S230に移行する。
【0054】
一方、上記の商が4以下である場合には、CPU21は、S250にて、最小モジュール候補値を最小モジュール幅とする。
例えば、図6に示すランレングス情報では、最大値は30であり、最小値(すなわち、最小モジュール候補値)は6である。この場合に、上記の商は5である。このため、最小モジュール候補値が6である場合には、この最小モジュール候補値は最小モジュール幅として不適切である。
【0055】
そして、最小モジュール候補値に1を加算することにより得られる新たな最小モジュール候補値は7である。この場合に、上記の商は4である。このため、この最小モジュール候補値(すなわち、7)は最小モジュール幅として適切である。
【0056】
次にCPU21は、S260にて、ランレングス情報を最小ランレングス情報に変換する。具体的には、CPU21は、ランレングス情報を構成する複数のランレングス値のそれぞれについて、ランレングス値を最小モジュール値で除して得られる除算値の小数点第一位で四捨五入した値を最小ランレングス比率とし、ランレングス情報と同じ配列で複数の最小ランレングス比率を配置することによって、最小ランレングス情報を作成する。
【0057】
例えば、図6におけるランレングス情報を構成する複数のランレングス値は、「0,70,15,8,7,15,8,30,・・・・・・,15,22,23,7,8,7,15,71」である。これらのランレングス値を、最小モジュール幅である7で除することにより、「0,10.0,2.1,1.1,1.0,2.1,1.1,4.2,・・・・・・,2.1,3.1,3.2,1.0,1,1.1.0,2.1,10.1」が得られる。そして、これらの値を小数点第一位で四捨五入することにより、図7に示すように、「0,10,2,1,1,2,1,4,・・・・・・,2,3,3,1,1.1,2,10」という複数の最小ランレングス比率で構成された最小ランレングス情報が作成される。
【0058】
次にCPU21は、図5に示すように、S270にて、プリンタ1の出力解像度が300dpiであるか否かを判断する。ここで、出力解像度が300dpiである場合には、CPU21は、S280にて、縮小後最小モジュール候補値を3[ピクセル]に設定し、S300に移行する。一方、出力解像度が300dpiでない場合には、CPU21は、出力解像度が200dpiであると判断し、S290にて、縮小後最小モジュール候補値を2[ピクセル]に設定し、S300に移行する。
【0059】
S300に移行すると、CPU21は、最小ランレングス情報と縮小後最小モジュール候補値とに基づいて、縮小後バーコードサイズを算出し、S310に移行する。具体的には、CPU21は、最小ランレングス情報を構成する複数の最小ランレングス比率の総和に、縮小後最小モジュール候補値を乗じた乗算値を、縮小後バーコードサイズとして算出する。
【0060】
例えば、図7に示す最小ランレングス情報の総和は、図7の「SUM」で示すように、「110」である。そして、この総和(すなわち、「110」)に、縮小後最小モジュール候補値として「2」を乗じることによって算出される縮小後バーコードサイズは「220」である。また、この総和(すなわち、「110」)に、縮小後最小モジュール候補値として「3」を乗じることによって算出される縮小後バーコードサイズは「330」である。
【0061】
S310に移行すると、CPU21は、S300で算出された縮小後バーコードサイズが、S100で選択されたバーコードのバーコード配置可能領域の幅(以下、配置可能領域幅)以下であるか否かを判断する。
【0062】
例えば、バーコード配置可能領域の幅が269ピクセルであり、バーコード配置可能領域の高さが114ピクセルであるとする。
この場合に、図7に示す最小ランレングス情報と、「2」である縮小後最小モジュール候補値とにより算出される縮小後バーコードサイズは、図8の「SUM」で示すように「220」である。このため、この縮小後バーコードサイズ(すなわち、「220」)は、配置可能領域幅(すなわち、「269」)より短い。
【0063】
一方、図7に示す最小ランレングス情報と、「3」である縮小後最小モジュール候補値とにより算出される縮小後バーコードサイズは、図9の「SUM」で示すように「330」である。このため、この縮小後バーコードサイズ(すなわち、「330」)は、配置可能領域幅(すなわち、「269」)より長い。
【0064】
ここで、縮小後バーコードサイズが配置可能領域幅以下である場合には、CPU21は、図5に示すように、S320にて、現時点での縮小後最小モジュール候補値を縮小後最小モジュール決定値に設定する。
【0065】
さらにCPU21は、S330にて、現時点での縮小後最小モジュール候補値に1を加算した値を新たな縮小後最小モジュール候補値とし、S300に移行する。
一方、縮小後バーコードサイズが配置可能領域幅より長い場合には、CPU21は、S340にて、更新ランレングス情報を作成する。具体的には、CPU21は、最小ランレングス情報を構成する複数のランレングス値のそれぞれについて、縮小後最小モジュール決定値を乗ずることにより得られる乗算値を更新ランレングス値とし、ランレングス情報と同じ配列で複数の更新ランレングス値を配置することによって、更新ランレングス情報を作成する。
【0066】
図8は、図7に示す最小ランレングス情報に、「2」である縮小後最小モジュール候補値を乗ずることによって作成される更新ランレングス情報を示す。
図9は、図7に示す最小ランレングス情報に、「3」である縮小後最小モジュール候補値を乗ずることによって作成される更新ランレングス情報を示す。
【0067】
次にCPU21は、図5に示すように、S350にて、S340で作成された更新ランレングス情報に基づいて、更新ランレングス情報に対応するバーコードの2値画像を作成し、再構築処理を終了する。
【0068】
(4)効果
このように構成されたプリンタ1は、印刷部15と制御部11とを備える。印刷部15は、印刷媒体に画像を印刷する。制御部11は、印刷部15を制御する。
【0069】
そして制御部11は、バーコード配列方向BDに沿って交互に配置された複数のバーおよび複数のスペースによって表されるバーコードを示すバーコード画像を含む画像データに基づいて、バーコードにおける複数のバーおよび複数のスペースのそれぞれのバーコード配列方向BDに沿った長さを示す複数のランレングス値を算出する。
【0070】
制御部11は、最大ランレングス値との比率が、バーコード規格の1つであるCode128で規定された仕様を満たす最小のランレングス値を、最小モジュール幅として算出する。最大ランレングス値は、クワイエットゾーンQZ1,QZ2を構成するモジュール以外の複数のモジュールにおける複数のランレングス値の中で最も大きいランレングス値である。このため、スタートキャラクタSTC、第1~5データキャラクタDC1~DC5、シンボルチェックキャラクタSCおよびストップキャラクタSPCを構成する複数のモジュールの中から最大ランレングス値が選択される。
【0071】
制御部11は、算出された複数のランレングス値のそれぞれについて、算出された最小モジュール幅に対する比率を、最小ランレングス比率として算出する。
制御部11は、複数の縮小後最小モジュール候補値のうち、最小バーコードサイズに縮小後最小モジュール候補値を乗じた縮小後バーコードサイズが、バーコードが配置される配置可能領域のバーコード配列方向BDに沿った長さ以下となる最大の縮小後最小モジュール候補値を、縮小後最小モジュール決定値として設定する。最小バーコードは、算出された複数の最小ランレングス比率を複数のランレングス値としたバーコードである。最小バーコードサイズは、最小バーコードのバーコード配列方向BDに沿った長さである。縮小後最小モジュール候補値は、正の整数値を有する倍率である。
【0072】
制御部11は、算出された複数の最小ランレングス比率のそれぞれに対して縮小後最小モジュール決定値を乗じた値を複数の更新ランレングス値とする。
制御部11は、複数の更新ランレングス値に基づいて、バーコードを生成する。
【0073】
このようにプリンタ1は、最大ランレングス値との比率が、バーコード仕様を満たす最小のランレングス値を、最小モジュール幅として算出する。そしてプリンタ1は、最小モジュール幅に基づいて算出された複数の最小ランレングス比率を複数のランレングス値とした最小バーコードに対して、配置可能領域に収まる最大の倍率(すなわち、縮小後最小モジュール決定値)を乗じることによって、バーコードを生成する。
【0074】
これにより、プリンタ1は、バーコード仕様を満たすようにしてバーコードを再構築することができ、生成したバーコードの品質を向上させることができる。
また制御部11は、印刷部15の出力解像度に応じて、出力解像度が高いほど縮小後最小モジュール決定値の最小値を大きくする。これにより、プリンタ1は、出力解像度に応じて、候補とすることができない縮小後最小モジュール候補値を予め除外して縮小後最小モジュール決定値を決定することができ、制御部11の処理負荷を低減することができる。
【0075】
(5)GS1-128への適用
GS1-128は、Code128を使用した規格である。すなわち、GS1-128では、シンボルキャラクタは、Code128と同様に、3本のバーと3本のスペースとを交互に配置することにより表現され、バーおよびスペースの幅は、1モジュール幅、2モジュール幅、3モジュール幅および4モジュール幅の4種類である。このため、本開示は、GS1-128にも適用可能である。
【0076】
(6)ITF、CODE39、CODABAR(NW-7)への適用
(6-1)ITFについて
ITFは、5本のバーおよび5本のスペースで2つのキャラクタを表す規格である。5本のバーのうち、2本が太バーであり、3本が細バーである。5本のスペースのうち、2本が太スペースであり、3本が細スペースである。以下、太バーおよび太スペースをまとめて太モジュール、細バーおよび細スペースをまとめて細モジュールという。
【0077】
基本モジュール幅は1.016mmである。基本モジュール幅は、プリンタ1の出力解像度が200dpiである場合には8ピクセルに相当し、プリンタ1の出力解像度が300dpiである場合には12ピクセルに相当する。そしてモジュール幅は、基本モジュール幅に対して0.25~1.2倍で認められている。つまり、最小のモジュール幅は、Code128と同様に、200dpiで2ピクセルであり、300dpiで3ピクセルである。
【0078】
細モジュールと太モジュールとの比は、「1:2.0~3.0」である。
クワイエットゾーンは、「最小モジュール幅×10」である。
(6-2)CODE39について
CODE39は、9本のバーおよびスペースで1つのキャラクタを表す規格である。CODE39は、太さが互いに異なる2種類のバー(すなわち、太バーおよび細バー)と、太さが互いに異なる2種類のスペース(すなわち、太スペースおよび細スペース)とを備える。細モジュール幅は0.191mm以上である。
【0079】
細モジュールと太モジュールとの比は、「1:2.0~3.0」である。
キャラクタ間のギャップ幅は、細モジュール幅以上である。
クワイエットゾーンは、「細モジュール幅×10」である。
【0080】
(6-3)CODABAR(NW-7)について
CODABAR(NW-7)は、4本のバーおよび3本のスペースで1つのキャラクタを表す規格である。CODABAR(NW-7)は、太さが互いに異なる2種類のバー(すなわち、太バーおよび細バー)と、太さが互いに異なる2種類のスペース(すなわち、太スペースおよび細スペース)とを備える。細モジュール幅は0.191mm以上である。
【0081】
細モジュールと太モジュールとの比は、「1:2.0~3.0」である。
キャラクタ間のギャップ幅は、細モジュール幅以上である。
クワイエットゾーンは、「細モジュール幅×10」である。
【0082】
(6-4)適用方法
本開示をITF、CODE39、CODABAR(NW-7)に適用するためには、まず、最小モジュール幅の算出(すなわち、S220~S250の処理)において、最大モジュール幅と最小モジュール幅との比率を2.0~3.0とする必要がある。
【0083】
さらに、最小ランレングス情報への変換(すなわち、S260の処理)において、太モジュールを細モジュールの2.5倍として最小ランレングス比率を算出する必要がある。
(7)CODE93への適用
CODE93は、3本のバーおよび3本のスペースで1つのキャラクタを表す規格である。但し、CODE93では、3本のバーおよび3本のスペースの合計の幅が9モジュール幅となるように、3本のバーおよび3本のスペースの幅が設定される。
【0084】
CODE93では、バーおよびスペースの幅は、1モジュール幅、2モジュール幅および3モジュール幅の3種類である。
従って、本開示をCODE93に適用するためには、最小ランレングス情報への変換(すなわち、S260の処理)において、複数の最小ランレングス比率が1,2,3の何れかになるようにして最小ランレングス情報を作成する必要がある。
【0085】
(8)UPC、JAN、EANへの適用
UPC、JAN、EANでは、基本寸法の細モジュール幅は0.33mmであり、細モジュール幅は0.8~2.0倍で拡大または縮小が可能である。すなわち、細モジュール幅は0.26~0.66mmである。
【0086】
UPC、JAN、EANでは、バーおよびスペースの幅は、Code128と同様に、1モジュール幅、2モジュール幅、3モジュール幅および4モジュール幅の4種類である。
【0087】
従って、Code128と同様に、本開示をUPC、JAN、EANに適用可能である。
以上説明した実施形態において、プリンタ1は画像処理装置に相当し、S210はランレングス算出処理およびランレングス算出ステップに相当し、S220~S250は最小モジュール算出処理および最小モジュール算出ステップに相当する。
【0088】
また、S260は比率算出処理および比率算出ステップに相当し、S270~S330は倍率設定処理および倍率設定ステップに相当し、S340はランレングス更新処理およびランレングス更新ステップに相当し、S350はバーコード生成処理およびバーコード生成ステップに相当する。
【0089】
また、バーコード配列方向BDは配列方向に相当し、縮小後最小モジュール候補値は候補倍率に相当し、縮小後最小モジュール決定値は更新倍率に相当する。
以上、本開示の一実施形態について説明したが、本開示は上記実施形態に限定されるものではなく、種々変形して実施することができる。
【0090】
上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。
【0091】
上述したプリンタ1の他、当該プリンタ1を構成要素とするシステム、当該プリンタ1としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、画像処理方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【0092】
1…プリンタ、11…制御部、15…印刷部
図1
図2
図3
図4
図5
図6
図7
図8
図9