(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-28
(45)【発行日】2023-12-06
(54)【発明の名称】コンピュータプログラム、および、生成装置
(51)【国際特許分類】
G06F 3/12 20060101AFI20231129BHJP
B41J 3/01 20060101ALI20231129BHJP
H04N 1/409 20060101ALI20231129BHJP
【FI】
G06F3/12 343
G06F3/12 344
G06F3/12 308
B41J3/01
H04N1/409
(21)【出願番号】P 2019226098
(22)【出願日】2019-12-16
【審査請求日】2022-12-13
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】吉田 鑑地
【審査官】征矢 崇
(56)【参考文献】
【文献】特開2014-049774(JP,A)
【文献】特開2003-048340(JP,A)
【文献】特開2021-057669(JP,A)
【文献】特開2013-035291(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/12
B41J29/00-29/70
B41J2/01;2/165-2/20;2/21-2/215
B41J3/01-3/54
H04N1/00;1/387;1/40-1/409
(57)【特許請求の範囲】
【請求項1】
印刷用の画像データを生成するコンピュータのためのコンピュータプログラムであって、
第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得機能と、
前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定機能と、
前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮機能と、
前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定機能と、
前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正機能と、
前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成機能と、
をコンピュータに実現させ
、
前記画素特定機能は、前記除去画素に隣接する複数の画素のうちの1以上の特定の隣接画素を含む前記複数の対象画素を特定し、
前記コンピュータプログラムは、
前記コード領域に含まれる前記除去画素を膨張する膨張処理を実行する膨張機能を前記コンピュータに実現させ、
前記画素特定機能は、前記膨張処理によって追加される複数の画素のうちの1以上の特定の追加画素であって前記1以上の特定の隣接画素を含む前記1以上の特定の追加画素を含む前記複数の対象画素を特定する、
コンピュータプログラム。
【請求項2】
請求項
1に記載のコンピュータプログラムであって、
前記画素特定機能は、前記膨張処理によって追加される前記複数の画素のうち、前記第2部分の画素の画素値を含む第1範囲内の画素値を有する画素を除いた残りの画素を、前記前記1以上の特定の追加画素として特定する、
コンピュータプログラム。
【請求項3】
請求項
1または
2に記載のコンピュータプログラムであって、
前記画素特定機能は、
前記収縮処理によって除去される前記除去画素と、前記膨張処理によって追加される前記複数の画素と、を示すマスクデータを生成し、
前記マスクデータを用いて前記複数の対象画素を特定する、
コンピュータプログラム。
【請求項4】
請求項1から
3のいずれかに記載のコンピュータプログラムであって、
前記画素特定機能は、複数の画素のそれぞれの重みを、前記除去画素から遠いほど大きな値に決定し、
前記補正機能は、前記複数の対象画素のうちの注目画素の画素値を、前記注目画素の周辺に位置する複数の画素のうち、前記第2部分の画素の画素値を含む第2範囲内の画素値を有する画素を除いた残りの画素のそれぞれの画素値と重みとを用いて決定する、
コンピュータプログラム。
【請求項5】
印刷用の画像データを生成するコンピュータのためのコンピュータプログラムであって、
第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得機能と、
前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定機能と、
前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮機能と、
前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定機能と、
前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正機能と、
前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成機能と、
をコンピュータに実現させ
、
前記画素特定機能は、複数の画素のそれぞれの重みを、前記除去画素から遠いほど大きな値に決定し、
前記補正機能は、前記複数の対象画素のうちの注目画素の画素値を、前記注目画素の周辺に位置する複数の画素のうち、前記第2部分の画素の画素値を含む第2範囲内の画素値を有する画素を除いた残りの画素のそれぞれの画素値と重みとを用いて決定する、
コンピュータプログラム。
【請求項6】
請求項
5に記載のコンピュータプログラムであって、
前記画素特定機能は、前記除去画素に隣接する複数の画素のうちの1以上の特定の隣接画素を含む前記複数の対象画素を特定する、
コンピュータプログラム。
【請求項7】
請求項1
から6のいずれかに記載のコンピュータプログラムであって、
前記第2部分の最小太さが太さ閾値以上であるか否かを判断する判断機能を前記コンピュータに実現させ、
前記第2部分の前記最小太さが前記太さ閾値以上であると判断される場合、前記生成機能は、前記補正処理による前記補正済の画像データを用いて前記処理画像データを生成し、
前記第2部分の前記最小太さが前記太さ閾値以上であると判断されない場合、前記生成機能は、前記補正処理によって補正されていない画像データを用いて前記処理画像データを生成する、
コンピュータプログラム。
【請求項8】
請求項1から7のいずれかに記載のコンピュータプログラムであって、
前記領域特定機能は、人可読文字を含まない領域を前記コード領域として特定する、
コンピュータプログラム。
【請求項9】
請求項1から8のいずれかに記載のコンピュータプログラムであって、
前記処理画像データを用いて印刷データを生成する機能と、
前記印刷データを前記印刷装置に出力する機能と、
を前記コンピュータに実現させる、コンピュータプログラム。
【請求項10】
印刷用の画像データを生成する生成装置であって、
第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得部と、
前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定部と、
前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮部と、
前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定部と、
前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正部と、
前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成部と、
を備え
、
前記画素特定部は、前記除去画素に隣接する複数の画素のうちの1以上の特定の隣接画素を含む前記複数の対象画素を特定し、
前記生成装置は、
前記コード領域に含まれる前記除去画素を膨張する膨張処理を実行する膨張部を備え、
前記画素特定部は、前記膨張処理によって追加される複数の画素のうちの1以上の特定の追加画素であって前記1以上の特定の隣接画素を含む前記1以上の特定の追加画素を含む前記複数の対象画素を特定する、
生成装置。
【請求項11】
印刷用の画像データを生成する生成装置であって、
第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得部と、
前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定部と、
前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮部と、
前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定部と、
前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正部と、
前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成部と、
を備え
、
前記画素特定部は、複数の画素のそれぞれの重みを、前記除去画素から遠いほど大きな値に決定し、
前記補正部は、前記複数の対象画素のうちの注目画素の画素値を、前記注目画素の周辺に位置する複数の画素のうち、前記第2部分の画素の画素値を含む第2範囲内の画素値を有する画素を除いた残りの画素のそれぞれの画素値と重みとを用いて決定する、
生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、印刷用の画像データを生成する技術に関する。
【背景技術】
【0002】
従来から、バーコードなどの種々のコードの画像が、プリンタによって印刷され得る。例えば、レーザプリンタによって、バーコードが印刷され得る。この場合、印刷時のバーコードのバーの方向によって、バーの線幅が異なり得る。例えば、現像ブラシは、感光体上のトナー像の進行方向の端部を掻き取り得る。これにより、印刷時の現像方向に垂直なバーコードの黒バーの線幅が、平行な黒バーの線幅に比べて、細くなり得る。そこで、記録紙の印刷方向に対してバーコードのバーの方向が垂直方向である場合には、黒バーの線幅を1ドット増やして白バーの線幅を1ドット減らす補正を行う技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、バーコードなどのコードの画像の印刷には、種々のプリンタが用いられ得る。プリンタによっては、印刷された画像は、滲み得る。例えば、インクジェットプリンタ、サーマルプリンタによって印刷される画像は、滲み得る。滲みに起因して、印刷されたコードの画像が不適切となる場合があった。
【0005】
本明細書は、コードの画像を適切に印刷する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]印刷用の画像データを生成するコンピュータのためのコンピュータプログラムであって、第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得機能と、前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定機能と、前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮機能と、前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定機能と、前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正機能と、前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成機能と、をコンピュータに実現させる、コンピュータプログラム。
【0008】
この構成によれば、収縮処理によって第2部分から除かれる画素を含む複数の対象画素のそれぞれの画素値を第1部分の画素の画素値に近づける補正処理が実行され、補正処理による補正済の画像データを用いて処理画像データが生成されるので、印刷された画像が滲み得る場合であっても、コードの画像の適切な印刷を可能にする処理画像データを生成できる。
[適用例2]
適用例1に記載のコンピュータプログラムであって、
前記第2部分の最小太さが太さ閾値以上であるか否かを判断する判断機能を前記コンピュータに実現させ、
前記第2部分の前記最小太さが前記太さ閾値以上であると判断される場合、前記生成機能は、前記補正処理による前記補正済の画像データを用いて前記処理画像データを生成し、
前記第2部分の前記最小太さが前記太さ閾値以上であると判断されない場合、前記生成機能は、前記補正処理によって補正されていない画像データを用いて前記処理画像データを生成する、
コンピュータプログラム。
[適用例3]
適用例1または2のいずれかに記載のコンピュータプログラムであって、
前記画素特定機能は、前記除去画素に隣接する複数の画素のうちの1以上の特定の隣接画素を含む前記複数の対象画素を特定する、
コンピュータプログラム。
[適用例4]
適用例3に記載のコンピュータプログラムであって、
前記コード領域に含まれる前記除去画素を膨張する膨張処理を実行する膨張機能を前記コンピュータに実現させ、
前記画素特定機能は、前記膨張処理によって追加される複数の画素のうちの1以上の特定の追加画素であって前記1以上の特定の隣接画素を含む前記1以上の特定の追加画素を含む前記複数の対象画素を特定する、
コンピュータプログラム。
[適用例5]
適用例4に記載のコンピュータプログラムであって、
前記画素特定機能は、前記膨張処理によって追加される前記複数の画素のうち、前記第2部分の画素の画素値を含む第1範囲内の画素値を有する画素を除いた残りの画素を、前記前記1以上の特定の追加画素として特定する、
コンピュータプログラム。
[適用例6]
適用例4または5に記載のコンピュータプログラムであって、
前記画素特定機能は、
前記収縮処理によって除去される前記除去画素と、前記膨張処理によって追加される前記複数の画素と、を示すマスクデータを生成し、
前記マスクデータを用いて前記複数の対象画素を特定する、
コンピュータプログラム。
[適用例7]
適用例1から6のいずれかに記載のコンピュータプログラムであって、
前記画素特定機能は、複数の画素のそれぞれの重みを、前記除去画素から遠いほど大きな値に決定し、
前記補正機能は、前記複数の対象画素のうちの注目画素の画素値を、前記注目画素の周辺に位置する複数の画素のうち、前記第2部分の画素の画素値を含む第2範囲内の画素値を有する画素を除いた残りの画素のそれぞれの画素値と重みとを用いて決定する、
コンピュータプログラム。
[適用例8]
適用例1から7のいずれかに記載のコンピュータプログラムであって、
前記領域特定機能は、人可読文字を含まない領域を前記コード領域として特定する、
コンピュータプログラム。
[適用例9]
適用例1から8のいずれかに記載のコンピュータプログラムであって、
前記処理画像データを用いて印刷データを生成する機能と、
前記印刷データを前記印刷装置に出力する機能と、
を前記コンピュータに実現させる、コンピュータプログラム。
[適用例10]
印刷用の画像データを生成する生成装置であって、
第1部分と前記第1部分の明るさとは異なる明るさを有する第2部分とを含み前記第1部分と前記第2部分とによって情報を示すコードの画像を含む入力画像の入力画像データを取得する取得部と、
前記入力画像中の前記コードを含む領域であるコード領域を特定する領域特定部と、
前記コード領域に含まれる前記第2部分を収縮する収縮処理を実行する収縮部と、
前記収縮処理によって除去される画素である除去画素を含む複数の対象画素を前記コード領域内から特定する画素特定部と、
前記複数の対象画素のそれぞれの画素値を前記第1部分の画素の画素値に近づける補正処理を実行する補正部と、
前記補正処理による補正済の画像データを用いて、印刷装置による印刷のための画像データである処理画像データを生成する生成部と、
を備える、生成装置。
【0009】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、印刷データの生成方法および印刷データの生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0010】
【
図1】(A)は、実施例の画像処理システムを示す概略図である。(B)は、印刷装置10の構成を示す概略図である。
【
図3】(A)は、入力画像の例を示す概略図である。(B)は、コード領域の例を示す説明図である。(C)は、最小太さTmの説明図である。(D)は、拡張されたコード領域の例を示す説明図である。
【
図4】マスクデータの生成処理の例を示すフローチャートである。
【
図5】(A)、(B)は、収縮条件の例を示す説明図である。(C)、(D)は、膨張処理の例を示す説明図である。
【
図7】重みを決定する処理の例を示すフローチャートである。
【
図8】(A)-(F)は、重みの決定の例を示す説明図である。
【
図11】(A)-(D)は、補正処理によるバーコードの画像の変化の例を示す説明図である。
【
図12】(A)は、画像処理の別の実施例のフローチャートの一部である。(B)は、コード領域の例を示す説明図である。(C)は、特定される人可読文字の領域の例を示す説明図である。(D)、(E)は、修正済のコード領域の例を示す説明図である。
【発明を実施するための形態】
【0011】
A.第1実施例:
A1.装置構成:
図1(A)は、実施例の画像処理システムを示す概略図である。画像処理システム1000は、コードを含む画像をシート上に印刷するためのシステムである。後述するように、本実施例では、コードは、1次元のバーコードである。
【0012】
画像処理システム1000は、データ処理装置200と、データ処理装置200に接続された印刷装置10と、を備えている。データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、プロセッサ210と、記憶装置215と、画像を表示する表示部240と、ユーザによる操作を受け入れる操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0013】
プロセッサ210は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、第1プログラム232と、第2プログラム233と、を格納している。第1プログラム232は、印刷のための画像データを処理するアプリケーションプログラムである。第2プログラム233は、印刷装置10を制御するプリンタドライバである。プロセッサ210は、第1プログラム232と、第2プログラム233と、の実行に利用される種々の中間データを、記憶装置215(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。プログラム232、233の詳細については、後述する。
【0014】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示する装置である。操作部250は、表示部240上に重ねて配置されたタッチパネル、ボタン、レバーなどの、ユーザによる操作を受け取る装置である。ユーザは、操作部250を操作することによって、種々の指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。印刷装置10は、通信インタフェース270に接続されている。
【0015】
図1(B)は、印刷装置10の構成を示す概略図である。本実施例では、印刷装置10は、いわゆるインクジェットプリンタである。図中には、印刷装置10の断面が示されている。印刷装置10は、筐体11と、筐体11の外面に固定された操作パネル192と、を備えている。筐体11には、排出口12が形成されている。また、印刷装置10は、筐体11の内に配置された複数の部材を備えている。具体的には、筐体11の内には、ホルダ111と、ホルダ111に取り付けられたロール紙110(印刷媒体の一例)と、搬送ローラ140、150a、150b、160a、160bと、印刷ヘッド170と、プラテン180と、インクタンク13と、制御回路190と、が配置されている。本実施例では、ロール紙110は、ロールシートと、ロールシート上に貼り付けられた粘着ラベル紙(単にラベル紙とも呼ぶ)と、を備えている。印刷装置10は、ラベル紙に、画像を印刷する。印刷後、ユーザは、ラベル紙をロールシートから剥がし、そして、ラベル紙を任意の対象物(例えば、商品、梱包箱など)に貼り付けることができる。
【0016】
図中には、ロール紙110の搬送路112が示されている。搬送路112は、ホルダ111に取り付けられたロール紙110から、印刷ヘッド170とプラテン180との間を通って、排出口12へ至る。複数の搬送ローラ140、150a、150b、160a、160bは、搬送路112に沿って、この順に並んで配置されている。2個の搬送ローラ160a、160bは、印刷ヘッド170と排出口12との間に配置され、他の搬送ローラ140、150a、150bは、印刷ヘッド170とホルダ111との間に配置されている。1以上の搬送ローラ(例えば、搬送ローラ150a、150b)は、図示しないモータによって駆動される。複数の搬送ローラは、ロール紙110を、搬送路112に沿って搬送する。
【0017】
インクタンク13は、インクを収容している。インクタンク13と印刷ヘッド170とは、図示しないインク供給路(例えば、チューブ)によって、接続されている。インクタンク13内のインクは、インク供給路を通じて、印刷ヘッド170に供給される。本実施例では、印刷装置10は、黒色のインクを用いて、モノクロ印刷を行う。
【0018】
印刷ヘッド170は、ノズル面172を備えている。ノズル面172は、プラテン180を向いている。ノズル面172上には、複数のノズル174が設けられている。図示を省略するが、複数のノズル174は、ロール紙110の搬送方向に交差する方向の位置が互いに異なる複数のノズル174を含んでいる。各ノズル174の内部には、インクを吐出させるためのアクチュエータ(図示省略。例えば、ピエゾ素子、ヒータなど)が設けられている。印刷ヘッド170は、複数のノズル174から、プラテン180上のロール紙110に向かって、インク滴を吐出する。これにより、ロール紙110上に、インクドットが形成される。複数のインクドットによって、ロール紙110上に画像が形成される。
【0019】
制御回路190は、印刷装置10を制御する電気回路である。制御回路190は、例えば、モータなどを駆動する専用の電気回路(例えば、ASIC(Application Specific Integrated Circuit))で構成されている。制御回路190は、コンピュータを含んでもよい。制御回路190は、外部装置(例えば、データ処理装置200)から受信した印刷データに従って、印刷を実行する。本実施例では、制御回路190は、印刷ヘッド170によるインクドットの形成とロール紙110の搬送とを行うことによって、ロール紙110上に画像を印刷する。本実施例では、印刷ヘッド170は、筐体11に固定されており、移動しない。このような印刷装置10は、ラインプリンタとも呼ばれる。
【0020】
図2は、画像処理の例を示すフローチャートである。以下、データ処理装置200が、ユーザからの開始指示に応じて、
図2の処理を開始することとする。
図2の処理は、第1処理S100と、第1処理S100に続く第2処理S200と、で構成されている。第1処理S100は、画像を補正する処理であり、複数の処理S110-S197を含んでいる。第2処理S200は、第1処理S100で処理された画像を印刷する処理であり、複数の処理S210-S220を含んでいる。プロセッサ210(
図1)は、第1プログラム232に従って作成された入力画像データを用いて、第2プログラム233に従って、第1処理S100および第2処理S200を実行する。本実施例では、
図2のフローチャートが開始される前に、プロセッサ210は、第1プログラムを用いて、任意の方法で、入力画像データが生成されていることを前提としている。入力画像データの生成方法は、種々の方法であってよい。プロセッサ210は、例えば、ユーザによって入力された情報を用いて、その情報を示すバーコードの画像を生成し、バーコードの画像を含む入力画像データを生成してよい。生成した入力画像データは、例えば、記憶装置215に記憶されている。
【0021】
なお、開始指示の入力方法は、任意の方法であってよい。本実施例では、ユーザは、操作部250(
図1)を操作することによって、開始指示を入力する。開始指示は、印刷用の入力画像を表す入力画像データを指定する情報を含んでいる。入力画像データは、種々のデータであってよく、例えば、記憶装置215(例えば、不揮発性記憶装置230)に格納済みの画像データであってよい。
【0022】
S110では、プロセッサ210は、開始指示で指定された入力画像データを取得する。本実施例では、入力画像データとして、グレースケールのビットマップデータが用いられる。入力画像データの各画素の画素値は、0から255までの256階調の輝度値で表されていることとする。開始指示によって指定された画像データがJPEGデータである場合、プロセッサ210は、JPEGデータを展開し、各画素の輝度値を算出することによって、入力画像データを取得する。開始指示によって指定された画像データの形式がビットマップ形式とは異なる形式である場合(例えば、EMF(Enhanced Meta File)形式)、プロセッサ210は、データ形式を変換(例えば、ラスタライズ)することによって生成されるビットマップデータを、入力画像データとして用いる。
【0023】
図3(A)は、入力画像の例を示す概略図である。入力画像400は、第1方向Dxに平行な2辺と、第1方向Dxに垂直な第2方向Dyに平行な2辺と、で囲まれる矩形状の画像である。図示を省略するが、入力画像400の複数の画素は、第1方向Dxと第2方向Dyとに沿って格子状に配置されいる。本実施例では、ロール紙110(
図1)上に入力画像400が印刷される場合、入力画像400の第2方向Dyは、ロール紙110の搬送方向と同じである。ただし、入力画像400は、ロール紙110上で、他の方向を向いてもよい。
【0024】
図3(A)の例では、入力画像400は、白色の背景と、文字列画像409と、コードセット画像500と、を含んでいる。文字列画像409は、複数の文字列を示している(
図3(A)の例では、2つの文字列)。コードセット画像500は、第1方向Dxに並ぶ複数の黒バーと複数の空白(白バーとも呼ぶ)で構成されるバーコード510と、バーコード510の下に配置された文字列590と、を示している。バーコード510の黒バーと白バーとは、交互に並んでいる。以下、白バーを「第1部分」とも呼び、黒バーを「第2部分」とも呼ぶ。白バーの色は、背景の色と同じである。白バーの画素の画素値(すなわち、背景の画素の画素値)は、例えば、255である。黒バーの画素の画素値は、白バーの画素の画素値よりも暗い色を示しており、例えば、ゼロである。なお、本実施例では、入力画像の他のオブジェクト(例えば、文字列画像409の文字や、文字列590の文字)の画素値は、黒バーの画素値と同じである。
【0025】
バーコード510は、バーコード510の両端と中央部に配置された3組のガードバーセット520、530、540を含んでいる。各ガードバーセット520、530、540は、2本の黒バーで構成されている。これらのガードバーセット520、530、540は、他の黒バーと比べて、第2方向Dyに突出している。文字列590は、バーコード510によって示される情報(
図3(A)の例では、複数の数字)を示している。
【0026】
なお、入力画像データは、第1プログラムを用いて生成されたものに限らず、プロセッサ210は、例えば、スキャナによって読み取られたバーコード画像を含む入力画像データを取得してもよい。
【0027】
S120(
図2)では、プロセッサ210は、入力画像を解析することによって、バーコード510を含む領域であるコード領域を特定する。コード領域の特定方法は、任意の方法であってよい。本実施例では、日本の特開2017-182455号に記載の方法が採用されることとする。この方法では、画像中から処理対象の画素ラインである対象ラインが選択される。画素ラインは、特定の方向(例えば、左右方向)に沿って並ぶ複数の画素によって構成される画素グループである。対象ラインの複数の画素は、二値化され、背景を表すOFF画素と、背景以外の部分を表すON画素と、に分類される。対象ラインがバーコードを示す場合、ON画素は黒バーを示し、OFF画素は空白を示している。また、画素ライン上において、連続するON画素の個数は、黒バーの幅を示し、連続するOFF画素の個数は、空白の幅を示している。バーコードは、連続する複数の画素ラインによって、示される。そこで、連続する複数の画素ラインの間で、隣接する複数のON画素が連結される。連結された複数のON画素で構成される1個のON画素グループは、1本の黒バーを示し得る。連続する複数の画素ラインの領域のうち、バーコードを構成する各バーの幅の特徴に整合する領域を含むとともに、余白領域に挟まれた領域が、コード領域として特定される。このように、画素ラインを用いることによって、画素ラインの延びる方向に並ぶ複数のバーで構成されるバーコードの領域が、特定される。
【0028】
プロセッサ210は、第1方向Dxに延びる画素ラインを用いることによって、
図3(A)のバーコード510のように第1方向Dxに並ぶ複数のバーで構成されるバーコードの領域を特定する。また、プロセッサ210は、第2方向Dyに延びる画素ラインを用いることによって、第2方向Dyに並ぶ複数のバーで構成されるバーコードの領域を特定する。このように、S120では、プロセッサ210は、コード領域に対応付けて複数のバーの並ぶ方向(バーコード方向とも呼ぶ)を、第1方向Dxと第2方向Dyとから特定できる。なお、実際のバーコードは、第1方向Dxまたは第2方向Dyに対して、斜めであってもよい。
【0029】
図3(B)は、コード領域の例を示す説明図である。図中には、
図3(A)の入力画像400と同じ入力画像400が示されている。領域405は、S120(
図2)で特定されるコード領域である。本実施例では、第1方向Dxに平行な2辺と第2方向Dyに平行な2辺とで囲まれる矩形領域が、コード領域として特定される。また、本実施例では、ON画素を連結できない画素ラインは、コード領域の特定に用いられない。従って、ガードバーセット520、530、540のうち他の黒バーよりも突出した部分は、コード領域405に含まれていない。そして、この突出した部分よりも更にバーコード510から遠い文字列590も、コード領域405に含まれていない。なお、入力画像は、Q個(Qは、1以上の任意の数)のバーコードを含んでよい。この場合、S120では、Q個のコード領域が特定され得る。
【0030】
次に、プロセッサ210は、特定されたコード領域のそれぞれに関して、ループ制御のS130a、S130bに挟まれた処理(S140-S195)を実行する。S140では、プロセッサ210は、未処理のコード領域から、処理対象のコード領域である注目コード領域を選択する。
【0031】
S150では、プロセッサ210は、注目コード領域に含まれる複数の第2部分(本実施例では、黒バー)の最小太さTmを特定する。
図3(C)は、最小太さTmの説明図である。図中には、複数の黒バー512と複数の白バー511とが示されている。複数の黒バー512のそれぞれの太さは、バーコードの規格に基づく複数の太さから選択される可変値である。最小太さTmは、注目コード領域に含まれる複数の黒バー512のそれぞれの太さのうちの最小値である。本実施例では、プロセッサ210は、注目コード領域の各画素の画素値を、画素値閾値を用いて二値化する。画素値閾値より大きい画素値を有する画素は、背景を示す背景画素に分類され、画素値閾値以下の画素値を有する画素は、背景以外を表す非背景画素に分類される。プロセッサ210は、連続する複数の非背景画素のグループを、1個の黒バーとして特定する。プロセッサ210は、各黒バーのバーコード方向の太さを特定し、最小太さTmを特定する。S120(
図2)で説明したように、バーコード方向は、複数のバーの並ぶ方向であり、第1方向Dxまたは第2方向Dyから特定される。なお、本実施例では、画素値閾値は、コード領域の特定(
図2:S120)に用いられた閾値と同じである。
【0032】
なお、黒バーの太さは、黒バーの延びる方向(
図3(C)の例では、第2方向Dy)の位置に応じて異なり得る。例えば、入力画像データが、バーコードの読取画像データを用いて生成された場合、黒バーの太さがバーの途中で変化し得る。ただし、バーコードの規格では、1個の黒バーの太さは、一定である。従って、1個の黒バーの太さとしては、1個の黒バーから特定される複数の太さを用いて算出される1個の代表値(例えば、最大値、最小値、平均値、中央値などの統計値)が用いられてよい。また、黒バーは、S120で特定されるバーコード方向(
図3(B)の例では、第1方向Dx)に対して、垂直ではなく斜めであり得る。プロセッサ210は、黒バーの延びる方向を特定し、特定した方向に垂直な方向の太さを算出してよい。
【0033】
最小太さTmが太さ閾値Tt以上である場合(
図2:S150:Yes)、S160で、プロセッサ210は、注目コード領域を拡張する。
図3(D)は、拡張されたコード領域の例を示す説明図である。図中には、
図3(A)の入力画像400と同じ入力画像400が示されている。領域405eは、コード領域405(
図3(B))から拡張されたコード領域を示している。本実施例では、プロセッサ210は、注目コード領域の輪郭の全体を、予め決められた調整量だけ外側に移動させる。コード領域の拡張は、コード領域にバーコードを囲む背景(すなわち、余白)を含ませるために、行われる。コード領域を拡張する理由は、後述する膨張処理と補正処理を適切に行うためである。膨張処理と補正処理では、黒バーの輪郭の周辺の画素が、参照される。調整量は、これらの処理で参照され得る画素が、拡張済のコード領域に含まれるように、予め決定される。例えば、補正処理において、黒バーの輪郭から3画素の距離の画素が参照され得る場合、調整量は3以上(例えば、3)に設定される。なお、本実施例では、文字列590は、バーコード510から、調整量よりも大きい距離、離れている。従って、文字列590は、拡張済のコード領域405eには、含まれていない。
【0034】
S170では、プロセッサ210は、マスクデータを生成する。
図4は、マスクデータの生成処理の例を示すフローチャートである。マスクデータは、後述する補正処理の対象となる複数の対象画素の候補を示している。本実施例では、マスクデータは、注目コード領域の複数の画素のそれぞれの値(マスク値と呼ぶ)を示す二値のビットマップデータである。マスク値は、対象画素を示す対象値と、非対象画素を示す非対象値と、のいずれかに設定される。以下、対象値のマスク値を有する領域を、マスク領域とも呼び、非対象値の領域を、非マスク領域とも呼ぶ。S310では、プロセッサ210は、マスクデータの全ての画素のマスク値を、非対象値に初期化する。
【0035】
S320では、プロセッサ210は、注目コード領域の各画素の画素値を、画素値閾値を用いて二値化する。画素値閾値より大きい画素値を有する画素は、背景を示す背景画素に分類され、画素値閾値以下の画素値を有する画素は、背景以外を表す非背景画素に分類される。背景画素は、白バーを示し、非背景画素は、黒バーを示している。なお、画素値閾値は、コード領域の特定(
図2:S120)に用いられた閾値と同じである。
【0036】
次に、プロセッサ210は、注目コード領域に含まれる複数の画素のそれぞれに関して、ループ制御のS330a、S330bに挟まれた処理(S340-S360)である収縮処理を実行する。S340では、プロセッサ210は、未処理の画素から、処理対象の画素である注目画素を選択する。
【0037】
S350では、プロセッサ210は、注目画素に関する収縮条件が満たされるか否かを判断する。
図5(A)、
図5(B)は、収縮条件の例を示す説明図である。各図には、3行3列の9個の画素PXが示されている。中心の画素PXiは、注目画素である。各図中では、ハッチングが付された画素は、非背景画素(すなわち、黒バーの画素)であり、ハッチングの無い画素は、背景画素である。収縮条件は、黒バーを収縮する場合に、黒バーから注目画素を除去するための条件である。本実施例では、収縮条件は、注目画素を囲む8個の画素が、1以上の背景画素を含むことである。
図5(A)の例では、注目画素PXiを囲む8個の画素の全てが、非背景画素である。このように、8個の画素に含まれる背景画素の総数N1がゼロである場合、注目画素PXiの状態は、維持される。
図5(B)の例では、注目画素PXiの右上の画素PX1が背景画素である。注目画素PXiを囲む8個の画素に含まれる背景画素の総数N1は、1である。総数N1が1以上である場合、注目画素PXiは、除去される。
【0038】
図6は、収縮処理とマスクデータとの説明図である。図中の左部には、注目コード領域の一部の領域の複数の画素PXが示されている。複数の画素PXは、1本の黒バー512と、黒バー512を囲む複数の背景画素と、を示している。黒バー512の画素(すなわち、非背景画素)には、ハッチングが付されている。図中の輪郭512eは、黒バー512の輪郭を示している。
【0039】
収縮条件が満たされる場合(
図4:S350:Yes)、S360で、プロセッサ210は、マスクデータの注目画素のマスク値を対象値に設定する。これにより、注目画素は、マスク領域に追加される。そして、注目画素の処理が終了する。
【0040】
図6の右部には、
図6の左部の複数の画素PXと同じ複数の画素PXが示されている。図中では、収縮条件を満たす画素PXeが、二重線で示されている。図示するように、黒バー512の縁に配置される画素が、収縮条件を満たす。
図6の例では、黒バー512の輪郭512eを形成する環状の領域の複数の画素が、収縮条件を満たす。収縮条件を満たす画素PXeは、第2部分(本実施例では、黒バー)の収縮処理によって除去される画素を示している(以下、除去画素とも呼ぶ)。このような除去画素PXeが、マスク領域に追加される。
【0041】
収縮条件が満たされない場合(
図4:S350:No)、プロセッサ210は、S360をスキップする。これにより、マスクデータの注目画素のマスク値は、非対象値に維持される。そして、注目画素の処理が終了する。
【0042】
注目コード領域の全ての画素の処理の完了に応じて、
図4の処理は終了する。このように、
図4の処理では、注目コード領域に含まれる第2部分(本実施例では、黒バー)の収縮処理によって除去される除去画素が、マスク領域に追加される。そして、除去画素を示すマスクデータが生成される。
【0043】
図4の処理、すなわち、
図2のS170の処理の終了の後、S180では、プロセッサ210は、マスク領域を拡張することによって、注目コード領域の複数の画素のそれぞれの重みを決定する。
図7は、重みを決定する処理の例を示すフローチャートである。S410では、プロセッサ210は、注目コード領域の複数の画素のそれぞれの重みを、予め決められた最大値に初期化する。
【0044】
図8(A)-
図8(F)は、重みの決定の例を示す説明図である。各図中には、注目コード領域の一部の領域の複数の画素PXが示されている。各画素に付された数字は、重みを示している。複数の画素PXの左側に示された数字は、1から始まる第2方向Dyの行番号である。複数の画素PXの下側に示された数字は、1から始まる第1方向Dxの列番号である。
図8(A)は、最大値に初期化された重みを示している。本実施例では、最大値は、3である。また、図中には、マスク領域Amの画素であるマスク画素PXmが、二重線で示されている。
図8(A)のマスク画素PXmは、
図6の除去画素PXeに対応している。マスク領域Amは、環状の領域である。
【0045】
S420(
図7)では、プロセッサ210は、マスク画素の重みから1を減算する。
図8(B)は、S420で処理された重みを示している。マスク画素PXmの重みが、3から2に変更されている。
【0046】
次に、プロセッサ210は、
図7のループ制御のS430a、S430bに挟まれた処理(S440-S450)を、予め決められた回数(拡張量とも呼ぶ)、実行する。拡張量は、1以上の種々の値であってよい。本実施例では、拡張数は、2である。
【0047】
S440では、プロセッサ210は、マスク領域を膨張する膨張処理を実行する。
図5(C)、
図5(D)は、膨張処理の例を示す説明図である。各図には、3行3列の9個の画素PXが示されている。中心の画素PXiは、注目画素である。各図中では、ハッチングが付された画素は、マスク画素であり、ハッチングの無い画素は、マスク画素ではない画素(非マスク画素とも呼ぶ)である。非マスク画素である注目画素PXiが膨張条件を満たす場合、注目画素PXiはマスク画素に追加される。本実施例では、膨張条件は、注目画素を囲む8個の画素が、1以上のマスク画素を含むことである。
図5(C)の例では、注目画素PXiを囲む8個の画素の全てが、非マスク画素である。このように、8個の画素に含まれる非マスク画素の総数N2がゼロである場合、注目画素PXiの状態は、維持される。
図5(B)の例では、注目画素PXiの右下の画素PX2が、マスク画素である。注目画素PXiを囲む8個の画素に含まれるマスク画素の総数N2は、1である。総数N2が1以上である場合、注目画素PXiは、マスク画素に追加される。
【0048】
図8(C)は、
図8(B)の画像に対する膨張処理の結果を示している。
図8(B)の例では、マスク領域Amは、12行3列の大きさを有する環状の領域である。1画素の幅を有するマスク画素PXmの画素ラインが、環状のマスク領域Amを形成している。マスク領域Amの内周側には、10行1列の非マスク領域が形成されている。膨張処理によって、この環状のマスク領域Amは、内周側と外周側とのそれぞれに、1画素分、膨張する。
図8(C)の例では、マスク領域Amは、14行5列の大きさを有する矩形の領域である。内周側の非マスク領域(
図8(B))は、マスク領域に追加されている。
【0049】
S450(
図7)では、プロセッサ210は、重みの減算処理を行う。本実施例では、減算処理によって、膨張後のマスク領域の各マスク画素の重みから1が減算される。
図8(D)は、
図8(C)の重みに対する減算処理の結果を示している。マスク領域Amの各画素の重みが、1だけ低減している。
【0050】
本実施例では、拡張数が2であるので、
図7のS440、S450の処理は、2回行われる。
図8(E)は、
図8(D)の画像に対する膨張処理の結果を示している。膨張処理によって、マスク領域Amは、外周側に、1画素分、膨張する。
図8(E)の例では、マスク領域Amは、16行7列の大きさを有する矩形の領域である。
図8(F)は、
図8(E)の重みに対する減算処理の結果を示している。マスク領域Amの各画素の重みが、1だけ低減している。そして、除去画素PXe(
図8(A))の重みは、ゼロになっている。
【0051】
S440-S450(
図7)の処理の実行回数が拡張数に到達することによって、プロセッサ210は、
図7の処理、すなわち、
図2のS180を終了する。これにより、プロセッサ210は、更新されたマスクデータと、各画素の重みを示す重みデータと、を生成する。
図4、
図6で説明したように、マスク画素は、黒バーの収縮処理によって特定される除去画素、すなわち、黒バーの輪郭を形成する画素を、含んでいる。また、
図7、
図8(A)-
図8(F)で説明したように、マスク画素は、除去画素で構成される領域の膨張処理によって特定される画素、すなわち、黒バーの輪郭の周辺の画素を、含んでいる。また、
図8(F)で説明したように、本実施例では、除去画素の重みは、ゼロである。そして、除去画素から遠いほど、重みは大きくなる。
【0052】
S190(
図2)では、プロセッサ210は、補正処理を実行する。
図9は、補正処理の例を示すフローチャートである。S510では、プロセッサ210は、重み閾値を特定する。本実施例では、重み閾値は、予め決められている。本実施例では、重み閾値は、
図7のS410で説明した重みの最大値と同じである(3であることとする)。
【0053】
次に、プロセッサ210は、注目コード領域に含まれる複数の画素のそれぞれに関して、ループ制御のS520a、S520bに挟まれた処理(S530-S570)を実行する。S530では、プロセッサ210は、未処理の画素から、処理対象の画素である注目画素を選択する。
【0054】
S540では、プロセッサ210は、注目画素が除去画素であるか否かを判断する。本実施例では、注目画素の重みがゼロである場合に、注目画素は除去画素である。プロセッサ210は、重みデータを参照して、S540の判断を行う。注目画素が除去画素である場合(S540:Yes)、プロセッサ210は、S570へ移行する。
【0055】
S570では、プロセッサ210は、注目画素の画素値を補正する。
図10は、補正処理の例を示す説明図である。図中には、
図8(F)のものと同じ複数の画素PXが示されている。図中には、2個の注目画素PXt1、PXt2が示されている。図中の左部には、注目画素PXt1、PXt2を中心とする3行3列の9個の画素PXが、それぞれ、拡大して示されている。各画素PXに付された数字は、重みである。また、拡大して示された画素PXのうち、ハッチングが付された画素は非背景画素(すなわち、黒バーの画素)であり、ハッチングの無い画素は背景画素である。
【0056】
本実施例では、注目画素の補正済の画素値は、注目画素を囲む8個の画素のうちの背景画素の未補正の画素値の重み付平均値である。例えば、
図10の第1注目画素PXt1は除去画素であり(S540:Yes)、第1注目画素PXt1の画素値は、S570で補正される。ここで、注目画素PXt1の右と上と右上との3個の画素は、黒バーの画素である。従って、第1注目画素PXt1の補正済の画素値は、第1注目画素PXt1を囲む8個の画素のうちの残りの5個の背景画素の画素値の重み付平均値に決定される。
【0057】
このように、プロセッサ210は、補正のために、注目画素を囲む8個の画素を参照する(参照される画素である参照画素の領域を、参照領域とも呼ぶ)。第2部分の画素(すなわち、黒バーの画素)は、重み付平均値の算出から除かれる。従って、注目画素値の画素値は、補正によって、第1部分(すなわち、白バー)の画素値に近づけられる。なお、プロセッサ210は、参照画素が第2部分の画素であるか否かを、S320(
図4)で説明した画素値閾値を用いて判断する。注目画素の画素値の補正(
図9:S570)が終了した場合、プロセッサ210は、S530へ移行して、新たな注目画素の処理を行う。
【0058】
注目画素が除去画素ではない場合(S540:No)、S550で、プロセッサ210は、マスクデータを参照し、注目画素がマスク画素であるか否かを判断する。注目画素がマスク画素ではない場合(S550:No)、プロセッサ210は、S570をスキップし、S530へ移行し、新たな注目画素の処理を行う。なお、マスク画素の重みは、
図7のS420、または、S450で、初期値(すなわち、最大値)から減算されている。従って、注目画素の重みが、S510で特定された重み閾値未満である場合、注目画素は、マスク画素である。このように、プロセッサ210は、重みを用いてS550の判断を行ってよい。
【0059】
注目画素がマスク画素である場合(S550:Yes)、S560で、プロセッサ210は、注目画素が背景画素であるか否かを判断する。プロセッサ210は、S320(
図4)で説明した画素値閾値を用いて、S560の判断を行う。注目画素が背景画素ではない場合、すなわち、注目画素が黒バーを示す場合(S560:No)、プロセッサ210は、S570をスキップし、S530へ移行し、新たな注目画素の処理を行う。
【0060】
注目画素が背景画素である場合(S560:Yes)、プロセッサ210は、S570で、注目画素の画素値を補正する。例えば、
図10の第2注目画素PXt2は、マスク画像であり(S550:Yes)、背景画素である(S560:Yes)。従って、第2注目画素PXt2の画素値は、S570で補正される。ここで、第2注目画素PXt2の右下の画素は、黒バーの画素である。従って、第2注目画素PXt2の補正済の画素値は、第2注目画素PXt2を囲む8個の画素のうちの残りの7個の背景画素の画素値の重み付平均値に決定される。
【0061】
このように、プロセッサ210は、S540、S550、S560によって、除去画素(S540:Yes)と、マスク画素のうちの背景画素(S550:Yes、S560:Yes)とを、補正処理の対象画素として、特定している。
【0062】
注目コード領域の全ての画素の処理の完了に応じて、
図9の処理、すなわち、
図2のS190は終了する。
図11(A)-
図11(D)は、補正処理によるバーコードの画像の変化の例を示す説明図である。各図には、バーコードの一部が示されている。
図11(A)は、入力画像データの画素値(すなわち、未補正の画素値)によって示されるバーコード510の白バー511と黒バー512とを示している。
図11(B)は、
図11(A)の画像データの補正処理(
図2:S190)によって生成される補正済の画像データの画素値によって示されるバーコード510aの白バー511aと黒バー512aとを示している。
図9、
図10で説明したように、黒バーの輪郭を形成する除去画素の画素値と、黒バーの輪郭の周辺の画素の画素値とが、背景の画素値(すなわち、白バーの画素値)に近づけられる。これらの結果、黒バー512aは細くなり、白バー511aは太くなる。また、本実施例では、黒バーの輪郭の画素の画素値に加えて、輪郭の周辺の画素の画素値も補正される。従って、アンチエイリアス済の画像のように黒バーと白バーとの境界で画素位置の変化に応じて画素値が徐々に変化する場合であっても、黒バーは、適切に、細くなる。
【0063】
注目コード領域の補正処理(
図2:S190)が終了した場合、プロセッサ210は、S140へ移行して、新たな注目コード領域の処理を行う。
【0064】
黒バーの最小太さTmが太さ閾値Tt未満である場合(
図2:S150:No)、S195で、プロセッサ210は、細コード処理を実行する。細コード処理は、細い黒バーを含む注目コード領域のための任意の処理であってよい。本実施例では、プロセッサ210は、注目コード領域のコントラスト強調処理を実行する。これにより、輪郭がはっきりして、輪郭部のグラデーションが無くなる。これにより、黒バーを実質細くさせることとなる。
【0065】
全てのコード領域の処理が終了した場合、S197で、プロセッサ210は、入力画像データのうちのコード領域に対応する部分をS190またはS195で処理された画像データに置換することによって、処理済の画像データを生成する(以下、処理画像データとも呼ぶ)。そして、S100の処理が終了する。
【0066】
S100が終了した場合、プロセッサ210は、S200を開始する。S210では、プロセッサ210は、処理画像データを用いて、印刷データを生成する。印刷データは、印刷装置10の制御回路190によって解釈可能なデータ形式のデータである。印刷データの生成方法は、任意の方法であってよい。本実施例では、プロセッサ210は、処理画像データの解像度変換処理と、解像度が変換された画像データを用いるハーフトーン処理と、を実行することによって、印刷データを生成する。解像度変換処理は、処理画像データの解像度を印刷用の予め決められた印刷解像度に変換する処理である。処理画像データの解像度が印刷解像度と同じである場合、解像度変換処理は省略される。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。
【0067】
S220では、プロセッサ210は、印刷データを印刷装置10(
図1(B))に出力する。印刷装置10の制御回路190は、受信した印刷データに従って、印刷装置10に画像を印刷させる。本実施例では、印刷装置10は、ロール紙110(具体的には、ラベル紙)に画像を印刷し、そして、印刷済のラベル紙を排出口12から排出する。そして、S200、ひいては、
図2の処理が、終了する。
【0068】
図11(C)は、
図11(B)の画像データに基づいて印刷されたバーコード510bの白バー511bと黒バー512bとを示している。印刷後、インクは、印刷媒体(本実施例ではラベル紙)上で滲み得る。インクの滲みによって、黒バー512bは、膨張する。この結果、ラベル紙上の白バー511bの太さと黒バー512bの太さとの比率は、
図11(A)の白バー511の太さと黒バー512の太さとの比率と、おおよそ同じとなる。このように、適切なバーコードが印刷される。
【0069】
図11(D)は、補正せずに
図11(A)の画像データに基づいて印刷されたバーコード510cの白バー511cと黒バー512cとを示している。インクの滲みによって、黒バー512cが膨張する。この結果、白バー511cは細くなる。白バー511cの太さと黒バー512cの太さとの比率は、元のバーコード510(
図11(A))での比率から大きくずれ得る。このように、補正せずにバーコードが印刷される場合、印刷されるバーコードは不適切となり得る。本実施例では、画像データの補正処理によって黒バーが細くなるので、そのような不具合は抑制される。
【0070】
以上のように、本実施例では、データ処理装置200(具体的には、プロセッサ210)は、
図2のS100の処理を実行することにより、バーコードの画像を含む画像の印刷装置10による印刷のための処理画像データを生成する。具体的には、S110では、プロセッサ210は、入力画像データを取得する。入力画像データは、バーコード510(
図3(A))の画像を含む入力画像400のデータである。バーコード510は、第1部分の例である白バー511(
図3(C))と第1部分の明るさとは異なる明るさを有する第2部分の例である黒バー512とを含み、第1部分と第2部分とによって情報を示している。S120(
図2)では、プロセッサ210は、入力画像400中のバーコード510を含む領域であるコード領域405を特定する。なお、S150の判断結果がYesである場合、プロセッサ210は、S160で、コード領域を拡張する(
図3(D))。このように、プロセッサ210は、S120、S160によって、補正処理で用いられるコード領域を特定している。
【0071】
図2のS170、より具体的には、
図4のS340-S360では、プロセッサ210は、コード領域に含まれる第2部分を収縮する収縮処理を実行する。そして、プロセッサ210は、収縮処理によって除去される画素である除去画素を、マスク領域に追加する(S360)。プロセッサ210は、
図2のS180(すなわち、
図7の処理)と、
図2のS190(具体的には、
図9のS540-S560)を実行することによって、S570の補正処理の対象である複数の対象画素を特定する。複数の対象画素は、除去画素を含んでいる(
図9:S540:Yes)。そして、複数の対象画素は、コード領域内から特定される(
図9:S520a、S520b)。このように、プロセッサ210は、S170(S340-S360)、S180、S190(S540-S560)を実行することによって、複数の対象画素を特定する。そして、
図9のS570では、プロセッサ210は、複数の対象画素のそれぞれの画素値を第1部分(本実施例では、白バー)の画素の画素値に近づける補正処理を実行する。
図2のS197では、プロセッサ210は、補正処理による補正済の画像データを用いて、印刷装置10による印刷のための処理画像データを生成する。
【0072】
このように、収縮処理によって第2部分(本実施例では、黒バー)から除かれる画素を含む複数の対象画素のそれぞれの画素値が、第1部分(本実施例では、白バー)の画素の画素値に近づける補正処理が実行される。そして、補正処理による補正済の画像データを用いて処理画像データが生成される。従って、印刷された画像が滲み得る場合であっても、コードの画像の適切な印刷を可能にする処理画像データを生成できる。
【0073】
また、収縮処理が用いられる場合、ソーベルフィルタなどのエッジ検出フィルタが用いられる場合とは異なり、プロセッサ210は、第2部分の輪郭の延びる方向(ひいては、バーコードの複数のバーの並ぶ方向)を考慮せずに、第2部分の輪郭を形成する画素(上記の除去画素)を適切に特定できる。
【0074】
また、
図2のS150では、プロセッサ210は、第2部分(本実施例では、黒バー)の最小太さTmが太さ閾値Tt以上であるか否かを判断する。そして、第2部分の最小太さTmが太さ閾値Tt以上であると判断される場合(S150:Yes)、S197では、プロセッサ210は、補正処理(S190)による補正済の画像データを用いて処理画像データを生成する。一方、第2部分の最小太さTmが太さ閾値Tt以上であると判断されない場合(S150:No)、S197では、プロセッサ210は、S190の補正処理によって補正されていない画像データを用いて処理画像データを生成する。従って、補正処理(S190)に起因するコードの画像の不適切な印刷は、抑制される。例えば、細い黒バーが補正処理によって更に細くなる場合、黒バーが印刷されなくなる場合がある。本実施例では、そのような不具合は抑制される。なお、太さ閾値Ttは、補正処理によって細くなった黒バーが適切に印刷されるように、予め実験的に決定されてよい。
【0075】
また、
図7、
図8(A)-
図8(F)で説明したように、マスク領域Amは、除去画素PXeの膨張処理によって膨張する。この膨張処理によって、除去画素PXeに隣接する画素は、マスク領域Amに追加される。そして、
図9のS550、S560で説明したように、マスク領域のマスク画素のうちの背景画素は、S570の補正処理の対象画素として用いられる。このように、プロセッサ210は、除去画素に隣接する複数の画素のうちの1以上の特定の隣接画素(本実施例では、除去画素に隣接する背景画素)を含む複数の画素が、S570の補正処理の対象として特定される。従って、入力画像内の第1部分(本実施例では、白バー)と第2部分(本実施例では、黒バー)との境界で画素位置の変化に応じて画素値が徐々に変化する場合であっても、補正処理によって、第2部分は、適切に細くなる。従って、コードの画像の適切な印刷を可能にする処理画像データを生成できる。
【0076】
また、
図7のS440、
図8(A)-
図8(F)で説明したように、プロセッサ210は、コード領域に含まれる除去画素を膨張する膨張処理を実行する。そして、
図9のS550、S560で説明したように、プロセッサ210は、膨張処理によって追加される複数の画素のうちの1以上の特定の追加画素(本実施例では、背景画素)であって1以上の特定の隣接画素(本実施例では、除去画素に隣接する背景画素)を含む1以上の特定の追加画素を含む複数の対象画素を特定する。従って、プロセッサ210は、容易に対象画素を特定できる。例えば、プロセッサ210は、黒バーの輪郭の方向を特定せずに、黒バーの輪郭を形成する除去画素の周辺の画素を特定できる。
【0077】
また、本実施例では、プロセッサ210は、S440の膨張処理を、複数回、実行する。従って、除去画素に隣接する画素に加えて、除去画素から離れた画素も、対象画素として利用可能である。このように、黒バーに隣接する画素に加えて黒バーの周辺の画素が補正されるので、細くなった黒バーの周辺にノイズ(例えば、黒バーの画素値に近い画素値を有する画素)が残ることを抑制できる。
【0078】
また、
図9のS560で説明したように、プロセッサ210は、膨張処理によって追加される複数の画素のうち、第2部分(本実施例では、黒バー)の画素の画素値を含む第1範囲(本実施例では、画素値閾値以下の範囲)内の画素値を有する画素を除いた残りの画素である背景画素を、上記の1以上の特定の追加画素として特定する。従って、第2部分の複数の画素のうち除去画素以外の画素の画素値が補正されることを抑制できる。この結果、第2部分が過度に細くなることが、抑制される。
【0079】
また、
図2のS170、S180、
図4、
図7で説明したように、プロセッサ210は、収縮処理によって除去される除去画素と、膨張処理によって追加される複数の画素と、を示すマスクデータを生成する。そして、
図9の処理では、プロセッサ210は、マスクデータを用いて複数の対象画素を特定する。従って、プロセッサ210は、複数の対象画素を容易に特定できる。なお、本実施例のS550(
図9)では、プロセッサ210は、マスクデータに代えて、重みを用いて、注目画素がマスク画素であるか否か(すなわち、注目画素が対対象画素であるか否か)を判断できる。
図7で説明したように、重みは、マスクデータを用いて、決定される。従って、重みを用いて対象画素を特定する処理は、マスクデータを間接的に用いて対象画素を特定している。また、本実施例の重みデータは、収縮処理によって除去される除去画素と、膨張処理によって追加される複数の画素と、を示すマスクデータの一種である。
【0080】
また、
図2のS180、
図7、
図8(A)-
図8(F)で説明したように、プロセッサ210は、複数の画素のそれぞれの重みを、除去画素から遠いほど大きな値に決定する。そして、
図9、
図10で説明したように、プロセッサ210は、複数の対象画素のうちの注目画素の画素値を、注目画素の周辺に位置する1以上の背景画素のそれぞれの画素値と重みとを用いて決定する。ここで、背景画素は、第2部分(本実施例では、黒バー)の画素の画素値を含む第2範囲(本実施例では、画素値閾値以下の範囲)内の画素値を有する非背景画素を除いた残りの画素である。このように、プロセッサ210は、注目画素の周辺の第2部分の画素とは異なる画素の画素値と重みとを用いて、注目画素の画素値を適切に決定できる。
【0081】
また、除去画素(すなわち、黒バーの輪郭を形成する画素)から遠い画素の画素値は、除去画素に近い画素の画素値と比べて、白バーの画素値に近い場合が多い。従って、除去画素から遠いほど重みが大きい場合、白バーの画素値に近い画素値を有する画素の重みが大きいので、補正処理(
図9:S570)は、適切に、画素値を白バーの画素値に近づけることができる。
【0082】
また、
図3(B)、
図3(D)で説明したように、プロセッサ210は、人可読文字を含まない領域をコード領域として特定する。従って、人可読文字の補正を抑制できる。例えば、文字列590の文字が細くなると、文字が読みにくくなり得る。本実施例では、このような不具合は、抑制される。
【0083】
また、
図2で説明したように、プロセッサ210は、処理画像データを用いて印刷データを生成し(S210)、印刷データを印刷装置10に出力する(S220)。従って、プロセッサ210は、処理画像データに基づく適切な画像を、印刷装置10に印刷させることができる。
【0084】
B.第2実施例:
図12(A)は、画像処理の別の実施例のフローチャートの一部である。本実施例の画像処理は、
図2の画像処理のS100(具体的には、S120とS130aとの間)にS125を追加して得られる処理である。
図12(A)では、S125以外のステップの図示は、省略されている。
図2のS120で説明したように、コード領域を特定する方法としては、コードを含む領域を特定する任意の方法が採用され得る。例えば、予め決められた基準のコード画像を用いるパターンマッチングによって、コード領域が特定されてよい。また、特定されるコード領域は、文字や数字などの人可読文字を含み得る。
図12(B)は、コード領域の例を示す説明図である。図中には、
図3(A)の入力画像400と同じ入力画像400が示されている。領域406は、S120(
図2)で特定されるコード領域である。この領域406は、第1方向Dxに平行な2辺と第2方向Dyに平行な2辺とで囲まれる矩形領域であり、バーコード510と文字列590とを含んでいる。このように、人可読文字を含むコード領域が、特定され得る。
【0085】
S125(
図12(A))では、プロセッサ210は、コード領域に人可読文字が含まれる場合に、人可読文字の領域をコード領域から取り除く。コード領域内の人可読文字を示す領域を特定する方法は、任意の方法であってよい。本実施例では、プロセッサ210は、予め決められた基準の文字画像を用いるパターンマッチングによって、人可読文字を示す領域を特定する。
図12(C)は、特定される人可読文字の領域(以下、文字領域とも呼ぶ)の例を示す説明図である。図中には、
図12(B)のものと同じ入力画像400とコード領域406とが示されている。領域407は、S125で特定される文字領域の例である。図示するように、文字列590を示す領域が、文字領域407として特定される。なお、複数の文字が互いに離れて配置されている場合、それらの文字から複数の文字領域が特定され得る。複数の文字が互いに近い位置に配置されている場合、それらの文字を含む1個の文字領域が特定され得る。
【0086】
プロセッサ210は、文字領域407を除くように、コード領域406を修正する。
図12(D)、
図12(E)は、修正済のコード領域の例を示す説明図である。各図には、
図12(B)のものと同じ入力画像400が示されている。本実施例では、
図12(D)に示すように、プロセッサ210は、コード領域406(
図12(C))から文字領域407を除いた残りの領域の全体を、修正済のコード領域406aとして採用する。コード領域を修正する方法は、他の種々の方法であってよい。例えば、
図12(E)の例のように、プロセッサ210は、コード領域406(
図12(C))から文字領域407を除いた残りの領域内での最大の矩形領域を、修正済のコード領域406bとして採用してよい。
【0087】
なお、S120(
図2)で複数のコード領域が特定される場合、S125では、プロセッサ210は、各コード領域を修正する。コード領域から文字領域が特定されない場合、そのコード領域は、修正されずに維持される。プロセッサ210は、S125に続く処理(
図2)を、S125による処理済のコード領域が用いて、実行する。
【0088】
以上のように、本実施例では、S125(
図12(A))で、コード領域が、文字領域を含まないように、修正される。このように、プロセッサ210は、S120、S125の処理によって、人可読文字を含まない領域をコード領域として特定できる。従って、S190(
図2)の補正処理による人可読文字の補正を抑制できる。また、S120の処理としては、人可読文字を含む領域をコード領域として特定し得るような種々の処理を採用可能である。
【0089】
C.変形例:
(1)収縮処理(
図4:S340-S360)は、第2部分(例えば、黒バー)を収縮させる種々の処理であってよい。例えば、注目画素PXi(
図5(A)、
図5(B))の上下左右の4個の画素に含まれる背景画素の総数が1以上である場合、注目画素PXiが除去されることとしてよい。
【0090】
また、膨張処理(
図7:S440)は、除去画素(ひいてはマスク領域)を膨張させる種々の処理であってよい。例えば、注目画素PXi(
図5(C)、
図5(D))の上下左右の4個の画素に含まれる非マスク画素の総数が1以上である場合、注目画素PXiは、マスク画素に追加されることとしてよい。
【0091】
(2)画素の重みの算出方法は、
図7の方法に代えて、他の種々の方法であってよい。例えば、プロセッサ210は、膨張処理(S440)をK回(Kは、1以上の整数)実行した後に、S450の処理を実行してよい。この場合、同じ重みの画素は、K画素の幅の領域を形成する。また、S450で重みから減算される値である減算値は、1以外の種々の値であってよい。また、プロセッサ210は、拡張量の回数の膨張処理が終了した後に、膨張処理によって追加された複数の画素のそれぞれの重みを決定してよい。例えば、注目画素の重みは、注目画素と除去画素との間の最短距離に予め対応付けられた値に、決定されてよい。また、
図7の実施例は、除去画素の重みがゼロになるように、S410の重みの初期値と、ループ制御(S430a、S430b)の実行回数と、S450の減算値とが、設定されている。ここで、除去画素の重みは、ゼロとは異なる種々の値に決定されてよい。いずれの場合も、各画素の重みは、除去画素から遠いほど大きいことが好ましい。この構成によれば、適切な補正処理(
図9:S570)が可能である。
【0092】
(3)補正処理(
図9:S570)は、上記の処理に代えて、他の種々の処理であってよい。例えば、注目画素の画素値の補正のために参照される参照領域は、注目画素を囲む8個の画素の領域に代えて、注目画素を中心とする5行5列の領域などのように、より広い領域であってよい。いずれの場合も、第2部分の画素(上記実施例では、黒バーの画素)は、参照領域から除かれる。また、補正済の画素値は、重み付平均値に代えて、単純な平均値、中央値など、参照領域の複数の画素の画素値を用いて算出される種々の代表値であってよい。また、補正済の画素値は、予め決められた値(例えば、背景を示す255)であってよい。一般的には、補正処理によって第2部分(上記実施例では、黒バー)を細らせるためには、補正処理は、画素値を第1部分(上記実施例では、白バー)の画素の画素値に近づける種々の処理であってよい。
【0093】
(4)補正処理(
図9:S570)の対象画素を特定する方法は、
図2のS170-S190で説明した方法に代えて、種々の方法であってよい。例えば、プロセッサ210は、マスクデータを生成せずに、対象画素を特定してよい。マスクデータを用いずに対象画素を特定する方法は、種々の方法であってよい。例えば、プロセッサ210は、
図4のS360で、注目画素の画素値を補正してよい。また、プロセッサ210は、
図7のS440で、膨張処理によって追加される画素の画素値を補正してよい。ここで、補正処理は、重みを用いずに行われてよい(例えば、補正済の画素値は、所定値に決定されてよい)。
【0094】
なお、第2部分(上記実施例では、黒バー)の輪郭を形成する画素(上記実施例では、除去画素)を特定する方法としては、ソーベルフィルタなどのエッジ検出フィルタによって検出されるエッジ画素を採用する方法が、考えられる。しかし、エッジ検出フィルタを用いる場合には、輪郭線の延びる方向の特定と、特定された方向に適したフィルタの選択と、を行うために、計算負荷が増大する場合がある。収縮処理を用いる方法と膨張処理を用いる方法とは、第2部分の輪郭線の延びる方向(ひいては、バーコードの複数のバーの並ぶ方向)に拘わらずに、適切な対象画素を特定できる。
【0095】
(5)補正処理(
図9:S570)の対象画素は、
図2のS170-S190で特定される画素に代えて、第2部分(上記実施例では、黒バー)の輪郭を形成する複数の画素(上記実施例では、除去画素)を含む種々の画素であってよい。例えば、除去画素のみが対象画素として採用され、除去画素の周辺の画素は、対象画素から除かれてもよい。
【0096】
(6)コード領域を特定する方法は、上記実施例の方法に代えて、コードを含む領域を特定する種々の方法であってよい。例えば、入力画像内のコードの位置が予め決められている場合がある。この場合、プロセッサ210は、コードを含む予め決められた領域を、コード領域として特定してよい。また、コード領域が人可読文字を含む場合に、人可読文字は、コード領域から除かれずにコード領域内に残されてもよい。
【0097】
(7)入力画像は、コードを含む種々の画像であってよい。入力画像から特定されるコードは、1次元のバーコードに限らず、所定のルールに従って符号化された情報を示す種々の画像を採用可能である。例えば、黒の空白と白のバーとで構成されたバーコードを含む領域が、コード領域として特定されてよい。また、QRコード(登録商標)などの2次元コードを含む領域が、コード領域として特定されてよい。一般的には、コードは、第1部分と第1部分の明るさとは異なる明るさを有する第2部分とを含み、第1部分と第2部分とによって情報を示す種々の画像であってよい。ここで、第2部分は、第1部分と比べて、印刷された画像上で滲んで広がりやすい部分であることが好ましい。例えば、黒色の紙に白インクで画像を印刷する場合、白色の部分は、黒色の部分と比べて、滲んで広がりやすい。この場合、黒色の部分が第1部分として用いられ、白色の部分が第2部分として用いられてよい。この場合も、第1部分(黒部分)の画素である背景画素と第2部分(白部分)の画素である非背景画素とは、画素値閾値を用いて特定可能である。なお、上記実施例では、
図2のS120、S150、
図4のS320、
図9のS560、S570で、画素値を二値化する同じ画素値閾値が用いられる。これに代えて、画素値閾値は、処理毎に独立に決定されてもよい(例えば、画素値閾値は、処理毎に異なってよい)。
【0098】
いずれの場合も、S150(
図2)で用いられる最小太さTmは、第2部分の最小太さが用いられる。QRコードが用いられる場合、最小の単位セル(モジュールとも呼ばれる)の太さが、最小太さとして用いられてよい。例えば、プロセッサ210は、第2部分のうちの複数の部分の第1方向Dxの太さと第2方向Dyの太さとを算出し、算出された複数の太さから最小太さを特定してよい。なお、最小太さが太さ閾値以上であるという条件は、省略されてよい。すなわち、最小太さに拘わらずに、S160-S190の処理が行われてよい。
【0099】
(8)
図4の実施例では、注目コード領域に対する収縮処理の回数は、1である。これに代えて、収縮処理の回数は、2以上であってよい。一般的には、収縮処理の回数Rは、1以上の種々の値であってよい。R回の収縮処理によって除去される複数の除去画素が、補正処理の対象画素として用いられてよい。この場合、R回の収縮処理によって、第2部分の輪郭は、R個の画素に相当する距離、内側に収縮する。従って、回数Rが多いほど、第2部分は細くなる。ここで、プロセッサ210は、第2部分の最小太さが大きいほど、収縮処理の回数Rを大きな値に設定してよい。
【0100】
(9)S195(
図2)で実行される処理は、コントラスト強調処理に限らず、他の任意の処理であってよい。例えば、濃度を薄くする濃度調整処理が行われてよい(輝度値が増大される)。これにより、印刷された画像の滲みを抑制できる。また、S195の処理は、画像処理に代えて、ユーザに警告を報知する処理であってよい。例えば、プロセッサ210は、表示部240(
図1)に、最小太さが太さ閾値未満であることを示す情報を表示してよい。また、S195は、省略されてよい。このように、最小太さが太さ閾値未満である場合、注目コード領域の画像データとしては、入力画像データのうちの注目コード領域に対応するデータがそのまま用いられてよい。一般的には、最小太さが太さ閾値未満である場合(S150:No)、処理画像データの生成(S197)に用いられる画像データは、S190の補正処理によって補正されていない種々の画像データであってよい。例えば、プロセッサ210は、S190の補正処理とは異なる画像処理を入力画像データの注目コード領域に対応する部分に行うことによって生成された画像データ、または、入力画像データの注目コード領域に対応する部分を用いて、処理画像データを生成してよい。
【0101】
(10)印刷装置の構成は、
図1(B)の構成に代えて、他の種々の構成であってよい。例えば、印刷ヘッド170は、ロール紙110の搬送方向に垂直な方向に移動しながらインクを吐出してよい。また、印刷装置は、インクジェット式の印刷装置に代えて、他の種々の種類の印刷装置であってよい。例えば、印刷装置は、感熱紙に熱を加えて色を変化させるサーマルプリンタであってよい。この場合、熱の拡散によって、感熱紙上の変色した部分は、滲んで広がり得る。一般的には、印刷装置の種類は、印刷された画像の一部が滲んで広がり得るような、種々の種類であってよい。
【0102】
(11)画像処理システム1000の構成は、
図1の構成に代えて、他の種々の構成であってよい。例えば、データ処理装置200は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってよい。また、印刷データの生成(
図2:S200)は、データ処理装置200に代えて、印刷装置10の制御回路190によって行われてよい。このように、処理画像データの生成と、印刷データの生成とは、互いに別の装置によって行われてよい。また、処理画像データの生成(
図2:S100)は、データ処理装置200に代えて、印刷装置10の制御回路190によって行われてよい。また、プロセッサ210は、第1プログラム232を用いて、処理画像データの生成(
図2:S100)を行い、第2プログラム233を用いて、印刷データの生成(
図2:S200)を行ってもよい。この場合、プロセッサ210は、第1プログラムとは異なる画像生成アプリケーションプログラムに従って、入力画像データを生成してもよい。また、プロセッサ210は、バーコードをスキャナによって読み取ることによって生成された読取画像データを用いて、入力画像データを生成してよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、処理画像データを生成する機能を一部ずつ分担して、全体として、処理画像データを生成する機能を提供してもよい(これらの装置を備えるシステムが、処理画像データの生成装置に対応する)。
【0103】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、
図2のS170の処理は、専用のハードウェア回路によって実行されてよい。
【0104】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0105】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0106】
10…印刷装置、11…筐体、12…排出口、13…インクタンク、110…ロール紙、111…ホルダ、112…搬送路、140、150a、150b、160a、160b…搬送ローラ、170…印刷ヘッド、172…ノズル面、174…ノズル、180…プラテン、190…制御回路、192…操作パネル、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、232…第1プログラム、233…第2プログラム、240…表示部、250…操作部、270…通信インタフェース、400…入力画像、405、405e…コード領域、406、406a、406b…コード領域、407…文字領域、409…文字列画像、500…コードセット画像、510、510a-510c…バーコード、511、511a-511c…白バー、512、512a-512c…黒バー、512e…輪郭、520…ガードバーセット、590…文字列、1000…画像処理システム、Dx…第1方向、Dy…第2方向