(57)【特許請求の範囲】
【請求項１】
階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成手段と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【数１】
0003747641.tif 000037
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴnに対して前記演算手段により求められた電圧降下補正量αnを減じたデータ（Ｔn−αn）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有することを特徴とする印刷装置。
【請求項２】
階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成手段と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【数２】
0003747641.tif 000038
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴnに対して前記演算手段により求められた電圧降下補正量αnを減じたデータ（Ｔn−αn）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有することを特徴とする印刷装置。
【請求項３】
前記電圧降下補正を行うしきい値としての任意の定数ξは、ξ≫Ｎであることを特徴とする請求項１、又は２記載の印刷装置。
【請求項４】
前記あるラインにおける補正前の印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを前記計算式に従って予め作成することを特徴とする請求項１、又は２記載の印刷装置。
【請求項５】
階調値を含む印刷データに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データに含まれる階調値の発生頻度分布を示すテーブルを作成する頻度テーブル作成手段と、前記階調値をＴ（０≦Ｔ≦Ｔmax −１）とし、前記頻度をｆT で表したとき、Ｔに対する電圧降下補正量βT を
【数３】
0003747641.tif 000039
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴに対して前記演算手段により求められた電圧降下補正量βTを減じたデータ（Ｔ−βT）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷装置。ただし、電圧降下補正を行うしきい値としてのξは任意の定数であり、階調値Ｔの印刷をしたときのＯＦＦＤＯＴ数の積算値ηT は、
【数４】
0003747641.tif 000040
であり、β0 ＝０，η0 ＝０である。
【請求項６】
前記全発熱抵抗体数をＮ＋１としたとき、前記電圧降下補正を行うしきい値としての任意の定数ξは、ξ≫Ｎであることを特徴とする請求項５記載の印刷装置。
【請求項７】
前記あるラインにおける補正前の印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを前記計算式に従って予め作成することを特徴とする請求項５記載の印刷装置。
【請求項８】
Ｋmax 階調の印刷を行うサーマルプリンタにおいて、あるラインにおける印刷データのに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成手段と、該作成手段によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表すとき、Ｋに対する電圧降下補正量βK を
【数５】
0003747641.tif 000041
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＫに対して前記演算手段により求められた電圧降下補正量βKを減じたデータ（Ｋ−βK）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有することを特徴とする印刷装置。
【請求項９】
前記計算式に従って印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを予め作成し、該ルックアップテーブルに従って前記印刷データの補正処理、又は補正済の印刷データのルックアップテーブルに従った処理を行うことを特徴とする請求項８記載の印刷装置。
【請求項１０】
Ｋmax 階調の印刷を行うサーマルプリンタにおいて、あるラインにおける印刷データに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成手段と、該作成手段によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表したとき、Ｋに対する電圧降下補正量βK を
┌ξβk-1 ＋Ψk-1     ・・・Ｋ≧１
ξβk＝│
└０                  ・・・Ｋ＝０
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＫに対して前記演算手段により求められた電圧降下補正量βKを減じたデータ（Ｋ−βK）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有することを特徴とする印刷装置。但し、
┌Ψn-1 ＋（βn-1 −βn ＋１）ｆn        ・・・ｎ≧１
Ψn ＝│
└ｆ0                                 ・・・ｎ＝０
であり、電圧降下補正を行うしきい値としてのξは任意の定数である。
【請求項１１】
ヘッド電源スイッチ素子周辺の温度を測定し、該測定温度によって前記電圧降下補正量を可変することを特徴とする請求項１、２、５、８、又は１０記載の印刷装置。
【請求項１２】
前記計算式に従って印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを予め作成し、該ルックアップテーブルに従って前記印刷データの補正処理、又は補正済の印刷データのルックアップテーブルに従った処理を行うことを特徴とする請求項１１記載の印刷装置。
【請求項１３】
階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理と、該データ列作成処理によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【数６】
0003747641.tif 000042
により求め、前記印刷データＴnに対して前記電圧降下補正量αnを減じたデータ（Ｔn−αn）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷方法。
【請求項１４】
階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【数７】
0003747641.tif 000043
により求め、前記印刷データＴnに対して前記電圧降下補正量αnを減じたデータ（Ｔn−αn）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷方法。
【請求項１５】
階調値を含む印刷データに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データに含まれる階調値の発生頻度分布を示すテーブルを作成する頻度テーブル作成処理と、前記階調値をＴ（０≦Ｔ≦Ｔmax −１）とし、前記頻度をｆT で表したとき、Ｔに対する電圧降下補正量βT を
【数８】
0003747641.tif 000044
により求め、前記印刷データＴに対して前記電圧降下補正量βT を減じたデータ（Ｔ−βT）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷方法。
ただし、電圧降下補正を行うしきい値としてのξは任意の定数であり、階調値Ｔの印刷をしたときのＯＦＦＤＯＴ数の積算値ηT は、
【数４】
0003747641.tif 000045
であり、β0 ＝０，η0 ＝０である。
【請求項１６】
Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成処理と、該作成処理によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表すとき、Ｋに対する電圧降下補正量βK を
【数９】
0003747641.tif 000046
により求め、印刷データＫに対して前記電圧降下補正量βKを減じたデータ（Ｋ−βK）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷方法。
【請求項１７】
Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成処理と、該作成処理によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表したとき、Ｋに対する電圧降下補正量βK を
┌ξβk-1 ＋Ψk-1     ・・・Ｋ≧１
ξβk ＝│
└０                  ・・・Ｋ＝０
により求め、印刷データＫに対して前記電圧降下補正量βKを減じたデータ（Ｋ−βK）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加することを特徴とする印刷方法。
但し、
┌Ψn-1 ＋（βn-1 −βn ＋１）ｆn     ・・・ｎ≧１
Ψn ＝│
└ｆ0                               ・・・ｎ＝０
であり、電圧降下補正を行うしきい値としてのξは任意の定数である。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーマルプリンタ等の印刷装置、及びその印刷装置の印刷方法に関する。
【０００２】
【従来の技術】
今日、様々なディジタルカメラが開発され、ディジタルカメラで撮影した画像をパーソナルコンピュータのディスプレイに表示し、好みの画像をプリンタ装置によって印刷している。また、パーソナルコンピュータを介さずに、ディジタルカメラにプリンタ装置を直接接続し、ディジタルカメラから送られる画像データを印刷するシステムも使用されている。
【０００３】
通常、ディジタルカメラの撮影画像を印刷する場合、サーマルヘッドを用いたサーマルプリンタによって行われる。サーマルプリンタは複数の発熱抵抗体に対し、印刷データに従った電圧を加え、抵抗発熱を利用して印刷を行う。また、ディジタルカメラによる撮影画像データは階調データであり、階調値に合わせ、個々の発熱抵抗体への電圧印加時間を制御し、印刷処理を行っている。このため、高画質化、高速印刷化のためには印加電圧制御、印加時間制御、熱制御等の各種制御技術の開発が不可欠である。そして、上記各種制御技術の一つとして、電圧降下補正が採用されている。
【０００４】
この制御は、複数の発熱抵抗体を同時に通電した際生じる、印刷濃度ムラへの対策として使用されている。すなわち、印刷濃度ムラが発生する理由は、複数の発熱抵抗体を同時に通電した際、サーマルヘッドに設けられた共通抵抗における電圧降下が無視できないため、例えば多くの発熱抵抗体を同時に通電する場合と、少ない発熱抵抗体を同時に通電する場合とでは共通抵抗に対する降下電圧が異なり、同じオン状態の発熱抵抗体においても、発熱量が異なる結果となる。
【０００５】
そこで、従来各種補正法が提案されている。例えば、特公平７−１０２７１０号のカラーサーマルプリンタの階調制御方式が提案されている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述の従来の印刷装置では、以下の問題が発生する。すなわち、電圧降下補正のため、乗算器や電圧降下検出器等が必要となり、装置のコストアップにつながる。また、電圧降下の測定等に処理時間を要し、例えばパルス幅の下限が決まってしまい、環境温度が高い場合に対応できなくなる危険がある。
【０００７】
回路を使用した電圧降下補正では、印刷ドット数が増大すると、回路規模も大きくなり、近年の装置の小型化や高速処理化に反することになる。したがって、電圧補正回路を多く使用する補正では、近年の高速印刷化に対応することが困難になってきている。
【０００８】
本発明は上記課題を解決するため、電圧補正のための回路規模を小さくし、及び装置のコストダウン、印刷処理の高速化を図る印刷装置、及びその印刷方法を提供するものである。
【０００９】
【課題を解決するための手段】
本発明は請求項１記載の発明によれば、階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成手段と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【００１０】
【数１０】
0003747641.tif 000002
【００１１】
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴnに対して前記演算手段により求められた電圧降下補正量αnを減じたデータ（Ｔn−αn）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有する印刷装置を提供することによって達成できる。
【００１２】
ここで、サーマルプリンタはライン状に発熱抵抗体をＮ＋１個有するサーマルヘッドを有し、各発熱抵抗体はライン毎に送られる印刷データによって発熱する。例えば、発熱抵抗体が１０００個で構成されるサーマルプリンタの場合、１ライン１０００個の印刷データが供給され、各ドットは印刷濃度に対応する階調数のデータで構成されている。例えば、最大２５６階調の場合、階調数“０”〜“２５５”までの何れかの階調数のデータである。
【００１３】
また、データ列作成手段は、上述の印刷データが有する階調数毎に、例えば階調数が小さい順に印刷データを並べる。例えば、１ライン１０００個で構成される印刷データの場合、１ライン１０００個のデータを階調数が小さい順に並べ、データ列を作成する。さらに、この時、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴN のデータが並べられたとすると、上記計算式に従ってあるデータ（Ｔn ) に対する電圧降下補正量αn （ｎ＞＝１）を計算する。
【００１４】
そして、この計算式によって求めた電圧降下補正量αn を使用して元の印刷データを補正することにより、高品質な印刷処理を高速に行うことができる。尚、上記Ｔn ＝Ｔn-1 のときは、αn ＝αn-1 とする。
【００１５】
本発明は請求項２記載の発明によれば、階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成手段と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【００１６】
【数１１】
0003747641.tif 000003
【００１７】
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴnに対して前記演算手段により求められた電圧降下補正量αnを減じたデータ（Ｔn−αn）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有する印刷装置を提供することによって達成できる。
【００１８】
ここで、サーマルプリンタの構成は上記と同様、ライン状に発熱抵抗体をＮ＋１個有するサーマルヘッドを有し、各発熱抵抗体はライン毎に送られる印刷データによって発熱する。また、データ列作成手段は、上述の印刷データが有する階調数毎に、例えば階調数が小さい順に印刷データを並べる。さらに、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴN のデータが並べられたとすると、上記計算式に従ってあるデータ（Ｔn ) に対する電圧降下補正量αn （ｎ＞＝１）を計算する。
【００１９】
そして、この計算式によって求めた電圧降下補正量αn を使用して元の印刷データを補正することにより、高品質な印刷処理を高速に行うことができる。尚、α0 ＝０である。
【００２０】
請求項３の記載は、請求項１又は２記載の発明において、前記電圧降下補正を行うしきい値としての任意の定数ξは、ξ≫Ｎである。この任意の定数ξは電圧降下補正を行う際のしきい値に対応する値であり、この定数ξを越えるとき電圧降下補正を行う。
【００２１】
したがって、本例はこの定数ξをＮより極めて大きく設定するものであり、このように構成することにより、より正確な電圧降下補正を行うものである。
請求項４の記載は、請求項１又は２記載の発明において、前記あるラインにおける補正前の印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを前記計算式に従って予め作成する構成である。
【００２２】
このように構成することにより、予め印刷データに対する補正量のルックアップテーブルが作成され、印刷データの補正処理を行う際、迅速に補正量を使用することができ、より迅速な電圧降下補正を行うことができる。
【００２３】
本発明は請求項５記載の発明によれば、階調値を含む印刷データに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタにおいて、あるラインにおける全印刷データに含まれる階調値の発生頻度分布を示すテーブルを作成する頻度テーブル作成手段と、前記階調値をＴ（０≦Ｔ≦Ｔmax−１）とし、前記頻度をｆT で表したとき、Ｔに対する電圧降下補正量βT を
【００２４】
【数１２】
0003747641.tif 000004
【００２５】
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＴに対して前記演算手段により求められた電圧降下補正量βTを減じたデータ（Ｔ−βT）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する印刷装置を提供することによって達成できる。
【００２６】
ここで、サーマルプリンタの構成は上記と同様、ライン状に発熱抵抗体をＮ＋１個有するサーマルヘッドを有し、各発熱抵抗体はライン毎に送られる印刷データによって発熱する。
【００２７】
一方、頻度テーブル作成手段は、あるラインにおける全印刷データを調べ、階調値毎に頻度を計算した結果からテーブルを作成する。そして、上記テーブルを使用し、上記計算式を使用して、任意のデータＴに対する電圧降下補正量βT を知ることができる。
【００２８】
このように構成することにより、電圧降下補正量βT を使用して元の印刷データを補正し、高品質な印刷処理を高速に行うものである。但し、電圧降下補正を行うしきい値としてのξは任意の定数であり、階調値Ｔの印刷をしたときのＯＦＦＤＯＴ数の積算値ηT は、
【００２９】
【数１３】
0003747641.tif 000005
【００３０】
であり、β0 ＝０，η0 ＝０である。請求項６の記載は、請求項５記載の発明において、前記全発熱抵抗体数をＮ＋１としたとき、前記電圧降下補正を行うしきい値としての任意の定数ξは、ξ≫Ｎである。
【００３１】
ここで、任意の定数ξは電圧降下補正を行う際のしきい値に対応する定数であり、この定数ξを越えるとき電圧降下補正を行う。
したがって、本例もこの定数ξをＮより極めて大きく設定するものであり、このように構成することにより、より正確な電圧降下補正を行うものである。
【００３２】
請求項７の記載は、請求項５記載の発明において、前記あるラインにおける補正前の印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを前記計算式に従って予め作成する構成である。
【００３３】
このように構成することにより、予め印刷データに対する補正量のルックアップテーブルが作成され、印刷データの補正処理を行う際、迅速に補正量を知ることができ、より迅速な電圧降下補正を行うことができる。
本発明は請求項８記載の発明によれば、Ｋmax 階調の印刷を行うサーマルプリンタにおいて、あるラインにおける印刷データの階調値に関するヒストグラムを作成する作成手段と、該作成手段によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表すとき、Ｋに対する電圧降下補正量βK を
【００３４】
【数１４】
0003747641.tif 000006
【００３５】
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＫに対して前記演算手段により求められた電圧降下補正量βKを減じたデータ（Ｋ−βK）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有する印刷装置を提供することによって達成できる。
【００３６】
本例は、印刷データの中のあるラインにおけるデータの階調数に関するヒストグラムを作成し、該ヒストグラムから最適な電圧降下補正量を計算するものであり、最適な電圧降下補正量を計算するため、上記計算式を使用する。
【００３７】
このように構成することにより、高画質で高速なサーマルプリンタを実現するものである。
請求項９の記載は、請求項８記載の発明において、前記計算式に従って印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを予め作成し、該ルックアップテーブルに従って印刷データの補正、又は前記補正済印刷データに従った処理を行う構成である。
【００３８】
このように構成することにより、上記と同様、更に印刷処理を高速化できる。本発明は請求項１０記載の発明によれば、Ｋmax 階調の印刷を行うサーマルプリンタにおいて、あるラインにおける印刷データに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成手段と、該作成手段によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表したとき、Ｋに対する電圧降下補正量βK を
┌ξβK-1 ＋ΨK-1     ・・・Ｋ≧１
ξβK ＝│
└０                  ・・・Ｋ＝０
により求める演算手段と、所定時間間隔毎にカウント処理する階調カウンタと、前記印刷データＫに対して前記演算手段により求められた電圧降下補正量βKを減じたデータ（Ｋ−βK）と前記階調カウンタの出力値とを比較する比較手段と、該比較手段の出力に応じて発熱抵抗体に駆動電圧を印加する駆動制御手段とを有する印刷装置を提供することによって達成できる。
【００３９】
但し、
┌Ψn-1 ＋（βn-1 −βn ＋１）ｆn       ・・・ｎ≧１
Ψn ＝│
└ｆ0                                 ・・・ｎ＝０
であり、電圧降下補正を行うしきい値としてのξは任意の定数である。
【００４０】
本例は電圧降下補正処理の実際の運用に関し、電圧降下補正の計算に工夫を加え、より漸化式で表現した計算式を用いて電圧降下補正を行うものである。
このように構成することにより、電圧降下補正のための計算量を大幅に削減し、より短時間で電圧降下補正の計算を行い、より高速な処理を可能とするものである。
【００４１】
請求項１１の記載は、請求項１、２、５、８、又は１０記載の発明において、ヘッド電源スイッチ素子周辺の温度を測定し、該測定温度によって前記電圧降下補正量を可変する構成である。ここで、温度の測定は、例えばサーマルヘッド近傍で行い、電圧降下補正量の可変は、例えば温度変化によってＭＯＳＦＥＴ等のスイッチング素子が影響される場合を考慮して行う。
【００４２】
尚、ＭＯＳＦＥＴ等のスイッチング素子以外でも温度変化により電圧降下補正に影響がある場合には適用できる。
【００４３】
請求項１２の記載は、請求項１０記載の発明において、前前記計算式に従って印刷データに対する補正量のルックアップテーブル、又は補正済の印刷データのルックアップテーブルを予め作成し、該ルックアップテーブルに従って印刷データの補正、又は前記補正済印刷データに従った処理を行う構成である。
【００４４】
このように構成することにより、上記と同様更に印刷処理を高速化できる。
【００４６】
本発明は請求項１３記載の発明によれば、階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理と、該データ列作成処理によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【００４７】
【数１５】
0003747641.tif 000007
【００４８】
により求め、前記印刷データＴnに対して前記電圧降下補正量αnを減じたデータ（Ｔn−αn）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加する印刷方法を提供することによって達成できる。本例は請求項１記載の印刷装置をその印刷方法によって実現するものであり、このように構成しても、高品質な印刷処理を高速に行うことができる。
【００４９】
本発明は請求項１４記載の発明によれば、階調値を含む印刷データＴnに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理と、該データ列作成処理によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴNとし、電圧降下補正を行うしきい値としてのξを任意の定数とするとき、元の印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという条件から求まるＴn に対する電圧降下補正量αn （ｎ＞＝１）を
【００５０】
【数１６】
0003747641.tif 000008
【００５１】
により求め、前記印刷データＴnに対して前記電圧降下補正量αnを減じたデータ（Ｔn−αn）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加する印刷方法を提供することによって達成できる。本例も請求項２記載の印刷装置をその印刷方法によって実現するものであり、このように構成しても、高品質な印刷処理を高速に行うことができる。
【００５２】
本発明は請求項１５記載の発明によれば、階調値を含む印刷データに基づき印刷を行う全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データに含まれる階調値の発生頻度分布を示すテーブルを作成する頻度テーブル作成処理と、前記階調値をＴ（０≦Ｔ≦Ｔmax−１）とし、前記頻度をｆT で表したとき、Ｔに対する電圧降下補正量βT を
【００５３】
【数１７】
0003747641.tif 000009
【００５４】
により求め、前記印刷データＴに対して前記電圧降下補正量βT を減じたデータ（Ｔ−βT）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加する印刷方法を提供することによって達成できる。本例も請求項５記載の印刷装置をその印刷方法によって実現するものであり、このように構成しても、高品質で高速な印刷処理を行うことができる。
【００５５】
本発明は請求項１６記載の発明によれば、Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データの階調値に関するヒストグラムを作成する作成処理と、該作成処理によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表すとき、Ｋに対する電圧降下補正量βK を
【００５６】
【数１８】
0003747641.tif 000010
【００５７】
により求め、印刷データＫに対して前記電圧降下補正量βKを減じたデータ（Ｋ−βK）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加する印刷方法を提供することによって達成できる。本例も請求項９記載の印刷装置をその印刷方法によって実現するものであり、このように構成しても、高品質で高速な印刷処理を行うことができる。
【００５８】
本発明は請求項１７記載の発明によれば、Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データに含まれる階調値の発生頻度分布を示すヒストグラムを作成する作成処理と、該作成処理によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表したとき、Ｋに対する電圧降下補正量βK を
┌ξβK-1 ＋ΨK-1     ・・・Ｋ≧１
ξβK ＝│
└０                  ・・・Ｋ＝０
により求め、印刷データＫに対して前記電圧降下補正量βKを減じたデータ（Ｋ−βK）と所定時間間隔毎にカウント処理する階調カウンタの出力値とを比較し、該比較結果に応じて発熱抵抗体に駆動電圧を印加する印刷方法を提供することによって達成できる。
【００５９】
本例も請求項１１記載の印刷装置をその印刷方法によって実現するものであり、このように構成しても、高品質で高速な印刷処理を行うことができる。
【００６０】
【発明の実施の形態】
以下、本発明の実施の形態を図面を用いて詳細に説明する。
＜第１実施形態例＞
先ず、本発明の第１実施形態例について説明する。
【００６１】
図１は本実施形態例の印刷装置のシステム構成図である。尚、本例の印刷装置として、例えばサーマルプリンタの例を説明する。
図１において、サーマルプリンタ１はＣＰＵ２、ＤＲＡＭ３、ラインバッファ４、ヘッドデータ生成及びヘッド制御部（以下、ヘッドデータ生成／ヘッド制御部で示す）５、階調カウンタ６、電圧降下補正回路７で構成されている。また、本例の構成説明に限っては、説明を容易化するため発熱抵抗体は４個で構成し、１６階調の場合を示している。また、後述するように、本例の発熱抵抗体０〜３に供給する印刷データの階調数は、“１５”，“１０”，“４”，“２”の例で示している。
【００６２】
ＣＰＵ２は、本例のサーマルプリンタ１全体の制御を行い、ＤＲＡＭ３から供給されるプログラムに従って各種処理を行う。ＤＲＡＭ３は、印刷用メモリと作業用メモリを有し、印刷用メモリは補正前の印刷データをラスタイメージとして格納する。図２は印刷用メモリのデータ構造であり、各ライン毎に４個の印刷階調データが格納される。例えば、０ライン目のドット０（dat0）には階調数“０”のデータが格納され、ドット１（dat1）には階調数“１”のデータが格納され、ドット２（dat2）には階調数“２”のデータが格納され、ドット３（dat3）には階調数“３”のデータが格納されている。尚、他の１ライン目、２ライン目、３ライン目、・・・についても、図２に示す階調数のデータが例えば格納されている。
【００６３】
また、ＤＲＡＭ３の作業用メモリは、後述する電圧降下補正処理の際の補正演算などの処理で使用する。尚、ＤＲＡＭ３は、後述する計算結果によって得られたテーブル、例えば頻度テーブル、補正テーブル、ヒストグラムのデータなども不図示のメモリから読み出されて使用される。
【００６４】
ラインバッファ４は、印刷すべきラインのデータを格納する。このラインバッファ４に供給されるデータはＣＰＵ２の制御によって上述の印刷用メモリから読み出されたデータであり、１ラインデータ毎に供給される。
【００６５】
一方、上述のヘッドデータ生成／ヘッド制御部５、階調カウンタ６、電圧降下補正回路７はＬＳＩ８内に形成され、ヘッドの駆動制御を行っている。ヘッドデータ生成／ヘッド制御部５は、後述する計算結果に従った補正データの生成や、サーマルヘッドの制御を行う。
【００６６】
また、階調カウンタ６はＬＳＩ８内部にあるカウンタであり、この階調カウンタ６は、ＣＰＵ２からの印刷命令によって、初期時最大階調数−１のセットが行われ、各階調の印刷処理が終了する度にカウントデータをディクリメントする。このディクリメント処理はヘッドデータ生成／ヘッド制御部５から出力される階調ディクリメント信号に従って行われる。
【００６７】
また、電圧降下補正回路７は、発熱抵抗体に出力するデータから、後述するデータ列の作成や、頻度テーブルの作成、ヒストグラムの作成等を行う際使用する回路である。
【００６８】
一方、図３は上述の発熱抵抗体の構成を説明する図である。尚、発熱抵抗体とその駆動回路を含めてヘッド部をサーマルヘッド９という。また、本例においては構成説明を容易化するため、上述のように４個の発熱抵抗体とその駆動回路で構成している。各発熱抵抗体０〜３は、それぞれ対応する駆動回路に接続され、例えば発熱抵抗体０は電源部１０とトランジスタＱ０間に接続され、発熱抵抗体１は電源部１０とトランジスタＱ１間に接続され、発熱抵抗体２は電源部１０とトランジスタＱ２間に接続され、発熱抵抗体３は電源部１０とトランジスタＱ３間に接続されている。例えば、発熱抵抗体０を発熱させるためには、ストローブ信号（ＳＴＢ）が出力される間、アンド（ＡＮＤ）ゲート１１ａにデータ“１”（ハイ（Ｈ）信号）を供給し、トランジスタＱ０をオンして発熱抵抗体０に電流を流し、発熱抵抗体０を駆動する。また、発熱抵抗体１を発熱させるためには、ストローブ信号（ＳＴＢ）が出力される間、アンド（ＡＮＤ）ゲート１１ｂにデータ“１”（ハイ（Ｈ）信号）を供給し、トランジスタＱ１をオンして発熱抵抗体１に電流を流し、発熱抵抗体１を駆動する。尚、他の発熱抵抗体２及び３についても同じ駆動方法である。
【００６９】
尚、電源部１０は、例えばＣＰＵ２から出力される制御信号に従って電源のオン、オフ切換を行うＭＯＳＦＥＴ１０ａと、電源を供給する電源供給部１０ｂで構成されている。
【００７０】
上記構成のサーマルプリンタ１において、印刷動作は以下のようである。尚、ＤＲＡＭ３の印刷用メモリには、予め１頁分の印刷データが記憶されているものとする。
【００７１】
先ず、ＣＰＵ２は印刷用メモリから最初の１ライン分の印刷データをラインバッファ４に転送する。前述の図２に示す例であれば、先ず０ライン目の印刷データをラインバッファ４に供給する。次に、ＣＰＵ２はＬＳＩ８に対して１ライン分の印刷命令を出力する。この印刷命令を受けたＬＳＩ８は、ラインバッファ４からヘッドデータ生成／ヘッド制御部５に対し、印刷データを転送しながらサーマルヘッド９の駆動制御を行う。
【００７２】
図４はヘッドデータ生成／ヘッド制御部５へのデータ転送を説明するタイムチャートである。この例では前述のように、０ライン目の印刷データのドット０の階調数が“１５”であり、ドット１の階調数が“１０”であり、ドット２の階調数が“４”であり、ドット３の階調数が“２”である。また、１６階調印刷であり階調カウンタ６は、初期時カウント値は“１５”（前述の如く階調数を−１した階調数“１５”）にセットされている。
【００７３】
そして、ヘッドデータ生成／ヘッド制御部５は０ライン目の各印刷データと比較処理を行う。すなわち、ラインバッファ４から読み出した各ドットデータと階調カウンタ値とを比較する。そして、比較した結果、
（階調カウンタの値）＜＝（印刷データ）
の場合は“１”を、それ以外の場合には“０”をサーマルヘッド９に送る。
【００７４】
例えば、０ライン目のドット０の階調数は“１５”であり、階調カウンタ６のカウント値も上述のように“１５”であるので、比較結果は、
（階調カウンタの値“１５”）＝（印刷データの階調数“１５”）であり、Ｈ信号を対応するアンドゲートに出力する。したがって、アンドゲート１１ａにはＨ信号が供給され、同じタイミングでストローブ信号を出力することにより、対応するトランジスタＱ０をオンし、発熱抵抗体０を発熱する。
【００７５】
次に、０ライン目のドット１の階調数は“１０”であり、階調カウンタ６のカウント値は上述のように“１５”であるので、比較結果は、
（階調カウンタの値“１５”）＞（印刷データの階調数“１０”）であり、Ｌ信号を対応するアンドゲートに出力する。したがって、アンドゲート１１ｂにはＬ信号が供給され、同じタイミングでストローブ信号が出力されても、対応するトランジスタＱ１はオフであり、発熱抵抗体１は発熱しない。また、０ライン目のドット２及びドット３は、階調数“４”及び“２”であり、階調カウンタ６のカウント値は“１５”であるので、比較結果は、
（階調カウンタの値）＞（印刷データの階調数）となり、発熱抵抗体２、及び３は共に発熱しない。
【００７６】
したがって、階調カウンタ６の最初の階調数“１５”における処理ではドット０に対応する発熱抵抗体０のみが発熱する。
最初の階調数“１５”における処理が終了すると、階調カウンタ６をディクリメントし、階調数“１４”について同じ処理を行う。この処理を階調カウンタ６が“０”になるまで繰り返し、１ライン分の印刷が終了する。但し、階調カウンタが“０”のときは、印刷は行わない（ストローブ信号の出力は行わない）。尚、上述の処理は階調カウンタをディクリメントする場合の例で説明したが、インクリメントする場合にも同様に処理できる。尚、本文では特に断らない限り、階調カウンタ６をディクリメントする場合の例で説明する。
【００７７】
一方、本例では図４に示すように、階調数“１１”、及び“６”が使用されていない。これは、本例により電圧降下補正が行われた結果、階調数“１１”、及び“６”を飛ばして階調数をカウントし、印刷濃度を適正に制御するためである。
【００７８】
この制御は、本例において電圧降下補正回路７から階調カウンタ６に出力される電圧降下補正実行信号によって行われている。本例ではこの制御をソフトウエアにより行うものであり、先ずその原理を説明する。
【００７９】
従来例の説明において述べたように、発熱抵抗体の発熱数によって共通電極における電圧降下が異なり、印刷濃度が影響を受ける。そこで、全発熱抵抗体が通電されている状態での印刷濃度を基準として考え、一部の発熱抵抗体のみが通電された場合は「必要以上に濃くなった」と考える。この「必要以上に濃くなった」余剰分を差し引くように電圧降下補正を行うものである。
【００８０】
通常、ある階調において通電されていない発熱抵抗体数（以降、オフドット（ＯＦＦＤＯＴ）数と呼ぶ）と余剰分は比例関係にある。そこで、印刷と並行して、又は印刷処理に先だって予めＯＦＦＤＯＴ数を計数し、この計数値を各階調毎に積算していく。そして積算値が予め設定したしきい値（任意の定数）を超えたとき、階調カウンタ６に電圧降下補正実行信号を出力し、次の階調数をディクリメントする際、階調カウンタ６を−１ではなく、−２する。図４に示すＯＦＦＤＯＴバッファとは、電圧降下補正回路７にあるＯＦＦＤＯＴ数の積算値を記憶するものである。尚、このＯＦＦＤＯＴバッファは、ＣＰＵ２の印刷命令でクリアされる。
【００８１】
電圧降下補正回路７は、ストローブ信号が“１”（“Ｈ”）のタイミングでドットデータ０〜３の中の“０”の数を数える。そして、この値とＯＦＦＤＯＴバッファの値を加える。例えば、前述の例で、階調カウンタ６が階調数“１５”のタイミングでは通電していない発熱抵抗体の数は“３”であり、初期時のＯＦＦＤＯＴバッファの値は“０”であるので、加算値は“３”となる。尚、全ての発熱抵抗体が通電されていないときは、ＯＦＦＤＯＴバッファへの積算は行わず、不必要な補正を行わないようにする。
【００８２】
次に、例えば“１０”をしきい値（任意の定数）とし、この値とＯＦＦＤＯＴバッファの積算値を比較する。積算値が“１０”未満の場合、そのままＯＦＦＤＯＴバッファに積算値を格納する。このような場合は、図４の例では、階調カウンタ６が“１２”，及び“７”以外の時である。すなわち、階調カウンタ６の階調数が、“１１”，及び“６”にディクリメントする前の状態の時である。したがって、逆に階調カウンタ６が“１２”，及び“７”時、上述の例ではＯＦＦＤＯＴバッファのしきい値が“１０”を越え、電圧降下補正実行信号が出力し、階調カウンタ６を−２ディクリメントする。
【００８３】
すなわち、図４の例では階調カウンタ６の階調数が“１２”，及び“７”の後、−２ディクリメントされ、次の階調カウンタ６の階調数は“１０”及び“５”となり、階調数“１１”と“６”は飛ばされる。
【００８４】
本例は上述の原理を使用し、電圧降下補正量の最適値をソフトウェアにより計算するものである。尚、以下において、電圧降下補正をしていない印刷データを元印刷データと表示する。
【００８５】
以下、本例で使用する計算式について説明する。
先ず、あるライン（ヘッドの全発熱抵抗体数Ｎ＋１）における元印刷データＴ（Ｔ：整数）を昇順に並べたとき、
Ｔ0 ＜Ｔ1 ＜Ｔ2 ＜・・・＜Ｔn ＜・・・＜ＴN 
の関係が成立すると仮定する。電圧降下補正のしきい値をξとし、データＴn に対する補正量をαn とし、αn −αn-1 ＜１と仮定する。
【００８６】
この条件で、αn を求める。Ｔ0 の印刷においては全発熱抵抗体が通電されるため、α0 ＝０である。そこで、ｎが１以上のときのαn を求める。
元印刷データＴn に対して電圧降下補正を施したデータ（Ｔn −αn ）と、（Ｔn −αn ）と、このデータ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数とを加算したものがＴn に等しいという方程式を立てると、
【００８７】
【数１９】
0003747641.tif 000011
【００８８】
となる。
ここで、データ（Ｔn −αn ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数について補足する。
【００８９】
具体的に（Ｔ2 −α2 ）の印刷中に通電されていない発熱抵抗体による余剰分相当の階調数を求めてみる。補正後の階調値のテーブル列
Ｔ0 −α0 ＜Ｔ1 −α1 ＜Ｔ2 −α2 ＜・・・＜Ｔn −αn ＜・・・＜ＴN −αN 
を考える。
【００９０】
αn −αn-1 ＜１を仮定しているので、階調カウンタが０からＴ1 までの印刷においては、
｛（Ｔ1 −α1 ）−Ｔ0 ｝／ξ階調分
が余剰分相当の階調値になる。
【００９１】
そして、階調カウンタがＴ1 ＋１〜Ｔ2 までの印刷においては
（Ｔ2 −α2 ）／ξ＝｛（Ｔ1 −α1 ）−Ｔ0 ｝／ξ＋｛（Ｔ2 −α2 ）−（Ｔ1 −α1 ）｝／ξ階調分
が余剰分相当の階調値となる。
【００９２】
したがって、階調カウンタが０〜Ｔ2 までの間の余剰分相当の階調値は、上記の余剰分相当の階調値の合計、つまり
｛（Ｔ1 −α1 ）−Ｔ0 ｝／ξ＋｛Ｔ1 −α1 ）−Ｔ0 ｝／ξ＋｛（Ｔ2 −α2 ）−（Ｔ1 −α1 ）｝／ξ
＝［２｛（Ｔ1 −α1 ）−Ｔ0 ｝＋｛（Ｔ2 −α2 ）−（Ｔ1 −α1 ）｝］／ξ
となる。
【００９３】
これをもとに、データ（Ｔn −αn ）の印刷中における余剰分相当の階調値を求めると、
【００９４】
【数２０】
0003747641.tif 000012
【００９５】
となる。
【００９６】
一方、前述の数１９を変形すると、
【００９７】
【数２１】
0003747641.tif 000013
【００９８】
となる。ここで、ξ≫ｎと仮定し、ｎ＞＝２の場合における
【００９９】
【数２２】
0003747641.tif 000014
【０１００】
のみを展開して整理すると、
【０１０１】
【数２３】
0003747641.tif 000015
【０１０２】
が得られる。従ってｎ＞＝２の場合におけるαn は、
【０１０３】
【数２４】
0003747641.tif 000016
【０１０４】
となる。ξ≫ｎとしているので、
【０１０５】
【数２５】
0003747641.tif 000017
【０１０６】
となる。
ここで、式(8) にｎ＝１を代入すると、ξ≫ｎとして
【０１０７】
【数２６】
0003747641.tif 000018
【０１０８】
となり、式(1) において、ξ≫ｎとした場合に等しい。従って、式(8) はｎ＞＝１で成立し、
【０１０９】
【数２７】
0003747641.tif 000019
【０１１０】
となる。ところで、Ｔn ＝Ｔn-1 の場合、αn ＝αn-1 でなければならないので、αn を求める際にＴn ＝Ｔn-1 のときには、
αn ＝αn-1                               ・・・(13)
としなければならない。本手法は式(12),(13) を用いて、最適な補正量を計算し、電圧降下補正を行うものである。次に、式(12),(13) を用いて、実際に補正を行う方法について具体的に説明する。
【０１１１】
尚、電圧降下補正の処理は前述のＣＰＵ２が行う処理であり、例えばこの計算式を有するプログラムに従って処理する。また、ヘッドの全発熱抵抗体数がＮ＋１のＴmax 階調印刷のプリンタとして説明する。また、一般的にＮ＋１＞Ｔmax であり（例えば、Ａ６サイズプリンタの一例を挙げると、Ｔmax ＝２５６，Ｎ＋１＝１０２４）、あるラインの補正を行う際に、各印刷データ毎に式(12),(13) を用いて直接計算を行うと、ひとつの階調値に対して複数回同じ計算を行うことになり、効率が悪い。そこで、本例では始めに各階調値に対する電圧降下補正済みの印刷データの値を全て計算し、それをルックアップテーブル化しておくことを考える。本実施例では、このルックアップテーブルを作ってから補正する方法を例に説明する。
【０１１２】
先ず始めに、これから補正を行う１ラインの全ての元印刷データを、作業用メモリ上に昇順に並べる。並べ替えは図５に示すように、その１ラインにおける最低階調値のデータがアドレスの先頭にくるように行う。例えば、あるラインの最低階調値のデータが“３”であれば、階調値“３”のデータがＴ0となる。また、その上のアドレスも、例えば階調値“３”のデータＴ1 、又は階調値“４”のデータＴ1 となる。
【０１１３】
作業用メモリ上に１ラインの全ての元印刷データの並べ替え（以降、この並べ替えた一連のデータを階調データ列という）が完成したら、次に前述の式(12)  13) により、補正テーブルを作成する。この補正テーブルとは図６に示すような、各階調値に対する電圧降下補正後の値を格納したルックアップテーブルである。
【０１１４】
尚、階調値“０”に対するデータがないのは、補正の必要がないからである。すなわち、階調値“０”の場合、全ての発熱抵抗体を発熱されることになり、この場合を画像濃度の基準としているからである。
【０１１５】
次に、階調データ列からの補正テーブル作成は、図７に示したフローチャートに従って行う。まず、初期化の処理として、（階調データ列の先頭アドレス）＋１を変数ＡＤＲに、（補正テーブルの先頭アドレス）−１の値を変数ＴＡＢＬＥ・ＡＤＲに代入し、変数ＣＯＵＮＴを１、ＳＵＭとＴＥＭＰを０にし、ＶＡＬＵＥを０とし、階調データ列の先頭データをＤＡＴＡ  ＺＥＲＯに入れる（ステップ（以下Ｓで示す）１）。
【０１１６】
ここで、変数ＡＤＲは図５に示す階調データ列のアドレスを示し、変数ＴＡＢＬＥ・ＡＤＲは、図６に示すテーブルのアドレスであり、変数ＣＯＵＮＴは内部カウンタであり、初期値“１”をセットする。また、ＳＵＭは合計の意味であり、前述の計算式のシグマ（Σ）を意味し、初期値“０”をセットする。また、ＴＥＭＰは一時データを記憶するメモリであり、前のデータを格納し、初期値として“０”がセットされる。さらに、ＶＡＬＵＥは補正量であり、初期値として“０”がセットされる。
【０１１７】
次に、アドレスＡＤＲから格納されている値ＤＡＴＡがＴＥＭＰ以外の値（いまはＴＥＭＰ＝０）になるまで読み出しを行う（Ｓ２、Ｓ３）。すなわち、図５に示す階調データ列の変数ＡＤＲ「１」から順次データを読み出し、不図示のメモリである変数ＤＡＴＡに書き込み、変数ＤＡＴＡがＴＥＭＰ以外の値であるか判断する。
【０１１８】
これは式(13)に相当する処理である。なお、この時変数ＡＤＲとＣＯＵＮＴのインクリメントと共に、読み出した変数ＤＡＴＡの積算値（ＳＵＭ）も計算する。このＣＯＵＮＴの値は、後の補正計算の際に、式(12)の右辺分子の第１項のｎの値として使用し、ＳＵＭは右辺分子の第２項の値として使われる。
【０１１９】
ここで、読み出した値（変数ＤＡＴＡ）がＴＥＭＰである場合（Ｓ３がＮ）、変数ＤＡＴＡが“０”か否か判断し、変数ＤＡＴＡが“０”でなければ（Ｓ４がＮ）、ＳＵＭに変数ＤＡＴＡを加算する（Ｓ６）。一方、変数ＤＡＴＡが“０”であれば（Ｓ４がＹ）、アドレス（ＴＡＢＬＥ  ＡＤＲ＋ＤＡＴＡ）に変数ＤＡＴＡ−ＶＡＬＵＥを書き込む（Ｓ５）。
【０１２０】
一方、前述の判断（Ｓ３）において、読み出した値（変数ＤＡＴＡ）がＴＥＭＰ以外の値である場合、ＤＡＴＡに対する補正計算を行う（Ｓ３がＹ）。まず、ＤＡＴＡの積算値ＳＵＭを計算する（Ｓ７）。そして、次の読み出しに備えて、ＴＥＭＰにＤＡＴＡを代入する（Ｓ８）。補正量（ＶＡＬＵＥ）は、（ＳＵＭ−ＣＯＵＮＴ＊ＤＡＴＡ  ＺＥＲＯ）／ξの商である（Ｓ８）。すなわち、この補正量（ＶＡＬＵＥ）が電圧降下補正実行信号を出力するためのしきい値であり、（ＳＵＭ−ＣＯＵＮＴ＊ＤＡＴＡ  ＺＥＲＯ）／ξではなく、（ＳＵＭ−ＣＯＵＮＴ＊ＤＡＴＡ  ＺＥＲＯ）／ξの商とするのは、補正済みの印刷データを整数値になるように、小数点以下を除くためである。したがって、商ではなく、小数点以下を四捨五入したり切り上げたりしても良い。
【０１２１】
この補正量ＶＡＬＵＥをＤＡＴＡから減算した値が、階調値ＤＡＴＡに対する補正済み階調値である。これをアドレス（ＴＡＢＬＥ  ＡＤＲ＋ＤＡＴＡ）書き込む（Ｓ９）。
【０１２２】
上述の書き込み処理が終わると、再びアドレスＡＤＲから、読み出すデータがＴＥＭＰ以外の値になるまで読み出しを行い、同様に処理しながら階調データ列を最後まで読む（Ｓ１１がＮ、Ｓ１２、Ｓ２〜Ｓ１１）。
【０１２３】
以上の処理によって補正テーブルが完成する。
次に、この補正テーブルを用い、図８に示すフローチャートに従ってラインの全データを変換すれば、電圧降下補正を施した１ライン分の印刷データが得られる。以下、このフローチャートを用いて説明する。
【０１２４】
先ず、印刷用メモリから補正するラインの元印刷データを順次読み出す（ステップ（以下ＳＴで示す）１、ＳＴ２）。すなわち、図６に示すテーブルの変数ＴＡＢＬＥ・ＡＤＲを指定し、また補正するラインの元印刷データを順次読み出し、元印刷データを変数ＤＡＴＡに読み込む。
【０１２５】
次に、変数ＤＡＴＡに読み出されたデータが“０”か否か判断し（ＳＴ３）、読み出した元印刷データの階調数が“０”のとき（ＳＴ３がＮ）、何も処理を行わない。すなわち、次の元印刷データを読み出すため、変数ＡＤＲの＋１の処理のみを行う（ＳＴ５）。一方、上述の判断（ＳＴ３）において、元印刷データ（変数ＤＡＴＡ）が“０”以外の時、補正テーブルから該当する補正済み階調値を読み出し、その読み出し値を印刷用メモリに上書きする（ＳＴ４）。そして、上述と同様の変数ＡＤＲの＋１の処理を行う（ＳＴ５）。
【０１２６】
以上の処理を補正するラインの全てのデータに対して行う（ＳＴ６がＮ、ＳＴ２〜ＳＴ４）。以上の処理を各ラインに対して行えば、印刷前に全ての電圧降下補正を行うことができる。尚、あるラインにおける補正テーブル作成のフローによって、全ての階調値に対する値が作成されるわけではないが、作成されないデータはそのラインにおいて存在しない階調値であるので問題はない。
【０１２７】
以上のように、本例における手法は、あるラインにおける全ての印刷データを昇順に並べ、そのデータの並びを利用して、最適な電圧降下補正量を計算し補正を行うものである。したがって、本例は印刷を行う前に全ての印刷データに対して電圧降下補正を行うことができるので、従来例のように回路で実現する必要はなく、発熱抵抗体数が多い高画質プリンタや、高速印刷プリンタにも容易に適用できる。さらに、本手法は補正処理をソフトウェアで行えるので、コスト削減にもなる。
【０１２８】
尚、上述の実施例では、補正済みデータのテーブルを作成したが、補正量のテーブルを作成し、それを使って補正してもよい。
また、それらのテーブルを作成せずに各印刷データ毎に式(12)，（13) を直接計算して補正してもよい。また、補正テーブル作成フローのしきい値ξによる除算は、後述する第２実施形態例において述べるような比較演算に代替してもよい。
【０１２９】
また、本例ではライン形式のプリンタ装置に適用した場合を例について説明したが、本例をシリアル形式のプリンタ装置においても適用できる。
＜第２実施形態例＞
次に、本発明の第２実施形態例について説明する。
【０１３０】
上述の第１実施形態例では、あるラインにおける全印刷データを並べ替えたデータ列を作成し、式(12),(13) を用いて補正量を計算する。しかしながら、第１実施形態例の手法は、１ラインのデータ数が多いプリンタ装置に適用した場合、データ列作成に必要なメモリや演算量が増大してしまう。
【０１３１】
さらに、図７から分かるように、補正テーブル作成において、データ列からの読み出す度に比較分岐処理が必要である。そこで、これらの演算を軽減する方式として第２実施形態例を提案する。
【０１３２】
式(12),(13) をみると、次のことを意味していると解釈できる。
「αn は、元印刷データで印刷したときに積算されるＯＦＦＤＯＴ数を、しきい値ξで割った値にほぼ等しい。」
そこで、まず、元印刷データを使ってＯＦＦＤＯＴ数の積算値を計算する方法を検討する。あるラインにおける全印刷データの階調値に対するヒストグラムを考える。Ｔmax 階調印刷のプリンタとし、あるラインの元印刷データにおける階調値Ｔ（０≦Ｔ≦Ｔmax −１）の頻度をｆT で表すことにする（図９参照）。
【０１３３】
このヒストグラムは横軸が階調数を示し、縦軸がその頻度を示す。例えば、１ライン１０００ドットで構成される印刷データであれば、１０００ドット分の階調数が、階調数毎に頻度分散している。
【０１３４】
さて、階調値Ｔの印刷をしたときのＯＦＦＤＯＴ数の積算値をηT とすると、
【０１３５】
【数２８】
0003747641.tif 000020
【０１３６】
となる。
尚、η0 ＝０である。この式(14)より、各階調値に対するＯＦＦＤＯＴの積算値をヒストグラムから求めることができる。
【０１３７】
ここで、ηT −ηT-1 を計算すると、
【０１３８】
【数２９】
0003747641.tif 000021
【０１３９】
となるので、式(14)は
【０１４０】
【数３０】
0003747641.tif 000022
【０１４１】
のように置き換えられ、さらに、
【０１４２】
【数３１】
0003747641.tif 000023
【０１４３】
とおくと、
ηT ＝ηT-1 ＋ΨT-1 ＋ｆT-1 （∵Ｔ＞１）          ・・・(16)
のように表現できる。従って、階調値Ｔに対する補正量をβT とすると、
【０１４４】
【数３２】
0003747641.tif 000024
【０１４５】
となる。
第２実施例における本手法では、この式(17)を用いて電圧降下補正値を計算する。上式は漸化式で表現されており、さらに積算値ηT の計算部分は簡単な足し算になっている。これにより、第１実施例の説明で述べた補正テーブルの作成が容易に行えるようになる。
【０１４６】
以下、具体的に説明する。
本例でも、サーマルヘッドの全発熱抵抗体数がＮ＋１の、Ｔmax 階調印刷のプリンタで、第１実施形態例と同様に元印刷データに対する電圧補正済みデータを格納した補正テーブルを作る例で説明する。
【０１４７】
また、第２実施形態例における本手法を適用するプリンタのシステムは前述の図１と同様であり、処理はＣＰＵ２によって実行される。
先ず、図１０に示すような、あるラインの元印刷データに対する階調値の頻度を示すテーブル（以降、頻度テーブルと呼ぶ）を作成する。このテーブルが上述のヒストグラムに相当する。頻度テーブルは、印刷用メモリから補正を行うラインの元印刷データを順次読み出し、読み出したデータの値に該当する頻度テーブルの要素を＋１するという処理を繰り返せば作成できる。
【０１４８】
図１１は上述の頻度テーブルを作成するためのフローチャートである。このテーブルの作成は、先ず頻度テーブルの全要素を“０”にリセットし（ステップ（以下ＳＴＰで示す）１）、頻度テーブルの先頭アドレスを指定し、また印刷用メモリにおける補正するラインの先頭アドレスを指定する（ＳＴＰ２）。
【０１４９】
次に、元印刷データを変数ＤＡＴＡに読み込む（ＳＴＰ３）。そして、次の元印刷データを読み出すため、変数ＡＤＲの＋１の処理を行う（ＳＴＰ４）。
そして、上述と同様の処理を補正するラインの全てのデータに対して行う（ＳＴＰ５がＮ、ＳＴＰ６、ＳＴＰ３、４）。
【０１５０】
以上の処理を各ラインに対して行えば、頻度テーブルが作成され、印刷前に全ての電圧降下補正を行うことができる。尚、あるラインにおける補正テーブル作成のフローによって、全ての階調値に対する値が作成されるわけではないが、作成されないデータはそのラインにおいて存在しない階調値であるので問題はない。
【０１５１】
上述の頻度テーブルの作成が終わると、補正テーブルを作る。補正テーブルのアドレス構成は、前述の図６と同じである。本実施形態例では、まず式(16)による各階調毎のＯＦＦＤＯＴの積算値ηT を計算し、図６のテーブル上に展開する。この処理を示しているのが図１２に示すフローチャートである。
【０１５２】
まず、変数ＥＴＡ，ＳＵＭを０にリセットし、頻度テーブルと補正テーブルの先頭アドレスをそれぞれ変数ＡＤＲ，ＴＡＢＬ ＡＤＲに代入する（ステップ（以下Ｗで示す）１）。上述のＥＴＡ，及びＳＵＭは、それぞれ式(16)のηT-1 ，ΨT-1 に相当する。
【０１５３】
次に、階調値“１”に対する積算値を式(16)に従って計算する。まず、頻度テーブルのアドレスＡＤＲからデータＤＡＴＡを読む（Ｗ２）。いま、ＡＤＲが指しているアドレスには階調値“０”の頻度ｆ0 が格納されており、ＰＳＩ＝０であるので、このＤＡＴＡをＰＳＩに加算すると、式(16)のΨT-1 ＋ｆT-1 ＝Ψ0 ＋ｆ0 の計算になる。そして、このＰＳＩの値をＥＴＡに加算する（Ｗ３）と、積算値η1 が得られる。そこで、このＥＴＡの値を補正テーブルのアドレスＴＡＢＬＥ ＡＤＲに書き込む。この段階で変数ＳＵＭはΨ1 ，ＥＴＡはη1 になっている。
【０１５４】
次に、アドレスＡＤＲ，ＴＡＢＬＥ ＡＤＲをそれぞれインクリメントし、階調値“２”に対する積算値の計算を行う。上記と同様にアドレスＡＤＲからデータＤＡＴＡを読む。このＤＡＴＡは階調値１の頻度ｆ1 である。いまＳＵＭの値はΨ1 で、ＥＴＡはη1 であるので、ＤＡＴＡにＳＵＭを加算し、それをＥＴＡに加算すると、階調値“２”に対する積算値が求められる。これをアドレスＴＡＢＬＥ ＡＤＲに書き込む（Ｗ４、５）。
【０１５５】
以降同様に、ＡＤＲとＴＡＢＬＥ ＡＤＲをインクリメントしながら、全階調値に対して（頻度テーブルの全データの読み出しが終了するまで）繰り返すと、ＯＦＦＤＯＴの積算値ηのテーブルが完成する（Ｗ６、Ｗ７）。
【０１５６】
上述の説明で分かるように、頻度テーブルからＯＦＦＤＯＴの積算値を求める計算が、各階調毎に簡単な足し算を２回行うだけで済んでいる。これは、本手法が補正量の計算式を漸化式で表現していることによるものである。
【０１５７】
さて次に、このテーブルを電圧降下補正済みデータのテーブルに変換する。変換するには、各テーブル値をしきい値ξで除算して補正量を求め、その値を元印刷データから減算すればよい。しかし、除算はＣＰＵ２への負荷が大きい。そこで、補正量を求める計算をしきい値ξとの比較演算で代用することを考える。電圧補正済みの印刷データは整数値である必要がある。そこで、実際に補正量を式(17)で計算する際には、小数点以下の数値を削除する処理が必要になる。これを利用する。つまり、作成したＯＦＦＤＯＴ積算値のテーブルの値を低階調側から順次しきい値ξと比較していく。テーブルの値がしきい値ξ未満のものに対しては、補正値βT を０として補正済みデータの計算をする。しきい値ξ以上のものが出てきたら、階調値に対する補正量βT を１として補正済みデータの計算を行い、さらに、それ以降のデータに対してはしきい値ξの２倍値と比較するようにする。
【０１５８】
同様に処理してゆき、２ξ以上３ξ未満のデータはβT ＝２、３ξ以上４未満のデータはβT ＝３、・・・のように補正量を決めて補正済みデータを求める。このようにすればξによる除算をせずに済む。これを示したフローチャートが図１３である。
【０１５９】
先ず、補正テーブルのＴＡＢＬＥ ＡＤＲを先頭アドレスに設定し、ＢＡＴＡ，ＴＯＮＥ，ＴＨＲＥＳＨにそれぞれ補正テーブルの先頭アドレス、０，１、しきい値ξを初期値として代入する（ステップ（以下Ｕで示す）１）。ここで、変数ＢＡＴＡ，ＴＯＮＥはそれぞれ電圧降下補正量β、元印刷データの階調値を示している。上述の初期値代入が終わると、補正テーブルのアドレスＴＡＢＬＥ ＡＤＲからデータＴＡＢＬＥを読む（Ｕ２）。
【０１６０】
いま、ＴＡＢＬＥ ＡＤＲは補正テーブルの先頭アドレスを示しているので、ＴＡＢＬＥは階調値１に対するＯＦＦＤＯＴの積算値になっている。これをＴＨＲＥＳＨと比較する（Ｕ３）。そして、ＴＨＲＥＳＨ＞ＴＡＢＬＥならば階調値“１”（これは変数ＴＯＮＥの値である）からＢＥＴＡを差し引く（Ｕ３がＹ、Ｕ４）。ここで、ＢＥＴＡ＝０であるから、ＴＯＮＥ＝ＢＥＴＡ＝１より、元印刷データ１に対する補正済みデータは“１”となる。
【０１６１】
一方、ＴＨＲＥＳＨ＜＝ＴＡＢＬＥならば、ＢＥＴＡに“１”を加え、ＴＨＲＥＳＨにξを加える（Ｕ３がＮ、Ｕ５）。そして、ＴＯＮＥからそのＢＥＴＡを減算する（Ｕ６）。これをＴＡＢＬＥ ＡＤＲ，ＴＯＮＥをインクリメントしながら行うと（Ｕ７、Ｕ８）、上述した方法を用いたテーブルの変換が完了し、補正テーブルが完成する。
【０１６２】
そして、対象となるラインの全ての元印刷データに対する処理が完了すると（Ｕ７がＹ）、補正が完了する。
以上のように、本例によればヒストグラム（頻度テーブル）を利用することで、補正量計算に必要な演算処理量を少なくし、さらに、積算値ηを求める式を漸化式で表現するようにしたので、簡単な加算処理の繰り返しで全階調値に対する積算値が計算できる。つまり、第１実施形態例の方式に比べ、電圧降下補正にかかる演算量を軽減することができる。
【０１６３】
尚、上述の第２実施形態例では、補正済みデータのテーブルを作成したが、補正量のテーブルを作成してそれを使って補正してもよい。また、それらのテーブルを作成せずに、各印刷データ毎に式(17)を直接計算して補正してもよい。
【０１６４】
また、式(17)の除算は、第２実施形態例で示したようなフローによらずにそのまま計算をしてもよい。
さらに、第２実施形態例ではライン形式のプリンタ装置の場合を例に説明したが、本例はシリアル形式のプリンタ装置においても適用することができる。
＜第３実施形態例＞
次に、本発明の第２実施形態例について説明する。
【０１６５】
従来、電圧降下補正は、電圧降下の環境温度による変動については、論議されてきていない。ところで、図３の構成を見るとわかる通り、ヘッド電源のＯＮ，ＯＦＦのスイッチが使用されこのスイッチには、例えばＭＯＳＦＥＴが使われている。通常、このＭＯＳＦＥＴのドレインソース間オン抵抗ＲDS(on)は、素子のケース温度にほぼ比例して大きくなる。このことを示す図が、図１４である。
【０１６６】
そこで、予め温度を測定し、その結果により電圧降下補正の補正量を変えるようにする構成が第３実施形態例である。
ここでは、第１、第２実施例で用いたしきい値ξを温度により変える例を説明する。図１５に温度変化に対する電圧降下の影響を示す。
【０１６７】
同図は、全発熱抵抗体が通電されているときにある１つの発熱抵抗体で消費される電力をＰall 、通電されていない発熱抵抗体がｎの時のそれをＰn としたときの、Ｐn ／Ｐall を各温度についてプロットしたものである。同図を見ると分かるように、温度が高くなるとグラフの傾きが大きくなる。これは、温度が高くなるに従って、発熱抵抗体以外での電圧降下が大きくなっていることを示している。
【０１６８】
そこで、各温度に対するしきい値のルックアップテーブルを用意し、実際に補正処理する際に、ＭＯＳＦＥＴのケース温度やその周りの温度を測定し、そのときの温度に適したしきい値をテーブル参照により得るようにすればよい。
【０１６９】
図１６に図１５の場合における各温度に対するしきい値のテーブルを示す。なお、簡単のため、温度測定の分解能を２ｂｉｔとした。このテーブルを使ってしきい値を求める際の処理を図１７を用いて説明する。
【０１７０】
図１７は、前述の第１、第２実施形態例で説明した電圧降下補正の処理を行う直前に行うフローチャートであり、前述のＣＰＵ２によって実行される処理である。
【０１７１】
先ず、ＭＯＳＦＥＴのケース温度そのものや、周辺の環境温度を測定する（ステップ（以下Ｖで示す）１）。ここで、この測定は、素子やサーミスタなどを用いて行う。いま、温度測定の分解能を２ｂｉｔとしているので、温度測定結果は０〜３の値である。例えば、測定値が“０”なら０℃、測定値が“１”なら２０℃、測定値が“２”なら４０℃、測定値が“３”なら６０℃とする。
【０１７２】
上述の温度測定値により、図１６のテーブルを参照すれば、それぞれの温度に適したしきい値を得ることができる。このしきい値を使って、前述の第１、及び第２実施形態例による補正を行えば、より精細な電圧降下補正が行えることになる。
【０１７３】
以上のように、第３実施形態例によれば、温度に対する電圧降下の変化分を考慮するようにしたため、従来手法に比べ、細かな補正処理が行えるようになる。
尚、本例では温度に対するしきい値のルックアップテーブルを用意したが、基準となる温度のしきい値を用意し、その基準値との温度差から計算によって最適なしきい値を得るようにすることもできる。
【０１７４】
また、上述の例では、第１、及び第２実施例におけるしきい値を温度により変える例で説明したが、本例は、従来例による電圧降下補正に対しても適用できる。例えば、通電している発熱抵抗体数が増加するに従って印刷パルス幅を延ばすように補正する場合には、温度が高いときには更にパルス幅を延ばすように補正すればよい。
【０１７５】
さらに、本例では温度によりＭＯＳＦＥＴのオン抵抗が変化する例で説明したが、温度による電圧降下の変化の原因をＭＯＳＦＥＴのオン抵抗だけに限定するものではない。
＜第４実施形態例＞
次に、本発明の第４実施形態例について説明する。
【０１７６】
本例では、電圧降下補正量の最適値を求めるために、１ライン分の印刷データ（階調値）に関するヒストグラムを用いることを考える。
ある１ラインにおける印刷データの階調値に関するヒストグラムの、階調値０に対する頻度をｆ0 、階調値１に対する頻度をｆ1 ，・・・とする。このラインにおける階調値Ｋに対する電圧降下補正量の最適値をβK とする。ただし、βK −βK-1 ＜１と仮定する。
【０１７７】
さて、ここで、図９のヒストグラムを補正後のデータのヒストグラムに変換すると、βK に関する仮定より、図１８のようになる。この図１８を用いて、実際の印刷中における様々な階調カウンタの値のときに、ＯＦＦしているドットを考える。
【０１７８】
例えば、階調カウンタが“０”のときは、階調値“０”のデータがｆoである。階調カウンタが“１”のときは、図１８において階調値が“１”より小さいデータの頻度の積分値ｆ0 ＋（Ｋ1 −β1 ）ｆ1 の数のドットがＯＦＦしている。同様に階調カウンタが２のときは、図１８において階調値が２より小さいデータの頻度の積分値ｆ0 ＋（１−β1 ）ｆ1 ＋｛２−β2 −（１−β1 ）｝ｆ2 、階調カウンタが“３”のときは、ｆ0 ＋（１−β1 ）ｆ1 ＋｛２−β2 −（１−β1 ）｝ｆ2 ＋｛３−β3 −（２−β2 ）｝ｆ3 ，・・・となる。
【０１７９】
したがって、例えば、階調値が“３”のドットの印刷を行ったときにＯＦＦしているドットの影響による余分に与えられるエネルギー（階調換算値）は、階調カウンタが“０”，“１”，“２”のときにＯＦＦしているドットの合計ｆ0 ＋ｆ0 ＋（１−β1 ）ｆ1 ＋ｆ0 ＋（１−β1 ）ｆ1 ＋｛２−β2 −（１−β1 ）｝ｆ2 をξで割ったものになる。したがって、階調値３に対する最適な補正値β3 は、
３＝３−β3 ＋［３ｆ0 ＋２（１−β1 ）ｆ1 ＋｛２−β2 −（１−β1 ）｝ｆ2 ］／ξ
を満たすβ3 である。
【０１８０】
さて、そこで、これをもとに一般的に表現すると、階調値Ｋに対する最適な電圧降下補正量βK とは、電圧降下補正済みの階調値Ｋ−βK と、Ｋ−βK の印刷における余剰電力に相当する階調値の和がＫに等しくなる値である。つまり、次の方程式
【０１８１】
【数３３】
0003747641.tif 000025
【０１８２】
を満たすβK が階調値Ｋに対する電圧降下補正量の最適値となる。尚、ξは任意の定数である。また、Ｋ＝０，１のときは、β0 ＝０，β1 ＝ｆ0 ／ξである。上式より
【０１８３】
【数３４】
0003747641.tif 000026
【０１８４】
が得られる。
これがヒストグラムから求められる最適な電圧降下補正量である。式(18)により求めたβK を元印刷データから引けば、最適な電圧降下補正を施した印刷データ（補正済みデータ）を得ることができる。
【０１８５】
次に、式(18)を用いて電圧降下補正を行う方法を説明する。
本例を適用するプリンタ装置のシステム図は前述の図１と同様であり、本例の電圧降下補正の処理はＣＰＵ２によって実行される。尚、以降、ヘッドの全発熱抵抗体数がＮ＋１の、Ｋmax 階調印刷のプリンタ装置として説明する。
【０１８６】
ところで、一般的にＮ＋１＜Ｋmax である（Ａ６サイズプリンタの一例を挙げると、Ｋmax ＝２５６，Ｎ＋１＝１０２４）。よって、あるラインの補正を行う際に、各印刷データ毎に式(18)を用いて直接計算を行うと、ひとつの階調値に対して複数回同じ計算を行うことになり効率が悪い。そこで、始めに各階調値に対する電圧降下補正済みの印刷データの値を全て計算し、それをルックアップテーブル化しておくことを考える。本実施例では、このルックアップテーブルを作ってから補正する方法を例に説明する。
【０１８７】
本例でも、先ず図１９に示すようなあるラインの元印刷データに対する階調値の頻度を示す頻度テーブルを作成する。このテーブルが上述の図１８に示すヒストグラムに相当する。この頻度テーブルは、印刷用メモリから補正を行うラインの元印刷データを順次読み出し、読み出したデータの値に該当する頻度テーブルの要素を＋１するという処理を繰り返せば作成できる。
【０１８８】
図２０に上述の頻度テーブル作成のフローチャートを示す。この作成処理は前述の図１１と同じであり、先ず頻度テーブルの全要素を“０”にリセットし（ＳＴＰ１）、頻度テーブルの先頭アドレスを指定し、また印刷用メモリにおける補正するラインの先頭アドレスを指定する（ＳＴＰ２）。次に、元印刷データを変数ＤＡＴＡに読み込み（ＳＴＰ３）、次の元印刷データを読み出すため、変数ＡＤＲの＋１の処理を行う（ＳＴＰ４）。そして、上述と同様の処理を補正するラインの全てのデータに対して行うことにより（ＳＴＰ５がＮ、ＳＴＰ６、ＳＴＰ３、４）、頻度テーブルを作成する。
【０１８９】
上述の頻度テーブルの作成が終わると、補正テーブルを作成する。補正テーブルは、１ラインの元印刷データの各階調値に対する電圧降下補正済みの階調値を格納したテーブルである。つまり、元印刷データの階調値でこの補正テーブルを参照すれば、電圧降下補正済みの階調値が得られるものである。
【０１９０】
ここで、補正テーブルのアドレス構成を図２１に示す。また、この補正テーブル作成方法を図２２を用いて説明する。図２２において、Ｔx ，ｆx は、それぞれ元印刷データの階調値Ｘに対する補正済みの階調値、元印刷データＸの頻度（頻度テーブルの値）を示している。始めに、変数Ｋに“１”、ＡＤＲ  Ｅに補正テーブルの先頭アドレスを入れる（ステップ（以下Ｊで示す）１）。
【０１９１】
次に、アドレスＡＤＲ  ＥにＴ0 ＝０を書き込む（Ｊ２）。そして、ＡＤＲ  Ｅをインクリメントした後、アドレスＡＤＲ  ＥにＴ1 ＝１−ｆ0 ／ξを書き込む（Ｊ３、Ｊ４）。
【０１９２】
その後、ＡＤＲ  ＥとＫをインクリメントしながら式(18)により補正量βを計算し、ＴK ＝Ｋ−βをアドレスＡＤＲ  Ｅに書き込む（Ｊ５〜Ｊ９）。この処理を全ての階調について行う（Ｊ１０がＮ、Ｊ１〜Ｊ８）。
【０１９３】
以上の処理を完了すると（Ｊ１０がＹ）、補正テーブルが完成することになる。尚、βx-1 −βx ＋１＝Ｔx −Ｔx-1 であるので、図２１ではこれを式(18)の計算に利用している。
【０１９４】
さて、この補正テーブルを用いて、図２２に示すフローチャートに従って対象となるラインの全ての元印刷データを補正済みデータに変換すれば補正が完了する。
【０１９５】
すなわち、図２３の処理は、先ず、変数ＡＤＲ  ＰＲに印刷用メモリ上の対象ラインの元印刷データが格納されている領域の先頭アドレスを入れる（ステップ（以下Ｋで示す）１）。そして、アドレスＡＤＲ  ＰＲから元印刷データを読み出し（Ｋ２）、補正テーブルにより変換し、それをアドレスＡＤＲ  ＰＲに上書きする（Ｋ３）、という処理をＡＤＲ  ＰＲをインクリメントしながら（Ｋ４）、１ラインの全てに元印刷データに対して行う（Ｋ５がＮ、Ｋ２〜Ｋ４）。
【０１９６】
以上の処理は、あるラインにおける全ての印刷データに関するヒストグラムを作成し、それを利用して最適な電圧降下補正量を計算し、補正を行うものである。
【０１９７】
したがって、本例は印刷を行う前に全ての印刷データに対して電圧降下補正を行うことができるので、従来例のように回路で実現する必要はなく、発熱抵抗体数が多い高画質プリンタや、高速印刷プリンタにも容易に適用できる。さらに、本手法は補正処理をソフトウェアで行えるので、コスト削減にもなる。
【０１９８】
尚、上述の例では、補正済みのデータのテーブルを作成したが、補正量のテーブルを作成し、それを使って補正してもよい。また、それらのテーブルを作成せずに、各元印刷データ毎に式(18)を直接計算して補正してもよい。
【０１９９】
また、上述の例ではラインプリンタの場合を例に説明したが、本手法はシリアルプリンタなどにおいても適用できる。
＜第５実施形態例＞
次に、本発明の第５実施形態例について説明する。
【０２００】
上述の第４実施例においては、あるラインにおける全印刷データの階調値に関するヒストグラムを作成し、式(18)を用いて、最適な電圧降下補正量を計算するものであった。
【０２０１】
しかしながら、式(18)は、補正量を求めるための演算量が比較的大きい。そこで、本実施例では補正量を求める際の演算量を削減するための方法を述べる。
式(18)より
【０２０２】
【数３５】
0003747641.tif 000027
【０２０３】
となる。ここで、
ξβK −ξβK-1 
を計算すると、
【０２０４】
【数３６】
0003747641.tif 000028
【０２０５】
となる。したがって、
【０２０６】
【数３７】
0003747641.tif 000029
【０２０７】
が得られる。ここで、
0003747641.tif 000030
とおくと、
0003747641.tif 000031
となる。式(19)によりβK を求め、Ｋより減算すれば階調値Ｋに対する電圧降下補正済みの階調値が得られる。
【０２０８】
式(19)は簡単な漸化式となっているので、上述の実施形態例における補正済み階調値のルックアップテーブル作成を少ない演算量で、非常に簡単に行えることになる。
【０２０９】
次に、式(19)により補正テーブルを作る方法を図２４に示すフローチャートによって説明する。同図においても、βx-1 −βx ＋１＝Ｔx −Ｔx-1 を利用している。
【０２１０】
先ず、初期化を行う（ステップ（以下Ｍで示す）１）。変数ＡＤＲ  Ｅ、Ｋ，ξβ，Ψに、それぞれ補正テーブルの先頭アドレス、２，ｆ0 ，ｆ0 を入れる。
次に、アドレスＡＤＲ  ＥにＴ0 ＝０を書き込み、ＡＤＲ  Ｅをインクリメントする（Ｍ２、Ｍ３）。そして、次にアドレスＡＤＲ  ＥにＴ1 ＝１−ｆ0 ／ξを書き込んで、再びＡＤＲ  Ｅをインクリメントする（Ｍ４、Ｍ５）。
【０２１１】
次に、Ψを計算し、そのΨを用いてξβを求め（Ｍ６、Ｍ７）、そのξβからＴK を計算し、アドレスＡＤＲ  ＥにＴK を書き込む（Ｍ８、Ｍ９）。
その後、全階調値に対する計算が終了したか判断し（Ｍ１０）、全階調値に対する計算が終了していなければ（Ｍ１０がＮ）、変数ＫとＡＤＲ  Ｅをインクリメントし（Ｍ１１、Ｍ１２）、処理を継続する（Ｍ６〜Ｍ１２）。そして、全ての階調値に対する処理が完了すると（Ｍ１０がＹ）、補正テーブルが完成する。
【０２１２】
上述のようにして補正テーブルが完成したら、前述の図２３のフローチャートに従って該当するラインのデータを変換すれば、補正が完了する。
本例では、最適な補正量の計算式を漸化式で表現するようにしたものである。それにより、補正性能を全く劣化させずに、補正計算の際の演算量を前述の第４実施形態例に比べて大幅に削減できる。
【０２１３】
尚、本例では、補正済みデータのテーブルを作成したが、補正量のテーブルを作成してそれを使って補正してもよい。
また、本例でもラインプリンタの場合を例に説明したが、本手法はシリアルプリンタなどにおいても適用できる。
＜第６実施形態例＞
次に、本発明の第６実施形態例について説明する。
【０２１４】
本例は上述の第１実施形態例乃至第５実施形態例の処理を行うプログラムを記憶媒体に記憶した構成であり、このように構成することによっても本発明を実現できる。
【０２１５】
すなわち、全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理機能と、該データ列作成処理によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴN とし、ξを任意の定数とするとき、Ｔn に対する電圧降下補正量αn （ｎ＞＝１）を
【０２１６】
【数３８】
0003747641.tif 000032
【０２１７】
により求める演算処理機能と、該演算処理機能によって得た電圧降下補正量αn に従って印刷データの電圧降下補正を行う機能と、を印刷装置を含むコンピュータシステムを用いて行う際、そのプログラムを記憶する記憶媒体を提供することによって達成できる。
【０２１８】
又、全発熱抵抗体数がＮ＋１のサーマルプリンタであり、  あるラインにおける全印刷データを階調値に従って並べたデータ列を作成するデータ列作成処理機能と、該データ列作成手段によって作成されたデータ列を、階調値の小さい方から順にＴ0 ，Ｔ1 ，・・・，Ｔn ，・・・，ＴN とし、ξを任意の定数とするとき、Ｔn に対する電圧降下補正量αn （ｎ＞＝１）を
【０２１９】
【数３９】
0003747641.tif 000033
【０２２０】
により求める演算処理機能と、該演算処理機能によって得た電圧降下補正量αn に従って印刷データの電圧降下補正を行う機能と、を印刷装置を含むコンピュータシステムを用いて行う際、そのプログラムを記憶する記憶媒体を提供することによって達成できる。
【０２２１】
又、全発熱抵抗体数がＮ＋１のサーマルプリンタであり、あるラインにおける全印刷データを階調値に従った頻度を示すテーブルを作成する頻度テーブル作成処理機能と、前記階調値をＴ（０≦Ｔ≦Ｔmax −１）とし、前記頻度をｆT で表したとき、Ｔn に対する電圧降下補正量βT を
【０２２２】
【数４０】
0003747641.tif 000034
【０２２３】
により求める演算機能と、前記電圧降下補正量βT に従って印刷データの電圧降下補正を行う印刷処理機能と、を印刷装置を含むコンピュータシステムを用いて行う際、そのプログラムを記憶する記憶媒体を提供することによって達成できる。
【０２２４】
又、Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データの階調値に関するヒストグラムを作成する作成処理機能と、該作成処理機能によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表すとき、Ｋに対する電圧降下補正量βK を
【０２２５】
【数４１】
0003747641.tif 000035
【０２２６】
により求める演算機能と、前記電圧降下補正量βK に従って印刷データの電圧降下補正を行う処理機能と、を印刷装置を含むコンピュータシステムを用いて行う際、そのプログラムを記憶する記憶媒体を提供することによって達成できる。
【０２２７】
又、Ｋmax 階調の印刷を行うサーマルプリンタであり、あるラインにおける印刷データの階調値に関するヒストグラムを作成する作成処理機能と、該作成処理機能によって作成されたヒストグラムに対し、階調値Ｋ（０≦Ｋ≦Ｋmax −１）の頻度をｆK で表したとき、Ｋに対する電圧降下補正量βK を
0003747641.tif 000036
により求める演算機能と、前記電圧降下補正量βK に従って印刷データの電圧降下補正を行う処理と、を印刷装置を含むコンピュータシステムを用いて行う際、そのプログラムを記憶する記憶媒体を提供することによって達成できる。
【０２２８】
図２５はこの場合の例を示す図である。同図はホスト機器の構成を説明する図であり、不図示のＣＰＵとＲＯＭ、ＲＡＭ等の記憶装置、及びディスプレイ等で構成されている。尚、ホスト機器はプリンタ装置２４に接続されている。また、記憶装置には本例の処理を行うプログラムデータ２０が記憶されている。また、同図に示すように、ドライバ２１にフロッピーディスク２２やＣＤ−ＲＯＭ２３の記憶媒体を挿入することにより、上述のプログラムデータ２０の供給を記憶媒体から受けることができる。また、ネットワーク回線を介して、例えばサーバからプログラムデータ２０の供給を受けることもできる。
【０２２９】
尚、本例では上述のプログラムデータ２０に基づいて、前述のＣＰＵが処理を行う。
【０２３０】
【発明の効果】
以上詳細に説明したように本発明によれば、あるラインにおける印刷データを階調数順に並べ、そのデータの並びから補正量を計算するものであり、この計算を含むプログラム（ソフトウエア）により電圧降下補正を実現するものである。したがって、回路を小型化し、高品質であり、高速処理が可能なプリンタ装置を実現できる。
【０２３１】
また、補正量の計算結果を予め計算して得たテーブルを用意しておくことにより、より高速に電圧降下補正を行い、高品質なプリント画像を得ることができる。  また、簡易計算式を用いて補正量を計算することにより、より高速に電圧降下補正を行うことができ、高速印刷を可能とすることもできる。
【０２３２】
さらに、電圧降下補正に影響を及ぼす可能性のあるスイッチング素子等の温度特性から、電圧降下補正率等を可変し、より正確な電圧降下補正を行うことができる。
【図面の簡単な説明】
【図１】本実施形態例の印刷装置のシステム構成図である。
【図２】印刷用メモリのデータ構造を示す図である。
【図３】サーマルヘッドの構成を説明する図である。
【図４】ヘッドデータ生成／ヘッド制御部５へのデータ転送を説明するタイムチャートである。
【図５】並べ替えの状態を示す図である。
【図６】補正テーブルの構成を示す図である。
【図７】補正テーブルの作成処理を説明するフローチャートである。
【図８】補正処理を説明するフローチャートである。
【図９】ヒストグラムの例を説明する図である。
【図１０】第２実施形態例のデータ列を説明する図である。
【図１１】頻度テーブルの作成手順を説明するフローチャートである。
【図１２】補正処理を説明するフローチャートである。
【図１３】補正処理を説明するフローチャートである。
【図１４】温度変化とＭＯＳＦＥＴのドレイン−ソース間抵抗の変化を説明する図である。
【図１５】電圧降下特性を説明する図である。
【図１６】測定温度としきい値との関係を説明する図である。
【図１７】電圧降下補正の処理を行う直前に行うフローチャートである。
【図１８】第４実施形態例で使用するヒストグラムを示す図である。
【図１９】第４実施形態例で使用するデータ列の構成である。
【図２０】頻度テーブル作成のフローチャートである。
【図２１】補正テーブルのアドレス構成を説明する図である。
【図２２】補正テーブルに従って印刷データの補正処理を説明する図である。
【図２３】補正テーブルのアドレス構成を説明する図である。
【図２４】補正処理を説明するフローチャートである。
【図２５】第６実施形態例を説明する図である。
【符号の説明】
１  サーマルプリンタ
２  ＣＰＵ
３  ＤＲＡＭ
４  ラインバッファ
５  ヘッドデータ生成／ヘッド制御部
６  階調カウンタ
７  電圧降下補正回路
８  ＬＳＩ
９  サーマルヘッド
１０  ＭＯＳＦＥＴ
１１ａ〜１１ｄ  アンドゲート
２０  プログラムデータ
２１  ドライバ
２２  フロッピーディスク
２３  ＣＤ−ＲＯＭ
２４  プリンタ装置
【図１】
0003747641.tif 000047
【図２】
0003747641.tif 000048
【図３】
0003747641.tif 000049
【図４】
0003747641.tif 000050
【図５】
0003747641.tif 000051
【図６】
0003747641.tif 000052
【図７】
0003747641.tif 000053
【図８】
0003747641.tif 000054
【図９】
0003747641.tif 000055
【図１０】
0003747641.tif 000056
【図１１】
0003747641.tif 000057
【図１２】
0003747641.tif 000058
【図１３】
0003747641.tif 000059
【図１４】
0003747641.tif 000060
【図１５】
0003747641.tif 000061
【図１６】
0003747641.tif 000062
【図１７】
0003747641.tif 000063
【図１８】
0003747641.tif 000064
【図１９】
0003747641.tif 000065
【図２０】
0003747641.tif 000066
【図２１】
0003747641.tif 000067
【図２２】
0003747641.tif 000068
【図２３】
0003747641.tif 000069
【図２４】
0003747641.tif 000070
【図２５】
0003747641.tif 000071