(57)【要約】【課題】簡易な処理によってバーコードの出力を実現する。【解決手段】原画像を示す原画像データを取得する取得部と、前記原画像がバーコード領域であるか否かをブロック毎に認定し、前記バーコード領域であるか否かを示す領域情報であって前記ブロックのそれぞれに対応づけられた前記領域情報を生成する第１生成部と、前記原画像を出力させるための出力画像データを記憶する記憶部と、前記領域情報が前記バーコード領域であることを示している領域と、前記バーコード領域でないことを示している領域と、で異なる方法によって、前記出力画像データに基づく出力を行う出力部と、を備え、前記出力画像データは、前記ブロック毎に圧縮されたＪＰＥＧデータである、画像出力装置を構成する。【選択図】図１
2020093494.tif 000002
【特許請求の範囲】
【請求項１】
原画像を示す原画像データを取得する取得部と、
前記原画像がバーコード領域であるか否かをブロック毎に認定し、前記バーコード領域であるか否かを示す領域情報であって前記ブロックのそれぞれに対応づけられた前記領域情報を生成する第１生成部と、
前記原画像を出力させるための出力画像データを記憶する記憶部と、
前記領域情報が前記バーコード領域であることを示している領域と、前記バーコード領域でないことを示している領域と、で異なる方法によって、前記出力画像データに基づく出力を行う出力部と、を備え、
前記出力画像データは、前記ブロック毎に圧縮されたＪＰＥＧデータである、
画像出力装置。
【請求項２】
前記原画像データを前記ブロックに分割する分割部と、
前記ブロック毎に前記原画像データを圧縮したＪＰＥＧデータを前記出力画像データとして生成する第２生成部をさらに備える、
請求項１に記載の画像出力装置。
【請求項３】
前記原画像データは、ＪＰＥＧデータである、
請求項１または請求項２に記載の画像出力装置。
【請求項４】
前記出力部は、前記バーコード領域であることを示している領域を印刷する場合より、前記バーコード領域でないことを示している領域を印刷する場合の方が、大きいドットを用いて印刷させる、
請求項１〜請求項３のいずれかに記載の画像出力装置。
【請求項５】
前記出力部は、前記バーコード領域であることを示している領域を印刷する場合、前記バーコード領域でないことを示している領域を印刷する場合よりも、同一の濃度の前記原画像を薄い濃度で印刷させる、
請求項１〜請求項４のいずれかに記載の画像出力装置。
【請求項６】
前記領域情報は、
１個の前記ブロックあたりに１ビットの情報である、
請求項１〜請求項５のいずれかに記載の画像出力装置。
【請求項７】
前記領域情報は、前記出力画像データにおける前記ブロックの内容を示すデータに連続する情報である、
請求項１〜請求項６のいずれかに記載の画像出力装置。
【請求項８】
原画像を示す原画像データを取得し、
前記原画像がバーコード領域であるか否かをブロック毎に認定し、前記バーコード領域であるか否かを示す領域情報であって前記ブロックのそれぞれに対応づけられた前記領域情報を生成し、
前記領域情報が前記バーコード領域であることを示している領域と、前記バーコード領域でないことを示している領域と、で異なる方法で、前記原画像を出力させるための出力画像データに基づく出力を行う出力部と、を備え、
前記出力画像データは、前記ブロック毎に圧縮されたＪＰＥＧデータである、
画像出力方法。
【請求項９】
原画像を示す原画像データを取得し、
前記原画像がバーコード領域であるか否かをブロック毎に認定し、前記バーコード領域であるか否かを示す領域情報であって前記ブロックのそれぞれに対応づけられた前記領域情報を生成し、
前記領域情報が前記バーコード領域であることを示している領域と、前記バーコード領域でないことを示している領域と、で異なる方法で、前記原画像を出力させるための出力画像データを生産する、
出力画像データ生産方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像出力装置、画像出力方法および出力画像データ生産方法に関する。
【背景技術】
【０００２】
従来、バーコードを含む画像を出力する技術が知られている。バーコードは当該バーコードが示す情報を読み取るために利用されるため、バーコードを出力する際には、読取装置が正確にバーコードを読み取り可能であることが要求される。特許文献１，２においては、バーコードの品質を維持し、正確な読み取りを可能にするために、各種の画像処理が行われることが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８２３３９号公報
【特許文献２】特開２００９−２７２６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した従来技術においては、複雑な処理を行うため、能力の高い装置が必要になる。
本発明は、簡易な処理によってバーコードの出力を実現することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するための画像出力装置は、原画像を示す原画像データを取得する取得部と、原画像がバーコード領域であるか否かをブロック毎に認定し、バーコード領域であるか否かを示す領域情報であってブロックのそれぞれに対応づけられた領域情報を生成する第１生成部と、原画像を出力させるための出力画像データを記憶する記憶部と、領域情報がバーコード領域であることを示している領域と、バーコード領域でないことを示している領域と、で異なる方法によって、出力画像データに基づく出力を行う出力部と、を備え、出力画像データは、ブロック毎に圧縮されたＪＰＥＧデータである。
【０００６】
すなわち、画像出力装置においては、ＪＰＥＧ圧縮に際して利用されるブロックに基づいてバーコード領域であるか否かの認定を行う。従って、ＪＰＥＧ圧縮で実行された処理の一部を流用してバーコード領域の認定を行うことができ、複雑な処理を行わなくても簡易な処理によってバーコードであるか否か認定することができる。そして、当該認定の結果に基づいてバーコードが出力される構成においては、簡易な処理によってバーコードの出力を実現することができる。
【０００７】
また、原画像データをブロックに分割する分割部と、ブロック毎に原画像データを圧縮したＪＰＥＧデータを出力画像データとして生成する第２生成部をさらに備える構成であってもよい。この構成によれば、ＪＰＥＧ圧縮を実行する機能を備えた画像出力装置において簡易な処理によってバーコード領域の認定および出力を実現することができる。
【０００８】
さらに、原画像データは、ＪＰＥＧデータである構成であってもよい。この構成によれば、ＪＰＥＧ圧縮されたデータに基づいてバーコード領域であるか否かの認定を行うことができる。
【０００９】
さらに、出力部は、バーコード領域であることを示している領域を印刷する場合より、バーコード領域でないことを示している領域を印刷する場合の方が、大きいドットを用いて印刷させる構成であってもよい。この構成によれば、バーコード領域に存在するバーコードがにじまないように印刷することができ、ドットの大きさを調整しない場合と比較して読取装置による読み取り精度を向上させることができる。
【００１０】
さらに、出力部は、バーコード領域であることを示している領域を印刷する場合、バーコード領域でないことを示している領域を印刷する場合よりも、同一の濃度の原画像を薄い濃度で印刷させる構成であってもよい。この構成によれば、バーコード領域に存在するバーコードがにじまないように印刷することができ、濃度を調整しない場合と比較して読取装置による読み取り精度を向上させることができる。
【００１１】
さらに、領域情報は、１個のブロックあたりに１ビットの情報である構成であってもよい。この構成によれば、非常に少ない情報量によってバーコード領域であるか否かを表現することができる。
【００１２】
さらに、領域情報は、出力画像データにおけるブロックの内容を示すデータに連続する情報である構成であってもよい。この構成によれば、領域情報を単独で管理する必要がなくなり、情報の管理が容易になる。
【図面の簡単な説明】
【００１３】
【図１】画像出力装置のブロック図である。
【図２】コピー処理のフローチャートである。
【図３】候補ブロックの判断処理のフローチャートである。
【図４】読み取られた画像の例を示す図である。
【図５】バーコードとブロックの例を示す図である。
【図６】バーコード領域の認定処理のフローチャートである。
【図７】バーコード領域の認定処理のフローチャートである。
【図８】バーコード領域の認定処理のフローチャートである。
【図９】バーコード領域の認定例を示す図である。
【図１０】バーコード領域の認定例を示す図である。
【発明を実施するための形態】
【００１４】
ここでは、下記の順序に従って本発明の実施の形態について説明する。
（１）画像出力装置の構成：
（２）コピー処理：
（３）候補ブロックの判断処理：
（４）バーコード領域の認定処理：
（５）他の実施形態：
【００１５】
（１）画像出力装置の構成：
図１は、本発明の実施形態にかかる画像出力装置１の構成を示すブロック図である。画像出力装置１は、プロセッサー１０と、メモリー２０と、ＵＩ（User Interface）部３０と、通信部４０と、印刷部５０と、読取部６０とを備える。
【００１６】
ＵＩ部３０は、タッチパネル式のディスプレイやキー入力部を含む。ディスプレイは、表示パネルと、表示パネルに重ねられたタッチ検出パネルとを備える。ディスプレイは、プロセッサー１０の制御に基づいて様々な情報を表示パネルに表示する。また、ディスプレイはタッチ検出パネルに対するタッチ入力を受け付ける。キー入力部は、電源ボタンやスタートボタン、キャンセルボタン、数字ボタン等のキーに対する入力を受け付ける。タッチパネルやキー入力部において入力が受け付けられると、受け付けられた入力内容を示す情報がプロセッサー１０に出力される。
【００１７】
通信部４０は、リムーバブルメモリーや、外部の機器と各種の通信プロトコルに従って通信するための通信インターフェース回路を含む。印刷部５０は、インクジェット方式で種々の印刷媒体に印刷を実行するためのアクチュエーターやセンサー、駆動回路、機械部品等を備えている。すなわち、印刷部５０は、Ｋ（黒）インクと有彩色インク（例えば、Ｃ（シアン）インク、Ｍ（マゼンタ）インク、Ｙ（イエロー）インク等）を印刷媒体に対して吐出し、印刷媒体上にカラー画像やモノクロ画像を形成することが可能である。むろん、インクの色や数は一例であり、他の例、例えば、同系色の濃いインクと薄いインクが使用される例等であってもよい。
【００１８】
なお、本実施形態において印刷部５０は、複数のドットサイズのインクをインクノズルから吐出させることが可能である。ドットサイズは、２個以上であれば良く、ここでは、簡単のために大ドットと小ドットの２種類のインクが使用可能である構成を想定する。本実施形態において、印刷部５０は、複数のトレイのそれぞれに印刷媒体を蓄積することが可能である。印刷部５０は、各トレイに蓄積された印刷媒体を一枚ずつ選び出し、搬送経路内を搬送し、搬送の過程で印刷された印刷媒体を排出する搬送機構を有している。なお、本実施形態においては、各トレイのそれぞれに同一サイズの印刷媒体を蓄積することで異なるサイズの印刷媒体に印刷を行うことができる。
【００１９】
読取部６０は、原稿台、光源、センサー、キャリッジ、キャリッジを一定方向に沿って往復移動させるための図示しない搬送機構等を備えている。すなわち、読取部６０は、キャリッジを移動させながら原稿台に載置された原稿に光源から光を照射し、原稿からの光をセンサーで読み取り、読み取り結果を示す原画像データを取得するスキャンを実行可能である。
【００２０】
プロセッサー１０は、１又は複数のＣＰＵ，ＲＡＭ等を備え、メモリー２０に記録された種々のプログラムを実行することによって、画像出力装置１の各機能を実現する。例えば、プロセッサー１０は、ＵＩ部３０から取得した情報に基づいて利用者による入力内容を取得することができ、当該入力内容に対応する処理を実行することができる。また、プロセッサー１０は、原稿読み取りの指示に応じて読取部６０を制御し、原稿を読み取らせる。さらに、プロセッサー１０は、原稿コピーの指示に応じて、読取部６０を制御して原稿を読み取らせ、印刷部５０を制御して読み取った画像の印刷媒体への印刷を実行させる。むろん、画像出力装置１は、通信部４０を介して画像出力装置１に接続された外部の機器（例えば、他のコンピューターや携帯端末等）に制御されても良い。
【００２１】
コピー機能においては、原稿の内容と同等の内容を印刷することを目的としているが、原稿の内容によって適した印刷方法が異なるため、プロセッサー１０は読取部６０で読み取った原稿の内容を解析し、原稿の内容に応じた方法で印刷を行うように印刷部５０を制御する。すなわち、原稿がカラー写真を含む場合、プロセッサー１０はＣＭＹＫインクのそれぞれが使用され得る状態で印刷部５０にカラー写真の印刷を行わせる。原稿が黒色の文字を含む場合、プロセッサー１０は文字領域をＫインクのみが使用され得る状態として、印刷部５０に黒色の文字の印刷を行わせる。
【００２２】
原稿にバーコードが含まれる場合、プロセッサー１０は、バーコード領域について、Ｋインクを使用し、さらに通常の印刷よりもインクの記録密度が少ない状態で印刷部５０に印刷を行わせる。バーコード領域以外の部分においては、当該部分が写真領域、文字領域のいずれかであるかに応じてインクを選択して印刷部５０に印刷を行わせる。
【００２３】
このように、本実施形態にかかる画像出力装置１は、バーコード領域において通常の印刷よりもインクの記録密度を下げる。これによってインクの滲みを抑え、バーコードが認識されやすくなる。プロセッサー１０は、図示しない画像出力プログラムを実行することによってこのような印刷を実現する。画像出力プログラムが実行されると、プロセッサー１０は、取得部１０ａ、分割部１０ｂ、判断部１０ｃ、認定部１０ｄ、第１生成部１０ｅ、第２生成部１０ｆ、出力部１０ｇとして機能する。
【００２４】
取得部１０ａは、原画像を示す原画像データを取得する機能である。すなわち、利用者は読取部６０の原稿台にバーコードを含む原稿をセットする。そして、ＵＩ部３０に対する操作によって利用者がコピー機能の開始を指示すると、プロセッサー１０は、取得部１０ａの機能によって読取部６０を制御し、原稿を読み取らせる。プロセッサー１０は、当該読み取りによって取得されたデータを原画像データ２０ａとしてメモリー２０に記録する。本実施形態においては、読み取り結果が原画像データ２０ａであり、コピーのために読み取られた画像が原画像である。以上のように、本実施形態にかかる画像出力装置１は、プロセッサー１０が取得部１０ａとして機能して読取部６０を制御することにより、スキャナーとして機能する。
【００２５】
分割部１０ｂは、原画像データ２０ａをブロックに分割する機能である。すなわち、プロセッサー１０は、メモリー２０を参照し、原画像データ２０ａを取得する。そして、プロセッサー１０は、予め決められた大きさのブロック毎の画像データに原画像データ２０ａを分割する。なお、本実施形態において分割に利用されるブロックは、ＪＰＥＧ圧縮の際に利用されるブロックと同一のブロックである。すなわち、ＪＰＥＧ圧縮においては、多くの場合、８×８画素、１６×１６画素、１６×８画素、８×１６画素のいずれかのサイズのブロック毎の画像に画像が分割される。本実施例では、１６×１６画素のサイズのブロック毎の画像に画像を分割するものとする。分割部１０ｂによる分割は、ＪＰＥＧ圧縮の工程の一部を兼ねているため、プロセッサー１０は、分割部１０ｂの機能により、これらのいずれかの大きさのブロック毎の画像に原画像を分割する。分割後の画像データは図示しないＲＡＭに記録される。
【００２６】
判断部１０ｃは、画像を分割して得られる各ブロックが、バーコード領域のブロックの候補である候補ブロックであるか否かを判断する機能である。すなわち、プロセッサー１０は、判断部１０ｃの機能により、分割部１０ｂによって分割された各ブロックの中からバーコード領域である可能性があるブロックを特定し、候補ブロックとする。候補ブロックではないブロックは非黒文字領域である。なお、本実施形態において非黒文字領域は、カラー写真またはモノクロ写真であるが、むろん、カラーやモノクロ等の図形等を含む領域であってもよい。
【００２７】
本実施形態において、候補ブロックは、モノクロエッジ（無彩色のエッジ）の数が閾値以上存在するブロック、または、カラーエッジ（有彩色のエッジ）が存在せず隣に候補ブロックが存在するブロックである（詳細は後述）。すなわち、本実施形態におけるバーコードは１次元バーコードであり、当該バーコードは複数の黒い直線によって構成されている。従って、バーコードを含むバーコード領域にはカラーエッジが存在せず、モノクロエッジが比較的多く存在する。そのため、このようなブロックは、バーコード領域の可能性があると推定可能である。しかし、このような特徴は黒文字でも現れるため、バーコードであると断定することはできない。そこで、本実施形態においては、このような特徴のオブジェクトが含まれるブロックを候補ブロックと見なし、さらなる解析によってバーコード、黒文字のいずれであるのかを認定する構成が採用されている。
【００２８】
認定部１０ｄは、候補ブロックが第１方向に第１閾値以上連続し、第１方向に直交する第２方向に第２閾値以上並ぶ領域を、バーコード領域と認定する機能である。すなわち、１次元バーコードは、バーコードを構成する直線に平行な方向に黒い部位が連続しており、バーコードを構成する直線に垂直な方向に直線が離散的に存在する。従って、バーコードを構成する直線と略平行な方向を第１方向とすれば、当該第１方向に候補ブロックが連続している場合に、そのブロックにバーコードを構成する直線が含まれる可能性があると推定することができる。第１閾値は、このような第１方向への連続数がバーコードとして妥当であると見なすことができるような数値として予め設定された値である。
【００２９】
さらに、バーコードを構成する直線と垂直な方向においては、当該直線が幅を有し、本実施形態において直線の幅は候補ブロックの大きさ１個分程度がそれ以上である。さらに、バーコードを構成する直線と垂直な方向において、当該直線は離散的に存在するが、比較的密に存在する。従って、バーコードを構成する直線と垂直な方向において、候補ブロックが連続して存在し、また、候補ブロックの間に少数の候補ブロックではないブロックを挟んだ状態で候補ブロックが連続し得る。このため、バーコードを構成する直線と垂直な方向に候補ブロックが連続している場合に、そのブロックにバーコードを構成する直線が含まれる可能性があると推定することができる。第２閾値は、このような第２方向への連続数がバーコードとして妥当であると見なすことができるような数値として予め設定された値である。
【００３０】
詳細は後述するが、本実施形態においてプロセッサー１０は、以上のような処理により、候補ブロックがバーコードを含み得るブロックであると推定される場合に、当該ブロックをバーコード領域であると認定する。一方、候補ブロックがバーコードを含み得るブロックでない場合、プロセッサー１０は、当該ブロックを黒文字領域であると認定する。
【００３１】
第１生成部１０ｅは、バーコード領域であるか否かを示す領域情報であってブロックのそれぞれに対応づけられた領域情報を生成する機能である。本実施形態において各ブロックは、非黒文字領域（カラー写真またはモノクロ写真）、黒文字領域、バーコード領域に分類されるため、プロセッサー１０は、分類を示す情報を生成する。すなわち、プロセッサー１０は、各ブロックが非黒文字領域であるか否か、黒文字領域であるか否かを示す情報を生成し、各ブロックに対応づける。さらに、プロセッサー１０は、各ブロックがバーコード領域であるか否かを示す情報を生成し、各ブロックに対応づける。
【００３２】
なお、本実施形態において、各ブロックが非黒文字領域であるか否か、黒文字領域であるか否か、バーコード領域であるか否かを示す情報は１ビットの情報（フラグ）である。本実施形態においては、バーコード領域であるか否かを示す情報を領域情報と呼ぶ。プロセッサー１０は、各ブロックに各ブロックが非黒文字領域であるか否かを示す情報、黒文字領域であるか否かを示す情報を対応づけ、その次に領域情報を対応づける。従って、本実施形態において領域情報は、出力画像データにおけるブロックの内容を示すデータ（非黒文字領域であるか否かを示す情報、黒文字領域であるか否かを示す情報）に連続する情報である。この構成により、領域情報を、ブロックに関する他の情報と別個に単独で管理する必要がなくなる。
【００３３】
第２生成部１０ｆは、ブロック毎に原画像データ２０ａを圧縮したＪＰＥＧデータを出力画像データとして生成する機能である。すなわち、本実施形態にかかる画像出力装置１は、読み取った画像をＪＰＥＧ圧縮された出力画像データ２０ｂとして保存する機能を有している。本実施形態において、プロセッサー１０は、第２生成部１０ｆの機能により、バーコード領域であるか否かを判断するための単位となったブロックと同一のブロック毎に圧縮を行う。すなわち、プロセッサー１０は、分割部１０ｂの機能によって分割された各ブロックに対して離散コサイン変換を行う。さらに、離散コサイン変換の変換結果を量子化し、ハフマン符号を用いて圧縮する。圧縮されたデータは１ファイルのデータとされ、出力画像データ２０ｂとしてメモリー２０に記録される。
【００３４】
出力部１０ｇは、出力画像データに基づく出力を行う機能である。すなわち、プロセッサー１０は、出力画像データ２０ｂを参照し、ＪＰＥＧ圧縮データを展開する。さらに、プロセッサー１０は、展開された画像データに基づいて、当該画像データが示す画像を印刷部５０に印刷させるための制御データを生成する。そして、プロセッサー１０は、印刷部５０を制御して、当該画像を印刷させる。
【００３５】
本実施形態においては、画像データに基づいて制御データを生成する際に、ブロック毎に異なる方法で印刷させることができる。すなわち、プロセッサー１０は、各ブロックに対応づけられた情報（非黒文字領域であるか否かを示す情報、黒文字領域であるか否かを示す情報、バーコード領域であるか否かを示す領域情報）に基づいて、各ブロックの内容を特定する。そして、各ブロックの内容に応じて、内容毎に異なる画像処理を実行する。この結果、各ブロックの内容に応じて異なる方法で印刷が行われる。
【００３６】
具体的には、非黒文字領域である情報が対応づけられたブロックであれば、プロセッサー１０は、ブロック内の各ピクセルをインクドットによる表現に変換する際に、ＣＭＹＫの各インクを使用し得る状態で変換を行う。また、黒文字領域である情報が対応づけられたブロックであれば、プロセッサー１０は、ブロック内の各ピクセルをインクドットによる表現に変換する際に、Ｋインクのみを使用する状態で変換を行う。
【００３７】
さらに、バーコード領域であることを示す情報が対応づけられたブロックであれば、プロセッサー１０は、黒文字領域における処理と同様の処理により、Ｋインクのみが使用される状態でブロック内の各ピクセルをインクドットによる表現に変換する。当該変換に加え、プロセッサー１０は、各インクドットを小ドットに変換する。当該変換は黒文字領域で印刷されるドットの方がバーコード領域で印刷されるドットよりも大きくなるように行われればよい。例えば、大ドット、小ドットの２種類のドットを印刷可能である構成であれば、黒文字領域における処理と同様の処理によって大ドットとされたドットを、プロセッサー１０が小ドットに変換する構成等であれば良い。むろん、小ドットに変換されるドットはブロック内の全てのドットであってもよいし、一部であってもよい。
【００３８】
以上のようにして制御データが生成されると、プロセッサー１０は、印刷部５０を制御して出力画像データ２０ｂが示す画像を印刷させる。以上の構成によれば、本実施形態においては、領域情報がバーコード領域であることを示している領域と、バーコード領域でないことを示している領域（非黒文字領域や黒文字領域）とにおいて、異なる方法で印刷が行われる。なお、ここでは、ブロック毎の内容に応じて使用され得るインクの色と印刷されるドットの大きさが変化する構成を説明したが、むろん、他の画像処理が異なっていてもよい。例えば、色変換テーブルやガンマ補正のパラメーター等が異なっていてもよい。
【００３９】
以上のような本実施形態においては、ＪＰＥＧ圧縮に際して利用されるブロックに基づいてバーコード領域であるか否かの認定を行う。従って、ＪＰＥＧ圧縮で実行された処理の結果を流用することができ、複雑な処理を行わなくても簡易な処理によってバーコードであるか否か認定することができる。このため、バーコードであるか否かの認定のために高度なハードウェア資源が必要とされることはない。
【００４０】
また、本実施形態においては、画像を複数のブロックに分割し、ブロック毎にバーコード領域であるか否かを認定する。ブロックはＪＰＥＧ圧縮に際して利用されるブロックであるため、画像の画素数よりも少数である。従って、少数のブロックについてバーコード領域であるか否か判断することが可能であり、少ない数の判断に基づいてバーコード領域を特定可能である。
【００４１】
また、本実施形態においては、通常の印刷においても実施される黒文字領域であるか否の判断結果を流用して、バーコード領域であるか否かの認定を行う対象の候補ブロックを特定することができる。従って、バーコード領域であるか否かの認定を行うための処理を簡易なものにすることができる。さらに、本実施形態においては、候補ブロックが縦横に並ぶ数に基づいてバーコード領域であるか否かの認定を行うことができる。従って、非常に簡易な処理によってバーコード領域であるか否かの認定を行うことが可能である。
【００４２】
バーコード領域であるか否かを示す領域情報はブロック毎に１ビットの情報で記述される。従って、原画像データ２０ａの横画素数がＰｘ、縦画素数がＰｙであり、ブロックの横画素数がＢｘ、縦画素数がＢｙである場合、（Ｐｘ／Ｂｘ）×（Ｐｙ／Ｂｙ）ビットで領域情報を表現可能である。このため、原画像データ２０ａと比較して非常に小さい量で領域情報を記述することができ、バーコード領域であるか否かを記録するために必要とされる記憶媒体の容量を抑制することができる。
【００４３】
さらに、本実施形態においては、ドットの大きさを小ドットにするのみでバーコード領域内のバーコードを印刷する制御を行うことができる。従って、極めて簡易な構成によってバーコード領域内の印刷の方法を特定することができる。そして、バーコード領域内の印刷対象が小ドットで印刷される場合、印刷結果が印刷媒体上で他の黒い文字等と比較して薄く見えることはあり得るが、印刷結果がにじむ可能性が低減されるため、バーコードの読取装置での読み取り精度を向上させることができる。すなわち、大ドットで印刷される場合と比較して、小ドットで印刷されたバーコードはバーコードの読取装置による読み取り結果の誤認識率を低減させることができる。
【００４４】
（２）コピー処理：
次に、コピー処理の手順を図２に示すフローチャートに沿って説明する。利用者が原稿台に原稿を載せ、ＵＩ部３０によってスキャン指示を行うと、プロセッサー１０は当該スキャン指示を受け付け、図２に示すコピー処理を開始する。コピー処理が開始されると、プロセッサー１０は、取得部１０ａの機能により、読取部６０を制御して原稿の読み取りを行う（ステップＳ１００）。
【００４５】
すなわち、プロセッサー１０は、黒基準および白基準に基づいて、黒レベルおよび白レベルを設定し、ゲインを設定する。そして、プロセッサー１０は、光源を点灯させ、キャリッジによる走査を行いながらセンサーによる読み取りを行う。読み取りが行われると、プロセッサー１０は、取得部１０ａの機能により、読み取り結果を示す原画像データ２０ａを取得し、メモリー２０に記録する。
【００４６】
次に、プロセッサー１０は、分割部１０ｂの機能により、原画像を複数のブロックに分割する（ステップＳ１１０）。すなわち、プロセッサー１０は、ＪＰＥＧ圧縮のためのブロックサイズとして選択し得る既定のサイズ（例えば８×８画素等）から処理に利用するサイズを選択し、当該サイズによって原画像を分割する。サイズは種々の手法で選択されてよく、予め決められていてもよいし、利用者によって決められてもよいし、原画像のサイズ等によって決められてもよい。
【００４７】
次に、プロセッサー１０は、第２生成部１０ｆの機能により、ＪＰＥＧデータを生成する（ステップＳ１２０）。すなわち、プロセッサー１０は、分割された画像データのブロックのそれぞれに対して離散コサイン変換を行い、量子化し、ハフマン符号を用いて圧縮する。生成されたＪＰＥＧデータは、出力画像データ２０ｂとしてメモリー２０に記録される。なお、ステップＳ１２０におけるＪＰＥＧデータの生成は、領域情報の生成（後述するステップＳ１５０）の後であってもよいし、並行して実施されてもよい。
【００４８】
このＪＰＥＧデータの生成の詳細については、一般的なＪＰＥＧデータの生成方法を使用してもよいが、処理対象ブロックの種類を判別し、ブロック毎にその判別結果に応じた処理を行うようにしても良い。例えば、空白であるか否かを判定して空白ブロックには空白用圧縮処理を行う、ブロック毎にカラーエッジやモノクロエッジの個数によりブロック内の画像データの種類を文字か写真かを含む複数の種類に判定し、種類に応じて画像データの不要成分を特定し、特定した不要成分を抑制または削除する圧縮処理を行って良好な画質を保持しながら圧縮率を高めることなどが行われる。そのようなＪＰＥＧデータの生成処理で実行された処理の結果は、候補ブロックの判断（後述するステップＳ１３０）にて流用することができ、流用によって簡易な処理とすることが可能である。
【００４９】
次に、プロセッサー１０は、判断部１０ｃの機能により、候補ブロックの判断を行う（ステップＳ１３０）。すなわち、プロセッサー１０は、分割部１０ｂの機能によって得られた各ブロックについて、ブロックが非黒文字領域と判断されれば候補ブロックから除外し、黒文字領域またはバーコード領域であると推定されれば当該ブロックが候補ブロックであると判断する。なお、候補ブロックであると判断されなかったブロックは非黒文字領域であり、プロセッサー１０は、当該ブロックに対して非黒文字領域であるか否かを示す情報を対応づけてＲＡＭに記録する。ステップＳ１３０の詳細は後述する。
【００５０】
次に、プロセッサー１０は、認定部１０ｄの機能により、バーコード領域の認定を行う（ステップＳ１４０）。すなわち、プロセッサー１０は、ステップＳ１３０で候補ブロックとされたブロックのそれぞれがバーコード領域であるか否かを、所定の基準に基づいて認定する。なお、バーコード領域と判断されなかった候補ブロックは黒文字領域であり、プロセッサー１０は、当該ブロックに対して黒文字領域であるか否かを示す情報を対応づけてＲＡＭに記録する。また、プロセッサー１０は、バーコード領域と判断された候補ブロックに対し、バーコード領域であるか否かを示す情報を対応づけてＲＡＭに記録する。ステップＳ１４０の詳細は後述する。
【００５１】
次に、プロセッサー１０は、第１生成部１０ｅの機能により、領域情報を生成する（ステップＳ１５０）。すなわち、ステップＳ１４０において、バーコード領域であると認定されなかった候補ブロックは黒文字領域と見なされ、プロセッサー１０は、当該ブロックに対して黒文字領域であるか否かを示す情報を対応づける。ステップＳ１４０において、バーコード領域であると認定された候補ブロックに対しては、プロセッサー１０が、バーコード領域であるか否かを示す１ビットの領域情報を対応づける。なお、非黒文字領域であるか否かを示す情報と、黒文字領域であるか否かを示す情報と、バーコード領域であるか否かを示す領域情報とは、連続したデータとして記述される。
【００５２】
次に、プロセッサー１０は、出力部１０ｇの機能により、出力を行う（ステップＳ１６０）。すなわち、プロセッサー１０は、出力画像データ２０ｂを参照し、ＪＰＥＧ圧縮データを展開する。さらに、プロセッサー１０は、展開された画像データに基づいて、当該画像データが示す画像を印刷部５０に印刷させるための制御データを生成する。この際、プロセッサー１０は、非黒文字領域であるか否かを示す情報と、黒文字領域であるか否かを示す情報と、バーコード領域であるか否かを示す領域情報とを参照して、画像処理の内容を決定する。
【００５３】
すなわち、ブロックに非黒文字領域であることを示す情報が対応づけられている場合、プロセッサー１０は、使用インクをＣＭＹＫインクとして色変換を行う。ブロックに黒文字領域であることを示す情報が対応づけられている場合、プロセッサー１０は、使用インクをＫインクとして色変換を行う。さらに、ブロックにバーコード領域であることを示す情報が対応づけられている場合、プロセッサー１０は、使用インクをＫインクとして色変換を行い、ドットの大きさを決定する処理を行う。そして、ドットの中に最小のドットよりも大きいドットが含まれる場合、プロセッサー１０は、当該ドットを最小のドットに変換する処理を行う。このような画像処理を含む処理が行われると、プロセッサー１０は、処理結果に基づいて印刷部５０を制御して、出力画像データ２０ｂが示す画像を印刷させる。
【００５４】
（３）候補ブロックの判断処理：
次に、ステップＳ１３０における候補ブロックの判断処理の手順を図３に示すフローチャートに沿って説明する。また、ここでは、図４に示すような原稿を適宜参照して説明を行う。図４に示す例において原画像は、矩形の枠の左側に人物の写真Ｐ、右側上部にバーコードＢｃ、右側下部に文字Ｃが含まれた画像である。なお、図４においては、原画像において黒で表現された部分を黒で示し、原画像において有彩色で表現された部分をグレーで示している。従って、図４に示す例において、写真Ｐは有彩色で表現されたカラー写真であり、比較的大きな黒い部分Ｐｋが含まれている。バーコードＢｃは黒で表現されている。文字Ｃには黒で表現された文字と有彩色で表現された文字が含まれる。
【００５５】
図３に示す候補ブロックの判断処理が開始されると、プロセッサー１０は、処理対象ブロックを設定する（ステップＳ２００）。すなわち、プロセッサー１０は、ステップ１１０で取得された複数のブロックの中で、候補ブロックの判断が行われていないブロックを一つ選択し、処理対象ブロックに設定する。
【００５６】
次に、プロセッサー１０は、処理対象ブロックが空白であるか否かを判断する（ステップＳ２０５）。本実施形態においては、白と見なすことができる階調値の範囲が予め決められており、プロセッサー１０は、処理対象ブロックに含まれる全ての画素の階調値が当該範囲内に含まれる場合に、処理対象ブロックが空白であると判断する。例えば、処理対象ブロックが図４に示す白地の部分に存在するブロックＢｗである場合、当該ブロックＢｗは白であるため、空白であると判断される。写真ＰやバーコードＢｃを含むブロックは、少なくとも一部の画素が範囲外となるため、空白であると判断されない。
【００５７】
ステップＳ２０５において、処理対象ブロックが空白であると判断された場合、プロセッサー１０は、処理対象ブロックを非黒文字領域に設定する（ステップＳ２４０）。すなわち、プロセッサー１０は、処理対象ブロックに対して非黒文字領域であることを示す情報を対応づけてＲＡＭに記録する。
【００５８】
ステップＳ２０５において、処理対象ブロックが空白であると判断されない場合、プロセッサー１０は、エッジ検出を行う（ステップＳ２１０）。本実施形態においては、カラーエッジとモノクロエッジとを利用して処理対象ブロックがバーコード領域に含まれるか否かの判断を行う。そこで、プロセッサー１０は、処理対象ブロックの画素毎の階調値をＹＵＶ色空間に変換する（原画像データ２０ａがＲＧＢ色空間でなくＹＵＶ色空間で表現されているならば省略可）。そして、Ｙ，Ｕ，Ｖ成分のそれぞれにエッジ検出フィルタを適用し、エッジ画素を検出する。なお、エッジ検出フィルタは、種々のフィルタであってよく、Laplacianフィルタや、Sobelフィルタ、Prewittフィルタ等のフィルタを使用可能である。むろん、変換後の色空間はＹＵＶ色空間に限定されず、ＹＣｂＣｒ色空間であってもよいし、ＹＰｂＰｒ色空間であってもよい。
【００５９】
次に、プロセッサー１０は、処理対象ブロック内のカラーエッジ数が０であるか否かを判断する（ステップＳ２１５）。ここで、カラーエッジはＵ成分のエッジとＶ成分のエッジであり、カラーエッジ数は両エッジの数の和である。すなわち、ＹＵＶ色空間においては、Ｕ成分およびＶ成分が非０であり、その大きさが有意な大きさである場合に有彩色であると見なすことができる。従って、Ｕ成分およびＶ成分のエッジは有彩色で表現された部分のエッジを示している。
【００６０】
そこで、プロセッサー１０は、両成分のエッジの和をカウントし、両成分のエッジの和が０でなければ処理対象のブロックが有彩色の部分を含むブロックであると見なす。そして、ステップＳ２１５において、処理対象ブロック内のカラーエッジ数が０であると判断されない場合、プロセッサー１０はステップＳ２４０を実行し、処理対象ブロックを非黒文字領域に設定する。例えば、図４に示す、写真Ｐの有彩色部分では、カラーエッジ数が０にはならないため、写真Ｐを含む処理対象ブロックは非黒文字領域に設定される。また、写真Ｐに比較的大きな黒い部分Ｐｋが含まれていたとしても、その周を示す線にはカラーエッジが存在するため、部分Ｐｋの周を示す線を含む処理対象ブロックは非黒文字領域に設定される。
【００６１】
一方、ステップＳ２１５において、処理対象ブロック内のカラーエッジ数が０であると判断された場合、プロセッサー１０は、モノクロエッジ数が閾値以上であるか否かを判断する（ステップＳ２２０）。ここで、モノクロエッジは、Ｙ成分のエッジである。このようなモノクロのエッジは、黒で表現された黒文字の縁と黒で表現されたバーコードの縁に現れる。本実施形態においては、ブロック内に存在するオブジェクトが黒文字やバーコードである場合におけるモノクロエッジ数の下限値が統計的に特定され、閾値として定義されている。従って、モノクロエッジ数が閾値以上である場合、処理対象ブロックが黒文字領域またはバーコード領域であると判断することができる。
【００６２】
図５は、黒い文字およびバーコードをブロックとともに示す図である。同図５において、破線はブロックの境界を示している。また、図５に示す例において、バーコードおよび黒い文字（数字）はブロックの辺に対して僅かに傾いている。図５に示すように、バーコードを構成する黒い直線や黒い文字はブロックより大きく、黒い直線や黒い文字が存在するブロックの多く（例えば、ブロックＢｂ）においては、ブロックの縦方向や横方向の全長に渡って黒い直線や黒い文字が存在する。そこで、このような状態の黒い直線や黒い文字がブロック内で形成するエッジの数の下限値を閾値とすれば、ブロックが黒文字領域またはバーコード領域であるか否か判断することができる。
【００６３】
そこで、ステップＳ２２０において、モノクロエッジ数が閾値以上であると判断された場合、プロセッサー１０は、処理対象ブロックを候補ブロックに設定する（ステップＳ２３０）。すなわち、プロセッサー１０は、処理対象ブロックに対して候補ブロックであることを示す情報を対応づけてＲＡＭに記録する。
【００６４】
一方、ステップＳ２２０において、モノクロエッジ数が閾値以上であると判断されない場合、プロセッサー１０は、処理対象ブロックに候補ブロックが隣接するか否かを判断する（ステップＳ２３５）。すなわち、処理対象ブロックにバーコードの端部や黒い文字の端部、黒い文字の句読点等が含まれ、他のオブジェクトが含まれない場合、モノクロエッジ数が閾値よりも少なくなる場合がある。例えば、図５に示すブロックＢｅにおいては、モノクロエッジ数が閾値以下になり得る。
【００６５】
ただし、この場合であれば、処理対象ブロックに隣接して黒い文字やバーコードを含むブロックが存在するはずである。従って、処理対象ブロックに隣接して候補ブロックが存在するならば、処理対象ブロックにも黒い文字やバーコードが含まれ得ると推定することができる。そこで、ステップＳ２３５において、処理対象ブロックに候補ブロックが隣接すると判断された場合、プロセッサー１０は、ステップＳ２３０において処理対象ブロックを候補ブロックに設定する。
【００６６】
一方、ステップＳ２３５において、処理対象ブロックに候補ブロックが隣接すると判断されない場合、プロセッサー１０はステップＳ２４０を実行し、処理対象ブロックを非黒文字領域に設定する。例えば、図４に示すように、写真Ｐに比較的大きな黒い部分Ｐｋが含まれている場合、黒い部分Ｐｋの内側のブロック（周を含まないブロック）は、均一な黒であるためモノクロエッジ数が少ない。従って、ステップＳ２２０の判断を経てステップＳ２３５が実行されるが、当該ブロックの周囲に候補ブロックが存在しないため、ステップＳ２４０にて非黒文字領域に設定される。
【００６７】
ステップＳ２３０またはステップＳ２４０において、処理対象ブロックが候補ブロックまたは非黒文字領域に設定されると、プロセッサー１０は、全ブロックについて処理が終了したか否かを判断する（ステップＳ２５０）。すなわち、プロセッサー１０は、ステップＳ１１０で分割されたブロックの全てについてステップＳ２００〜Ｓ２４０の設定が行われた場合に、全ブロックについて処理が終了したと判断する。ステップＳ２５０において、全ブロックについて処理が終了したと判断されない場合、プロセッサー１０は、ステップＳ２００以降の処理を繰り返す。一方、ステップＳ２５０において、全ブロックについて処理が終了したと判断された場合、候補ブロックの判断処理を終了し、図２に示す処理に復帰する。
【００６８】
（４）バーコード領域の認定処理：
次に、ステップＳ１４０におけるバーコード領域の認定処理の手順を図６〜図８に示すフローチャートに沿って説明する。バーコード領域の認定処理において、プロセッサー１０は、ブロックの配置を示す直交座標系を導入する。当該直交座標系の軸はブロックの辺に平行な軸であり、ここでは、一方が第１方向、第２方向となる。
【００６９】
図５においては当該第１方向および第２方向を示しており、この例において第１方向は上から下に向けて数値が増加する軸であり、第２方向は左から右に向けて数値が増加する軸である。ここでは、第１方向の座標をｙ座標、第２方向の座標をｘ座標として表現する。従って、左上のブロックが座標（ｘ，ｙ）＝（０，０）のブロックであり、座標（０，０）のブロックからみて一つ下のブロックは座標（０，１）であり、座標（０，０）のブロックからみて一つ右のブロックは座標（１，０）である。
【００７０】
このような座標系において、プロセッサー１０は、第２方向の候補ブロックの位置を示す座標値ｘを０に初期化する（ステップＳ３００）。また、プロセッサー１０は、第１方向の候補ブロックの位置を示す座標値ｙを０に初期化し、第１方向の候補ブロックの連続数をカウントするための変数ｍを０に初期化する（ステップＳ３０５）。
【００７１】
次に、プロセッサー１０は、座標（ｘ，ｙ）のブロックが候補ブロックであるか否かを判断する（ステップＳ３１０）。すなわち、本実施形態においては、第１方向の座標値ｙと第２方向の座標値ｘを変化させながら、候補ブロックの全てを処理対象としていく。このため、プロセッサー１０は、現在の座標値（ｘ，ｙ）で示されるブロックが候補ブロックであるか否かを判断する。
【００７２】
図９は、図５に示す例と同一の例において、ステップＳ１３０の判断が行われた結果を示す図である。すなわち、図５において候補ブロックと判断されたブロックをグレーに着色して示している。この例において、例えば、処理対象のブロックがブロックＢ1である場合、ステップＳ３１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断されない。一方、処理対象のブロックがブロックＢ2である場合、ステップＳ３１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断される。
【００７３】
ステップＳ３１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断された場合、プロセッサー１０は、変数ｍをインクリメントする（ステップＳ３１５）。すなわち、プロセッサー１０は、第１方向の候補ブロックの連続数を１増加させる。
【００７４】
一方、ステップＳ３１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断されない場合、プロセッサー１０は、変数ｍが０より大きく第１閾値より小さいか否かを判断する（ステップＳ３２０）。すなわち、ｍが０より大きい場合、候補ブロックが第１方向に１個以上存在する状態であり、ｍが第１閾値より小さい場合、候補ブロックの連続数が第１閾値に満たない。このため、変数ｍが０より大きく第１閾値より小さい場合、候補ブロックが第１方向に１個以上存在するが、第１閾値以上連続しておらず、プロセッサー１０は、一旦、これらの候補ブロックがバーコードではないと推定する。
【００７５】
このため、ステップＳ３２０において、変数ｍが０より大きく第１閾値より小さいと判断された場合、プロセッサー１０は、座標（ｘ，ｙ−ｍ）から座標（ｘ，ｙ−１）のブロックを候補ブロックから除外する（ステップＳ３２５）。このような処理において、例えば、第１閾値が５である場合、例えば、ブロック群Ｂ3は一旦候補ブロックから除外されるが、ブロック群Ｂ4は候補ブロックから除外されない。
【００７６】
一方、変数ｍが０より大きく第１閾値より小さいと判断されない場合、候補ブロックが第１方向に第１閾値以上連続している。このため、プロセッサー１０は、ステップＳ３２５をスキップし、第１閾値以上連続している候補ブロックを候補ブロックとして維持する。ステップＳ３２５で候補ブロックの除外が行われ、またはステップＳ３２５がスキップされた場合、プロセッサー１０は、再度カウントを行うため変数ｍを０に初期化する（ステップＳ３３０）。
【００７７】
ステップＳ３１５で変数ｍのインクリメントが行われ、または、ステップＳ３３０で変数の初期化が行われると、プロセッサー１０は、座標値ｙをインクリメントする（ステップＳ３３５）。次に、プロセッサー１０は、座標値ｙが最大値ｙmaxを超えたか否か判断する（ステップＳ３４０）。すなわち、ステップＳ１１０で得られたブロックは、第１方向のブロックの数がｙmaxであり、プロセッサー１０は、第１方向の端部（図９の下端）まで候補ブロックの走査が行われたか否か判断する。
【００７８】
ステップＳ３４０で、座標値ｙが最大値ｙmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ３１０以降の処理を繰り返す。一方、ステップＳ３４０で、座標値ｙが最大値ｙmaxを超えたと判断された場合、プロセッサー１０は、座標値ｘをインクリメントし（ステップＳ３４５）、座標値ｘが最大値ｘmaxを超えたか否か判断する（ステップＳ３５０）。すなわち、ステップＳ１１０で得られたブロックは、第２方向のブロックの数がｘmaxであり、プロセッサー１０は、第２方向の端部（図９の右端）まで候補ブロックの走査が行われたか否か判断する。ステップＳ３５０で、座標値ｘが最大値ｘmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ３０５以降の処理を繰り返す。すなわち、第２方向に異なる位置について第１方向の上端から再度走査を行う。
【００７９】
ステップＳ３５０で、座標値ｘが最大値ｘmaxを超えたと判断された場合、プロセッサー１０は、図７に示すフローチャートに遷移し、第２方向について候補ブロックが連続するか否かを判断する処理を行う。このため、プロセッサー１０は、座標値ｙを０に初期化する（ステップＳ４００）。また、プロセッサー１０は、座標値ｘを０に初期化し、第２方向の候補ブロックの連続数をカウントするための変数ｊを０に初期化し、候補ブロックではないブロックの第２方向の連続数をカウントするための変数ｋを０に初期化する（ステップＳ４０５）。
【００８０】
次に、プロセッサー１０は、座標（ｘ，ｙ）のブロックが候補ブロックであるか否かを判断する（ステップＳ４１０）。すなわち、ここでも、第２方向の座標値ｘと第１方向の座標値ｙを変化させながら、候補ブロックの全てを処理対象としていく。このため、プロセッサー１０は、現在の座標値（ｘ，ｙ）で示されるブロックが候補ブロックであるか否かを判断する。
【００８１】
ステップＳ４１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断された場合、プロセッサー１０は、変数ｋを０とし、変数ｊをインクリメントする（ステップＳ４１５）。すなわち、プロセッサー１０は、候補ブロックではないブロックの第２方向における連続数を０とし、第２方向の候補ブロックの連続数を１増加させる。
【００８２】
一方、ステップＳ４１０において、座標（ｘ，ｙ）のブロックが候補ブロックであると判断されない場合、プロセッサー１０は、変数ｊが０より大きいか否かを判断する（ステップＳ４２０）。すなわち、座標（ｘ，ｙ）のブロックに対して第２方向の負方向に隣接するブロックが第２方向に連続する候補ブロックとしてカウントされていた場合、変数ｊが０より大きくなる。座標（ｘ，ｙ）のブロックに対して第２方向の負方向に隣接するブロックが第２方向に連続する候補ブロックとしてカウントされていなかった場合、変数ｊは０である。ステップＳ４２０において、変数ｊが０より大きいと判断されない場合、プロセッサー１０は、ステップＳ４２５〜Ｓ４４５をスキップする。この場合、座標（ｘ，ｙ）のブロックに対する処理は行われないため、座標（ｘ，ｙ）のブロックは候補ブロックでない状態が維持される。
【００８３】
一方、ステップＳ４２０において、変数ｊが０より大きいと判断された場合、すなわち、第２方向に候補ブロックが連続している場合、プロセッサー１０は、変数ｊおよび変数ｋをインクリメントする（ステップＳ４２５）。なお、ステップＳ４２５が実行される場合、処理対象のブロックは候補ブロックではないが、本実施形態においては、第２方向の候補ブロックの連続数をカウントするための変数ｊと、候補ブロックではないブロックの第２方向の連続数をカウントするための変数ｋとの双方がインクリメントされる。この結果、変数ｊにおいては、候補ブロックではないブロックが第２方向に並んでいても、候補ブロックではないブロックを含めてその連続数が変数ｊとしてカウントされる。
【００８４】
このような状況は、例えば、ブロックＢ5が処理対象である場合に発生する。すなわち、処理対象のブロックがブロックＢ5である場合、ステップＳ４１０において座標（ｘ，ｙ）のブロックは候補ブロックではないと判断される。この場合、直前に処理対象になっていたブロックがブロックＢ6についてステップＳ４１０が行われた際に変数ｊが１になっているため、ステップＳ４２０において０＜ｊであると判断され、ステップＳ４２５において変数ｊが２、変数ｋが１になる。従って、ブロックＢ6，Ｂ5の並びにおいて、ステップＳ４２５が実行されると、変数ｊは候補ブロックであるブロックＢ5と候補ブロックではないブロックＢ6との数を合わせた２とカウントされた状態になる。また、変数ｋはこれらのブロックの中、候補ブロックではないブロックが連続する数を示すことになる。
【００８５】
次に、プロセッサー１０は、変数ｋが第３閾値より大きいか否か判断する（ステップＳ４３０）。ここで、第３閾値は、候補ブロックではないブロックが第２方向に並んでいてもバーコードであると見なし得る上限値である。すなわち、ステップＳ４３０において、変数ｋが第３閾値より大きいと判断されない限り、プロセッサー１０は、カウントを継続するためにステップＳ４３５〜Ｓ４４５をスキップする。
【００８６】
一方、ステップＳ４３０において、変数ｋが第３閾値より大きいと判断された場合、プロセッサー１０は、変数ｊから変数ｋを減じた値ｊ−ｋが第２閾値以上であるか否か判断する（ステップＳ４３５）。すなわち、プロセッサー１０は、第２方向に候補ブロックではないブロックが並んでいても、これらのブロックを除いた数をｊ−ｋによって特定する。
【００８７】
ステップＳ４３５において、変数ｊから変数ｋを減じた値ｊ−ｋが第２閾値以上であると判断された場合、プロセッサー１０は、座標（ｘ−（ｊ−１），ｙ）から座標（ｘ−ｋ，ｙ）のブロックを候補ブロックに設定する（ステップＳ４４０）。すなわち、プロセッサー１０は、この範囲に存在するブロックを、候補ブロックではないとされていたブロックも含めて候補ブロックと見なす。
【００８８】
一方、ステップＳ４３５において、変数ｊから変数ｋを減じた値ｊ−ｋが第２閾値以上であると判断されない場合、プロセッサー１０は、ステップＳ４４０をスキップし、候補ブロックではないとされていたブロックを候補ブロックと見なす処理は行わない。ステップＳ４４０で候補ブロックの設定が行われ、またはステップＳ４４０がスキップされた場合、プロセッサー１０は、再度カウントを行うため変数ｊを０に初期化する（ステップＳ４４５）。ステップＳ４１０〜Ｓ４５５のループにおいて、変数ｊの初期化は、ステップＳ４３０において変数ｋが第３閾値より大きい場合にのみ実施される。従って、ループの過程で処理対象ブロックが候補ブロックではないブロックであったとしても、候補ブロックが第２方向に連続して並ぶ数が第３閾値以下である限り、候補ブロック、候補ブロックではないブロックの双方を示す数が変数ｊとしてカウントされる。この場合、候補ブロックではないブロックを非候補ブロックとも呼ぶ。
【００８９】
ステップＳ４１５で変数ｊのインクリメントが行われ、または、ステップＳ４４５で変数の初期化が行われ、または、ステップＳ４２０で変数ｊが０より大きいと判断されず、または、ステップＳ４３０で変数ｋが第３閾値以上であると判断された場合、プロセッサー１０は、座標値ｘをインクリメントする（ステップＳ４５０）。次に、プロセッサー１０は、座標値ｘが最大値ｘmaxを超えたか否か判断する（ステップＳ４５５）。すなわち、プロセッサー１０は、第２方向の端部（図９の右端）まで候補ブロックの走査が行われたか否か判断する。
【００９０】
ステップＳ４５５で、座標値ｘが最大値ｘmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ４１０以降の処理を繰り返す。一方、ステップＳ４５５で、座標値ｘが最大値ｘmaxを超えたと判断された場合、プロセッサー１０は、座標値ｙをインクリメントし（ステップＳ４６０）、座標値ｙが最大値ｙmaxを超えたか否か判断する（ステップＳ４６５）。すなわち、プロセッサー１０は、第１方向の端部（図９の下端）まで候補ブロックの走査が行われたか否か判断する。ステップＳ４６５で、座標値ｙが最大値ｙmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ４０５以降の処理を繰り返す。すなわち、第１方向に異なる位置について第２方向の左端から再度走査を行う。
【００９１】
ここで、第２閾値が１０、第３閾値が３であり、図９におけるブロックＢ7が処理対象となった場合の一連の判断を説明する。この場合、ステップＳ４１０において、座標（ｘ，ｙ）のブロックＢ7が候補ブロックであると判断され、ステップＳ４１５において変数ｋが０、変数ｊが１になる。次にステップＳ４５０で座標値ｘがインクリメントされる。この結果、ブロックＢ7の右隣のブロックでも同様の処理が繰り返されて変数ｋが０、変数ｊが２になる。次に、ブロックＢ8が処理対象ブロックとなった場合、ステップＳ４１０において、ブロックＢ8が候補ブロックではないと判断される。
【００９２】
この場合、変数ｊは２であるためステップＳ４２０においては、変数ｊが０より大きいと判断され、ステップＳ４２０で変数ｊが３，変数ｋが１になる。この結果、変数ｊの値は、ブロックＢ7からブロックＢ8までにおいて第２方向に存在するブロックの数である３を示し、変数ｋの値は、ブロックＢ7からブロックＢ8までにおいて連続する候補ブロックではないブロックの数を示す状態となる。
【００９３】
さらに、ステップＳ４３０においては、変数ｋが１であるため、第３閾値である３より小さいと判断され、ステップＳ４３５〜Ｓ４４５がスキップされる。この後、処理対象ブロックが順次第２方向の右隣に切り替えられて同様の処理が繰り返される。なお、繰り返しの過程で、処理対象ブロックが候補ブロックである場合には、変数ｋが０に初期化される。
【００９４】
ステップＳ４３０の判断により、このような処理は、候補ブロックではないブロックが第２方向に第３閾値以上並ぶまで繰り返される。従って、この例においては、ブロックＢ9が処理対象ブロックとなり、ステップＳ４２５において変数ｋが４になるまで繰り返される。この場合、プロセッサー１０は、ステップＳ４３０の判断を経てステップＳ４３５を実行する。
【００９５】
この段階において、変数ｊの値は、ブロックＢ7からブロックＢ9までにおいて第２方向に存在するブロックの数である２２を示し、変数ｋの値は、ブロックＢ7からブロックＢ9までにおいてループの最終段階でする候補ブロックではないブロックの数である４を示している。すなわち、変数ｋの値は、ブロックＢ11〜Ｂ9において候補ブロックではないブロックが連続している数である４を示している。従って、ｊ−ｋは１８であり、第２閾値である１０以上であると判断される。この結果、ステップＳ４４０においては、座標（ｘ−（２２−１），ｙ）のブロックＢ7から座標（ｘ−４，ｙ）のブロックＢ10までのブロック群Ｂ12が候補ブロックに設定される。すなわち、ブロック群Ｂ12に含まれる、元々候補ブロックであったブロック（ブロックＢ7等）と非候補ブロックであったブロック（ブロックＢ8等）とがバーコード領域と認定され得る候補ブロックとなる。
【００９６】
ステップＳ４６５で、座標値ｙが最大値ｙmaxを超えたと判断された場合、プロセッサー１０は、図８に示すフローチャートに遷移し、候補ブロックが２次元的に広がっているか否かを判断する処理を行う。このため、プロセッサー１０は、座標値ｘを０に初期化する（ステップＳ５００）。また、プロセッサー１０は、座標値ｙを０に初期化する（ステップＳ５０５）。
【００９７】
次に、プロセッサー１０は、左上の頂点が座標（ｘ，ｙ）であり、幅Ｗｘ、高さＨｙの矩形領域内にある候補ブロックの数ｎを取得する（ステップＳ５１０）。そして、プロセッサー１０は、数ｎが第４閾値以上であるか否かを判断する（ステップＳ５１５）。図１０は、図９に示す例においてステップＳ４６５までの処理によって候補ブロックとなっているブロックをグレーで示した図である。当該図１０には、幅Ｗｘ、高さＨｙの矩形領域Ｒｔが例示されている。すなわち、図１０においては、左上の頂点がブロックＢ13である場合の矩形領域Ｒｔの位置が例示されている。この場合、プロセッサー１０は、グレーで示された候補ブロックの数ｎを１２と取得する。
【００９８】
ステップＳ５１５において、数ｎが第４閾値以上であると判断された場合、プロセッサー１０は、矩形領域を拡張数だけ外側に向けて拡張した領域をバーコード領域と認定する（ステップＳ５２０）。すなわち、本実施形態においては、バーコード領域が２次元的に連続的な領域であると見なしており、矩形領域の多くが候補ブロックで満たされている場合、プロセッサー１０は、当該矩形領域が全てバーコード領域であると見なす。このため、第４閾値は、矩形領域の多くが候補ブロックで満たされており、矩形領域全体がバーコード領域であると見なすことができるような値として設定される。
【００９９】
本実施形態において、第４閾値は矩形領域のブロック数−１であるが、他の値、例えば、矩形領域と同数や矩形領域のブロック数−２などの値であってもよい。なお、第４閾値は、矩形領域内のブロック数の９５％以上であることが好ましい。第４閾値が矩形領域のブロック数−１である場合、例えば図１０に示す矩形領域Ｒｔ1であれば、矩形領域Ｒｔ1内の候補ブロックの数ｎが第４閾値以上であると判断される。一方、矩形領域Ｒｔ2は、矩形領域Ｒｔ2内の候補ブロックの数ｎが第４閾値以上であると判断されない。
【０１００】
本実施形態においては、さらに、候補ブロックの選定に際して見落としがある場合も考慮して、矩形領域を拡張数だけ外側に向けて拡張した領域をバーコード領域と認定する。図１０においては、拡張数が１である場合に矩形領域Ｒｔを拡張した後の領域Ｒｂが破線によって示されている。以上の処理によれば、図１０のように傾いたバーコードであっても、バーコードの上下左右の端部が欠けることなくバーコード領域と認定される。
【０１０１】
ステップＳ５２０でバーコード領域の認定が行われた場合、または、ステップＳ５１５で数ｎが第４閾値以上であると判断されなかった場合、プロセッサー１０は、座標値ｙをインクリメントする（ステップＳ５３０）。次に、プロセッサー１０は、座標値ｙ＋矩形領域の高さＨｙ−１が最大値ｙmaxを超えたか否か判断する（ステップＳ５３５）。すなわち、プロセッサー１０は、矩形領域の下端が第１方向の端部（図１０の下端）を超えたか否かを判断する。
【０１０２】
ステップＳ５３５で、座標値ｙ＋矩形領域の高さＨｙ−１が最大値ｙmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ５１０以降の処理を繰り返す。一方、ステップＳ５３５で、座標値ｙ＋矩形領域の高さＨｙ−１が最大値ｙmaxを超えたと判断された場合、プロセッサー１０は、座標値ｘをインクリメントし（ステップＳ５４０）、座標値ｘ＋矩形領域の幅Ｗｘ−１が最大値ｘmaxを超えたか否か判断する（ステップＳ５４５）。すなわち、プロセッサー１０は、矩形領域の右端が第２方向の端部（図１０の右端）を超えたか否かを判断する。ステップＳ５４５で、座標値ｘ＋矩形領域の幅Ｗｘ−１が最大値ｘmaxを超えたと判断されない場合、プロセッサー１０は、ステップＳ５０５以降の処理を繰り返す。すなわち、第２方向に異なる位置について第１方向の上端から再度走査を行う。
【０１０３】
ステップＳ５４５で、座標値ｘ＋矩形領域の幅Ｗｘ−１が最大値ｘmaxを超えたと判断された場合、プロセッサー１０は、バーコード領域の認定処理を終了し、図２に示す処理に復帰する。以上の処理により、２次元的に広がる候補ブロックに基づいて２次元的に広がるバーコード領域を認定することができる。なお、図１０においては、以上の処理により、認定されるバーコード領域Ｚｂを一点鎖線によって示している。
【０１０４】
（５）他の実施形態：
以上の実施形態は本発明を実施するための一例であり、他にも種々の実施形態を採用可能である。例えば、本発明の一実施形態にかかる画像出力装置は、スキャン以外の方法で原画像データを取得し、バーコードを含む画像を印刷する印刷装置であっても良い。さらに、印刷部５０における印刷方式はインクジェット方式に限定されず、電子写真方式などの他の方式であってもよい。この場合、バーコード領域は、他の領域（例えば、黒文字領域）よりも滲みにくい印刷、例えばインクの濃度が薄い状態で印刷されることが好ましく、例えば、電子写真方式であればトナーの記録量を制御する光量を通常の光量よりも弱くするなどの構成によって実現可能である。
【０１０５】
さらに、以上の実施形態のようにブロック毎にバーコード領域であるか否か判定する手法は、プログラムの発明、方法の発明や出力画像データ生成方法の発明としても実現可能である。
【０１０６】
さらに、プロセッサー１０の少なくとも１部における処理を、画像出力装置１に接続されたコンピューターのドライバプログラム又はアプリケーションプログラムに実施させてもよい。この場合、コンピューターを画像出力装置の一部とみなすことができる。
【０１０７】
さらに、上述の実施形態は一例であり、一部の構成が省略されたり、他の構成が追加されたりする実施形態が採用され得る。例えば、ステップＳ５００〜Ｓ５４５が省略され、この段階で残存している候補ブロックがバーコード領域であると認定される構成等が採用されてもよい。
【０１０８】
取得部は、原画像を示す原画像データを取得することができればよい。すなわち、出力される画像であって、出力のための処理が行われていない画像が原画像であり、取得部は、当該原画像を示す原画像データを取得することができればよい。原画像データを取得する態様は、種々の態様であってよい。すなわち、取得部は、スキャナーであってもよいし、他の装置（例えば、他のコンピュータや記憶媒体等）から通信によって原画像データを取得してもよい。なお、原画像、出力画像の双方ともに画像であり、両者を区別する必要がない場合には両者を指して画像と呼ぶこともある。
【０１０９】
第１生成部は、原画像がバーコード領域であるか否かをブロック毎に認定し、バーコード領域であるか否かを示す領域情報であってブロックのそれぞれに対応づけられた領域情報を生成することができればよい。すなわち、バーコード領域であるか否かをブロック毎に特定可能な情報が領域情報として定義されればよい。
【０１１０】
ブロックはＪＰＥＧ圧縮を行う単位であるが、複数画素からなるブロックが定義されていれば、当該ブロックがＪＰＥＧ圧縮を行う単位でなかったとしても、バーコードであるか否かを示す領域情報を少ない情報量で表現可能である。
【０１１１】
なお、ブロックがＪＰＥＧ圧縮を行う単位であれば、ＪＰＥＧ圧縮を行う際に利用されたブロックをバーコード領域であるか否かの定義に流用することができる。さらに、ＪＰＥＧ圧縮を利用する際にブロック単位で実施する処理が存在し、バーコード領域の認定に流用できる処理があれば流用することが好ましい。
【０１１２】
バーコード領域であるか否かの認定は、上述のような第１閾値〜第４閾値を利用した認定以外にも種々の手法が採用されてよい。例えば、機械学習されたモデルに基づいてバーコード領域であるか否か認定されてもよいし、パターンマッチング等によってバーコード領域であるか否か認定されてもよい。
【０１１３】
バーコード領域は、バーコードである可能性が高いオブジェクトが含まれている領域であれば良く、バーコードであると推定されたブロック以外のブロック、例えば、バーコードであると推定されたブロックの周囲に隣接するブロックがバーコード領域に含まれていてもよい。
【０１１４】
領域情報は、各ブロックがバーコード領域であるか否かを示していればよく、１個のブロックあたりに１ビットの情報（すなわち、１ビットのフラグ）であることが好ましいが、より詳細な解析を行うためにより情報量が多くてもよい。例えば、バーコード領域内のオブジェクトがバーコードである可能性や、バーコード以外のオブジェクトが含まれる可能性を示す値であってもよい。また、領域情報は、印刷開始指示後に生成される構成であってもよいし、印刷開始指示の有無に関わらず予め生成され、記録媒体に記録されていてもよい。
【０１１５】
記憶部は、原画像を出力させるための出力画像データを記憶することができればよく、領域情報が記憶されてもよい。むろん、領域情報は、出力画像データの一部であってもよいし、上述の実施形態のように別のデータ（ブロック内のオブジェクトの種類を示す情報）に連続して記録されていてもよい。記憶部は、この出力画像データを印刷された後まで長期的に記憶するものでも良いし、所謂バッファのように短期的に記憶するものでもよい。出力画像データは、出力される原画像を示していればよく、ＪＰＥＧデータであることが好ましいが、他の態様であってもよい。むろん、印刷に際しては、ＪＰＥＧデータがさらに他のデータ（例えば、ポストスクリプトデータ）等とされてもよい。
【０１１６】
出力部は、領域情報がバーコード領域であることを示している領域と、バーコード領域でないことを示している領域と、で異なる方法によって、出力画像データに基づく出力を行うことができればよい。これは出力を行う回路に至る前に行われる画像処理の方法を変えることで実現しても良いし、出力を行う回路の動作方法を変えることで実現してもよい。すなわち、出力部は、領域内のオブジェクト毎に出力を行う方法を切り替えることができ、バーコード領域であるか否かに応じて出力の方法を切り替える。バーコード領域については、バーコードの読み取りが容易になる方法で出力されることが好ましく、バーコードを記録する記録材の密度や濃度を他のオブジェクトよりも大きく、または小さくする構成以外にも、種々の構成を採用可能である。密度や濃度をどのように調整するのかは、出力対象（ディスプレイ、プロジェクター、電子ペーパー等）によって選択されてよい。
【０１１７】
分割部は、原画像データをブロックに分割することができればよい。出力画像データがＪＰＥＧデータである場合、ＪＰＥＧ圧縮の際に原画像データがブロックに分割される。従って、当該ＪＰＥＧ圧縮で利用されるブロックを、バーコード領域の認定のために流用可能である。ブロックの大きさは限定されず、種々の大きさとすることができるが、処理の容易のために複数のブロックの大きさは、画像の端部を除き同一であり、正方形または長方形であることが好ましい。ＪＰＥＧ圧縮は、公知の手法であってよい。
【０１１８】
なお、原画像データがＪＰＥＧデータである構成が採用されてもよい。この場合、原画像データがブロック毎に圧縮されているため、当該ブロックをバーコード領域の認定のために流用すればよい。従って、バーコード領域の認定のためのブロックを原画像から分割する分割部を省略することが可能である。
【０１１９】
バーコード領域において通常の印刷よりもインクの記録密度が少ない状態で印刷を行う手法は、インクドットの大きさを調整する構成以外にも種々の構成を採用可能である。例えば、出力部は、バーコード領域であることを示している領域を印刷する場合、バーコード領域でないことを示している領域を印刷する場合よりも、同一の濃度の原画像を薄い濃度で印刷させる構成であってもよい。濃度の調整は種々の手法で実現可能であり、例えば、印刷されるドットの数を通常の印刷よりも少なくすれば、濃度を薄くすることが可能である。
【０１２０】
出力画像データにおけるブロックの内容を示すデータは、上述の実施形態のように各ブロックが黒文字領域であるか否かを示す情報に限定されず、ブロック毎の画像データやブロック毎の圧縮データ等であってもよい。
【０１２１】
判断部は、画像を分割して得られる各ブロックが、バーコード領域のブロックの候補である候補ブロックであるか否かを判断することができればよい。従って、上述のように黒文字領域またはバーコード領域である可能性があるブロックが候補ブロックになる構成以外にも、種々の構成が採用されてよい。例えば、黒と白の画素が既定数以上含まれるブロックや、黒い直線を構成する画素が既定数以上含まれるブロック、黒い部分が近接して存在するブロック等が候補ブロックになってもよい。所定の色成分について上述の実施例のように判断をすることで、当該色のカラーバーコードに対応させてもよい。
【０１２２】
認定部は、候補ブロックが第１方向に第１閾値以上連続し、第１方向に直交する第２方向に第２閾値以上並ぶ領域を、バーコード領域と認定することができればよい。すなわち、直交する２方向に候補ブロックが既定数以上並んでいる場合に、これらの候補ブロックがバーコード領域であると認定することができればよい。第１閾値、第２閾値は、これら以上の数だけ候補ブロックが連続している場合にバーコード領域であるとの推定が合理的であるように予め設定されていればよい。
【０１２３】
第１閾値や第２閾値は、固定値であってもよいし、可変値であってもよい。可変値である場合、第１閾値および第２閾値の少なくとも一方は、スキャナーの読み取り解像度に応じた値であってもよい。すなわち、解像度が変化すれば、候補ブロックが連続し得る数が変化すると見なし、解像度に依存させて第１閾値や第２閾値を変化させてもよい。むろん、第３閾値や第４閾値も同様であり、固定値、可変値のいずれであってもよく、可変値の場合、例えば、これらの閾値の少なくとも一方がスキャナーの読み取り解像度に応じた値であってもよい。さらに、第１閾値〜第４閾値の少なくとも一つが他の要素に応じて変化してもよい。例えば、ブロックの大きさに応じて変化してもよい。
【０１２４】
なお、解像度やブロックの大きさに応じて閾値を変化させる場合、解像度やブロックの大きさに比例または反比例させて変化させる構成等が挙げられる。例えば、閾値が解像度に比例し、ブロックの大きさに反比例する構成を採用可能である。より具体的には、基準の解像度で閾値の値が特定の値である場合に、解像度が２倍、ブロックの大きさが同一であるならば、閾値も２倍にする構成が好ましい。解像度が同一、ブロックの大きさが２倍であるならば、閾値は１／２倍にする構成が好ましい。
【０１２５】
閾値は、一般的なバーコードの大きさや比較的小さい大きさのバーコードを想定して決定されても良い。例えば、比較的小さい大きさのバーコードとして、バーコードを構成する直線の長さが３ｍｍ程度以上であるものを想定する。この場合において、スキャナーの読み取り解像度が３００ｄｐｉでブロックの大きさが８×８画素である場合、第１閾値としては４以上であることが好ましい。すなわち、この場合のブロックの大きさは、一辺が０．６７７ｍｍ（＝２５．４ｍｍ×８／３００）であり、３ｍｍはブロックが４．４個に相当するからである。
【０１２６】
上述の想定の場合、さらに、第２閾値は、１０以上の値とすることが好ましい。比較的小さい大きさのバーコードにおいては、幅が７ｍｍ程度以上のものが多く、一辺が０．６７７ｍｍのブロックに換算すると１０．３となるためである。上述の想定の場合、第３閾値は、５以下の値とすることが好ましい。比較的小さい大きさのバーコードにおいて、直線間の間隙は３ｍｍ程度であり、４．４個程度のブロックが間隙となり得る。このため、間隙を評価するための値としては５以下程度の数が好ましい。
【０１２７】
上述の想定の場合、矩形領域の高さＨｙは、第１閾値程度、または第１閾値より僅かに小さい値が好ましい。また、矩形領域の幅Ｗｘは第２閾値程度、または第２閾値より僅かに小さい値が好ましい。僅かに小さい値を用いると、バーコードが第１方向または第２方向に対して傾いていても検出漏れが発生しにくくなる。
【０１２８】
上述の想定の場合、第４閾値は、上述のように９５％以上であることが好ましく、１００％を僅かに下回る値であることが好ましい。１００％を僅かに下回る値とすれば、バーコードや読み取りの傾きやノイズによって読み取り欠陥等が生じた場合であっても、検出漏れが発生しにくくなる。
【０１２９】
矩形領域の拡張数は、読み取り解像度やブロックの画素数によらず、１または２程度の値としてもよい。当該拡張数は、バーコードが傾いている場合に等に、領域判定の過程で上下左右の端が途切れないようにするために設定されるが、拡張数が１または２程度で充分に途切れを防止可能である。
【０１３０】
さらに、認定部は、直交する２方向のそれぞれを第１方向としてバーコード領域の認定を行ってもよい。すなわち、原画像の座標軸の一方に平行な方向を第１方向として上述の図６〜図８に示すフローチャートを実行し、この後に第１方向を９０度回転させて再度、図６〜図８に示すフローチャートを実行してもよい。むろん、２回目の処理は、１回目の処理において充分に広いバーコード領域が認定されなかった場合に実行されてもよいし、利用者の指示に応じて実行されてもよい。以上の構成によれば、原稿の縦横方向のいずれに対してバーコードの直線が平行になっていても、バーコード領域を認定することができる。むろん、より多数の方向にバーコードが配向し得る場合には、３以上の方向を第１方向としてもよい。つまり、バーコードが配向している可能性がある方向をそれぞれ第１方向とした処理を実行することが望ましい。
【０１３１】
さらに本発明は、コンピューターが実行するプログラムや、方法としても適用可能である。また、以上のようなプログラム、方法は、単独の装置として実現される場合もあれば、複数の装置が備える部品を利用して実現される場合もあり、各種の態様を含むものである。また、一部がソフトウェアであり一部がハードウェアであったりするなど、適宜、変更可能である。さらに、プログラムの記録媒体としても発明は成立する。むろん、そのプログラムの記録媒体は、磁気記録媒体であってもよいし半導体メモリーであってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。
【符号の説明】
【０１３２】
１…画像出力装置、１０…プロセッサー、１０ａ…取得部、１０ｂ…分割部、１０ｃ…判断部、１０ｄ…認定部、１０ｅ…第１生成部、１０ｆ…第２生成部、１０ｇ…出力部、２０…メモリー、２０ａ…原画像データ、２０ｂ…出力画像データ、３０…ＵＩ部、４０…通信部、５０…印刷部、６０…読取部
【図１】
2020093494.tif 000003
【図２】
2020093494.tif 000004
【図３】
2020093494.tif 000005
【図４】
2020093494.tif 000006
【図５】
2020093494.tif 000007
【図６】
2020093494.tif 000008
【図７】
2020093494.tif 000009
【図８】
2020093494.tif 000010
【図９】
2020093494.tif 000011
【図１０】
2020093494.tif 000012