JP2007087191A - 画像処理装置およびプログラム - Google Patents
画像処理装置およびプログラム Download PDFInfo
- Publication number
- JP2007087191A JP2007087191A JP2005276289A JP2005276289A JP2007087191A JP 2007087191 A JP2007087191 A JP 2007087191A JP 2005276289 A JP2005276289 A JP 2005276289A JP 2005276289 A JP2005276289 A JP 2005276289A JP 2007087191 A JP2007087191 A JP 2007087191A
- Authority
- JP
- Japan
- Prior art keywords
- image
- pixels
- image processing
- window
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Facsimile Image Signal Circuits (AREA)
- Studio Devices (AREA)
- Image Processing (AREA)
Abstract
【課題】 SIMD演算により画像処理の処理効率を向上させるとともに、スキャン画像を構成する画像領域毎にその属性に応じた画像処理を施すことを可能にする。
【解決手段】 画像データが入力される入力手段と、前記画像データの表す画像を複数のブロックに分割する分割手段と、前記分割手段により分割されたブロックの各々を解析し、そのブロックの属性を判別する判別手段と、前記分割手段により分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記判別手段により判別された属性に応じた画素数分ずつ前記画像データから読み取って記憶するレジスタと、前記レジスタに記憶されている画素値の各々に、前記判別手段により判別された属性に応じた画像処理をSIMD演算で施す画像処理手段と、を有することを特徴とする画像処理装置を提供する。
【選択図】 図5
【解決手段】 画像データが入力される入力手段と、前記画像データの表す画像を複数のブロックに分割する分割手段と、前記分割手段により分割されたブロックの各々を解析し、そのブロックの属性を判別する判別手段と、前記分割手段により分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記判別手段により判別された属性に応じた画素数分ずつ前記画像データから読み取って記憶するレジスタと、前記レジスタに記憶されている画素値の各々に、前記判別手段により判別された属性に応じた画像処理をSIMD演算で施す画像処理手段と、を有することを特徴とする画像処理装置を提供する。
【選択図】 図5
Description
本発明は、スキャン画像に画像処理を施して出力する技術に関し、特に、そのスキャン画像を構成する各オブジェクト毎にその特性に応じた画像処理を施して出力する技術に関する。
スキャナ装置などの画像読取装置によって読み取られる画像(以下、スキャン画像)に色変換処理(例えば、RGB画像からYMCK画像への変換処理)などの画像処理を施し、その処理結果である画像を印刷用紙など記録材上に形成して出力することが一般に行われている。従来、この種の画像処理については、画像処理プロセッサなどの専用のハードウェアで実行されることが一般的であったが、DSP(Digital Signal Processor)やCPU(Central Processing Unit)などの汎用プロセッサの動作クロックの向上および複数のデータに対して同一の処理を同時に施すSIMD(Single Instruction Multiple Data stream)命令への対応により、これら汎用プロセッサを用いて画像処理を実行することが実用可能なレベルに達しつつある。なお、以下では、SIMD命令に対応している汎用プロセッサを「SIMD演算器」と呼び、SIMD演算器がSIMD命令にしたがって行う演算を「SIMD演算」と呼ぶ。
例えば、特許文献1には、画像を構成する各画素の画素値を配列して成る画像データに2次元離散コサイン変換処理を施す際に、それら画素値の並び順をSIMD演算に適した順に並び替えた後に、2次元離散コサイン変換処理をSIMD演算で実行する技術が開示されている。
特開2000−69478号公報
例えば、特許文献1には、画像を構成する各画素の画素値を配列して成る画像データに2次元離散コサイン変換処理を施す際に、それら画素値の並び順をSIMD演算に適した順に並び替えた後に、2次元離散コサイン変換処理をSIMD演算で実行する技術が開示されている。
ところで、スキャン画像の中には、文字や写真、下地等(以下、文字、写真、下地等を「属性」とも呼ぶ)の異なる属性を有する複数の画像領域で構成されているものもあり、係るスキャン画像に対して画像処理を施す際には、画像領域毎にその属性に応じた画像処理を施すことが望ましい。例えば、文字領域については、文字の輪郭がぼやけてしまうことを回避するため、解像性を重視した画像処理を施すことが望ましく、写真領域については、階調性を重視した画像処理を施すことが望ましい。
しかしながら、特許文献1に開示された技術では、画像データ全体に対して一様な処理を施すことを前提としているため、画像領域毎にその属性に応じて処理を施すようにすることは難しいといった問題点がある。また、特許文献1に開示された技術には、フィルタ処理のようにウィンドウを画像全体に対して移動させつつ行う画像処理を実行することができないといった問題点もある。
本発明は、上記課題に鑑みて為されたものであり、SIMD演算により画像処理の処理効率を向上させるとともに、スキャン画像を構成する画像領域毎にその属性に応じた画像処理を施すことを可能にする技術を提供することを目的としている。
しかしながら、特許文献1に開示された技術では、画像データ全体に対して一様な処理を施すことを前提としているため、画像領域毎にその属性に応じて処理を施すようにすることは難しいといった問題点がある。また、特許文献1に開示された技術には、フィルタ処理のようにウィンドウを画像全体に対して移動させつつ行う画像処理を実行することができないといった問題点もある。
本発明は、上記課題に鑑みて為されたものであり、SIMD演算により画像処理の処理効率を向上させるとともに、スキャン画像を構成する画像領域毎にその属性に応じた画像処理を施すことを可能にする技術を提供することを目的としている。
上記課題を解決するために本発明は、画像データが入力される入力手段と、前記画像データの表す画像を複数のブロックに分割する分割手段と、前記分割手段により分割されたブロックの各々を解析し、そのブロックの属性を判別する判別手段と、前記分割手段により分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記判別手段により判別された属性に応じた画素数分ずつ前記画像データから読み取って記憶するレジスタと、前記レジスタに記憶されている画素値の各々に前記判別手段により判別された属性に応じた画像処理を同時に施す画像処理手段とを有することを特徴とする画像処理装置を提供する。
より好ましい態様においては、前記分割手段は、前記レジスタに格納可能な画素数の最大値がNである場合に、前記主走査方向の画素数がNの倍数になるように前記各ブロックの大きさを決定し、前記画像データの表す画像を複数のブロックに分割することを特徴とする。
別の好ましい態様においては、前記画像処理手段により実行される画像処理にウィンドウ処理が含まれている場合に、そのウィンドウ処理により失われる画素数をそのウィンドウ処理にて用いられるウィンドウのサイズおよびウィンドウ処理の総数から算出する算出手段を備え、前記分割手段は、前記入力手段へ入力された画像データに、付加する画素の和が前記算出手段により算出された画素数以上となるように画像の上下および左右の両端もしくは片端に画素を付加して得られる画像を、複数の前記ブロックに分割することを特徴とする。
別の好ましい態様においては、前記分割手段は、前記所定の画素値を有する画素を付加して得られる画像の前記主走査方向の画素数が、前記レジスタに格納可能な画素数の最大値Nの倍数ではない場合には、前記主走査方向の末尾にダミー画素を付加して前記主走査方向の画素数を前記最大値Nの倍数にした後に、複数の前記ブロックに分割することを特徴とする。
別の好ましい態様においては、前記画像処理手段により実行される画像処理にウィンドウ処理が含まれている場合に、そのウィンドウ処理により失われる画素数をそのウィンドウ処理にて用いられるウィンドウのサイズおよびウィンドウ処理の総数から算出する算出手段を備え、前記分割手段は、所定の画素値を有する画素を、前記算出手段により算出された画素数の半分以上であって、かつ、前記レジスタに格納可能な画素数の最大値Nの倍数である数だけ前記入力手段へ入力された画像データの両端に付加して得られる画像を、複数の前記ブロックに分割することを特徴とする。
別の好ましい態様においては、前記画像処理手段は、連続する2つのブロックにウィンドウが跨るウィンドウ処理を実行する場合には、手前のブロック内でそのウィンドウに含まれる画素の画素値を用いて得られる演算結果と、他方のブロック内でそのウィンドウに含まれる画素の画素値を用いて得られる演算結果とを個別に算出し、その両者からそのウィンドウ処理の処理結果を算出することを特徴とする。
別の好ましい態様においては、前記画像処理手段は、連続する2つのブロックにウィンドウが跨るウィンドウ処理を実行する場合に、手前のブロックについて前記レジスタに格納される画素数と、他方のブロックについて前記レジスタに格納される画素数とが異なっている場合には、前記ウィンドウ処理の注目画素が属するブロックにて画素値を表すビット数に、他方のブロックにて画素値を表すビット数と一致させるビット数変換を行った後に、前者についての演算結果と後者についての演算結果とからそのウィンドウ処理の処理結果を算出することを特徴とする。
別の好ましい態様においては、前記画像処理手段は、連続する2つのブロックのうち、手前のブロックに対する画像処理にウィンドウ処理が含まれていない場合であっても、次のブロックに対する画像処理にウィンドウ処理が含まれている場合には、前記手前のブロックに属する画素のうち次のブロックについてのウィンドウ処理でウィンドウが跨る画素については、そのウィンドウ処理による演算を行うことを特徴とする。
また、上記課題を解決するために本発明は、コンピュータ装置に、入力された画像データの表す画像を複数のブロックに分割する第1のステップと、前記第1のステップにて分割されたブロックの各々を解析し、そのブロックの属性を判別する第2のステップと、前記第1のステップにて分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記第2のステップにて判別された属性に応じた画素数分ずつ前記画像データから読み取って該コンピュータ装置のレジスタに記憶する第3のステップと、前記第3のステップにて前記レジスタに記憶された画素値の各々に前記第2のステップにて判別された属性に応じた画像処理をSIMD演算で施す第4のステップと、を実行させる特徴とするプログラムを提供する。
本発明によれば、SIMD演算により画像処理の処理効率を向上させるとともに、スキャン画像を構成する画像領域毎にその属性に応じた画像処理を施すことが可能になる、といった効果を奏する。
以下、本発明を実施する際の最良の形態について図面を参照しつつ説明する。
(A.構成)
図1は、本発明の1実施形態に係る画像処理装置120を含んでいる画像処理システムの構成例を示すブロック図である。図1に示すように、この画像処理システムには、画像読取装置110と、画像処理装置120と、画像形成装置130とが含まれており、画像処理装置120は、例えばUSB(Universal Serial Bus)ケーブルなどの通信線140aおよび140bで画像読取装置110と画像形成装置130とに接続されている。
(A.構成)
図1は、本発明の1実施形態に係る画像処理装置120を含んでいる画像処理システムの構成例を示すブロック図である。図1に示すように、この画像処理システムには、画像読取装置110と、画像処理装置120と、画像形成装置130とが含まれており、画像処理装置120は、例えばUSB(Universal Serial Bus)ケーブルなどの通信線140aおよび140bで画像読取装置110と画像形成装置130とに接続されている。
画像読取装置110は、例えばADF(Auto Document Feeder)などの自動給紙機構を備えたスキャナ装置であり、ADFにセットされた紙文書を1ページずつ読み取り、読み取った画像に対応するRGB画像データを通信線140aを介して画像処理装置120へ引渡す。ここで、RGB画像データとは、光の3原色である赤(R)、緑(G)および青(B)の組み合わせで画素の色が表された画像データである。
画像処理装置120は、通信線140aを介して画像読取装置110から引渡されたRGB画像データを、YMCK画像データに変換し通信線140bを介して画像形成装置130へ引渡す。なお、画像処理装置120の構成および動作については、後に詳細に説明する。ここで、YMCK画像データとは、印刷の基本色であるイエロー(Y)、マゼンダ(M)、シアン(C)および墨(K)の4色の組み合わせで画素の色が表された画像データである。
画像形成装置130は、例えば電子写真方式のプリンタ装置であり、通信線140bを介して画像処理装置120から引渡されたYMCK画像データに応じた画像を電子写真方式で印刷用紙などの記録材上に形成して出力する。なお、本実施形態では、画像形成装置130が電子写真方式のプリンタ装置である場合について説明するが、例えばインクジェット方式など他の方式で画像形成を行うプリンタ装置であっても勿論良い。
本実施形態では、USBケーブルを介して画像処理装置120が画像読取装置110や画像形成装置130に接続されている場合について説明するが、LAN(Local Area Network)やWAN(Wide Area Network)、インターネットなどの通信網を介して画像処理装置120が画像読取装置110や画像形成装置130に接続されているとしても良いことは勿論である。また、本実施形態では、画像読取装置110、画像処理装置120および画像形成装置130を夫々個別のハードウェアで構成する場合について説明するが、これらを一体のハードウェアで構成するとしても良いことは勿論である。このような態様にあっては、係るハードウェア内で画像読取装置110、画像処理装置120および画像形成装置130を接続する内部バスが、上記通信線の役割を担うことになる。
図2は、画像処理装置120のハードウェア構成の一例を示す図である。
図2に示すように、画像処理装置120は、制御部210、インターフェイス(以下、IF)部220、記憶部230、および、これら各構成要素間のデータ授受を仲介するバス240、を備えている。
図2に示すように、画像処理装置120は、制御部210、インターフェイス(以下、IF)部220、記憶部230、および、これら各構成要素間のデータ授受を仲介するバス240、を備えている。
制御部210は、例えばCPU(Central Processing Unit)であり、記憶部230に格納されているプログラムを実行することによって、画像処理装置120の各部を中枢的に制御するものである。この制御部210は、図2に示すようにSIMD演算レジスタ210aを有しており、このSIMD演算レジスタ210aを用いてSIMD演算を実行することができる。
より詳細に説明すると、SIMD演算レジスタ210aは、128ビット分の記憶容量を有しており、制御部210は、SIMD演算の並列数(以下、パック数)に応じてレジスタ210a内の記憶領域を分割することにより、そのパック数分のデータをSIMD演算レジスタ210aに書き込み、それらデータに同一の演算を同時に施すことができる。例えば、パック数が4である場合には、制御部210は、4個の32ビットデータに同一の演算を同時に施すことが可能であり、パック数が8である場合には、8個の16ビットデータに同一の演算を同時に施すことが可能である。なお、本実施形態では、制御部210が1つのSIMD演算レジスタを有している場合について説明するが、複数のSIMD演算用レジスタを有しているとしても良いことは勿論である。また、図2においては詳細な図示は省略したが、制御部210は、SIMD演算レジスタ210aの他に、汎用的に利用可能な汎用レジスタも有している。
より詳細に説明すると、SIMD演算レジスタ210aは、128ビット分の記憶容量を有しており、制御部210は、SIMD演算の並列数(以下、パック数)に応じてレジスタ210a内の記憶領域を分割することにより、そのパック数分のデータをSIMD演算レジスタ210aに書き込み、それらデータに同一の演算を同時に施すことができる。例えば、パック数が4である場合には、制御部210は、4個の32ビットデータに同一の演算を同時に施すことが可能であり、パック数が8である場合には、8個の16ビットデータに同一の演算を同時に施すことが可能である。なお、本実施形態では、制御部210が1つのSIMD演算レジスタを有している場合について説明するが、複数のSIMD演算用レジスタを有しているとしても良いことは勿論である。また、図2においては詳細な図示は省略したが、制御部210は、SIMD演算レジスタ210aの他に、汎用的に利用可能な汎用レジスタも有している。
IF部220は、USBインターフェイスであり、通信線140aや140bが接続されている。このIF部220は、通信線140aを介して画像読取装置110から送られてくるRGB画像データを受取り、制御部210へ引渡す一方、制御部210から引渡されたYMCK画像データを通信線140bを介して画像形成装置130へ引渡す。つまり、このIF部220は、画像読取装置110から送られてくる画像データが入力される入力手段として機能する一方、画像処理装置120による処理結果を出力する出力手段として機能する。なお、LANなどの通信網を介して画像読取装置110や画像形成装置130を接続する場合には、IF部220をNIC(Network Interface Card)で構成するようにすれば良い。
記憶部230は、図2に示すように、不揮発性記憶部230aと揮発性記憶部230bとを含んでいる。
不揮発性記憶部230aは、例えば、ハードディスクである。この不揮発性記憶部230aには、RGB画像データをYMCK画像データに変換する画像処理を制御部210に実行させるためのプログラムやその実行過程で参照される各種データが予め格納されている。一方、揮発性記憶部230bは、例えばRAM(Random Access Memory)であり、上記プログラムにしたがって作動している制御部210によってワークエリアとして利用される。
不揮発性記憶部230aは、例えば、ハードディスクである。この不揮発性記憶部230aには、RGB画像データをYMCK画像データに変換する画像処理を制御部210に実行させるためのプログラムやその実行過程で参照される各種データが予め格納されている。一方、揮発性記憶部230bは、例えばRAM(Random Access Memory)であり、上記プログラムにしたがって作動している制御部210によってワークエリアとして利用される。
不揮発性記憶部230aに格納されているデータの一例としては、上記画像処理の実行過程で適宜参照されるルックアップテーブル(以下、LUT)や、画像領域の属性を判別する際に参照される属性判別テーブル、および、画像領域の属性に応じたパック数(並列度)を設定するためのパック数管理テーブルが挙げられる。
属性判別テーブルには、文字や写真(或いは絵柄)などの画像素材の属性に応じた明度(L)のヒストグラムと彩度(a、b)のヒストグラムの基準パターンを表すデータが各属性毎に格納されている。例えば、図3(a)は黒文字、図3(b)は色文字、図3(c)はカラー写真、図3(d)は白黒写真、図3(e)は下地、の上記基準パターンである。
図3(a)に示すように、黒文字についての基準パターンは、ハイライトと高濃度にピークのある明度ヒストグラムおよび中央に1つピークがある彩度ヒストグラムであり、色文字について基準パターンは、図3(b)に示すように、ハイライトと高濃度にピークのある明度ヒストグラムおよび中央と中央からずれた位置に2つピークがある彩度ヒストグラムである。カラー写真についての基準パターンは、図3(c)に示すように、なだらかでピークが不定な明度ヒストグラムおよびなだらかでピークが不定な彩度ヒストグラムであり、白黒写真についての基準パターンは、図3(d)に示すように、なだらかでピークが不定な明度ヒストグラムおよび中央に1つのピークがある彩度ヒストグラムである。そして、下地についての基準パターンは、図3(e)に示すように、ハイライトに1つのピークがある明度ヒストグラムおよび中央に1つのピークがある彩度ヒストグラムとなる。
このように、属性判別テーブルには、各属性についての基準パターンを表すデータが属性毎に格納されているため、制御部210は、各画像領域についてその基準パターンを算出し、その算出結果を上記属性判別テーブルの格納内容と比較することによって、その画像領域の属性を判別することができる。
図3(a)に示すように、黒文字についての基準パターンは、ハイライトと高濃度にピークのある明度ヒストグラムおよび中央に1つピークがある彩度ヒストグラムであり、色文字について基準パターンは、図3(b)に示すように、ハイライトと高濃度にピークのある明度ヒストグラムおよび中央と中央からずれた位置に2つピークがある彩度ヒストグラムである。カラー写真についての基準パターンは、図3(c)に示すように、なだらかでピークが不定な明度ヒストグラムおよびなだらかでピークが不定な彩度ヒストグラムであり、白黒写真についての基準パターンは、図3(d)に示すように、なだらかでピークが不定な明度ヒストグラムおよび中央に1つのピークがある彩度ヒストグラムである。そして、下地についての基準パターンは、図3(e)に示すように、ハイライトに1つのピークがある明度ヒストグラムおよび中央に1つのピークがある彩度ヒストグラムとなる。
このように、属性判別テーブルには、各属性についての基準パターンを表すデータが属性毎に格納されているため、制御部210は、各画像領域についてその基準パターンを算出し、その算出結果を上記属性判別テーブルの格納内容と比較することによって、その画像領域の属性を判別することができる。
図4は、パック数管理テーブルの一例を表す図である。
図4に示すように、パック数管理テーブルには、SIMD演算で画像処理を実行する際のパック数が画像領域の属性毎に書き込まれている。例えば、図4に示すパック数管理テーブルの格納内容は、以下の3つのことを表している。第1に、属性が下地である画像領域(以下、「下地領域」)については、パック数を16にしてSIMD演算を実行すべきこと(すなわち、下地領域については、16個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すべきこと)である。第2に、属性が文字である画像領域(以下、「文字領域」)については、パック数を8にしてSIMD演算を実行すべきこと(すなわち、下地領域については、8個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すべきこと)である。そして、第3に、属性が写真である画像領域(以下、「写真領域」)については、パック数を4にしてSIMD演算を実行すべきこと(すなわち、写真領域については、4個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すこと)である。
図4に示すように、パック数管理テーブルには、SIMD演算で画像処理を実行する際のパック数が画像領域の属性毎に書き込まれている。例えば、図4に示すパック数管理テーブルの格納内容は、以下の3つのことを表している。第1に、属性が下地である画像領域(以下、「下地領域」)については、パック数を16にしてSIMD演算を実行すべきこと(すなわち、下地領域については、16個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すべきこと)である。第2に、属性が文字である画像領域(以下、「文字領域」)については、パック数を8にしてSIMD演算を実行すべきこと(すなわち、下地領域については、8個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すべきこと)である。そして、第3に、属性が写真である画像領域(以下、「写真領域」)については、パック数を4にしてSIMD演算を実行すべきこと(すなわち、写真領域については、4個分の画素データをSIMD演算レジスタ210aに読み込み、同時に同一の処理を施すこと)である。
以上に説明したように、本実施形態に係る画像処理装置120のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一であり、不揮発性記憶部230aに格納されているプログラムにしたがって制御部210を作動させることによって、本発明に係る画像処理装置に特有な機能が実現される。
(B.動作)
次いで、上記プログラムにしたがって作動している制御部210が実行する動作について図面を参照しつつ説明する。
画像読取装置110のADFに紙文書がセットされ、画像読取装置110の操作部(図示省略)に設けられているスタートボタンなど所定の操作子が操作されると、画像読取装置110は、上記ADFにセットされている紙文書の画像を光学的に読み取り、読み取った画像に対応するRGB画像データを生成し通信線140aを介して画像処理装置120へ引渡す。画像処理装置120の制御部210は、IF部220を介してRGB画像データを受取ると、不揮発性記憶部230aに格納されているLUTを適宜参照してそのRGB画像データをL*a*b*画像データに変換する。ここで、L*a*b*画像データとは、画像を明度(L)と彩度(a,b)とで表す画像データである。そして、制御部210は、このL*a*b*画像データに対して、図4に示す画像処理を施し、さらに、その処理結果をYMCK画像データに変換しIF部220を介して画像形成装置130へと引渡し、その処理結果に応じた画像を記録紙上に形成させる。なお、以下に説明する動作例では、上記各画像データでは、各画素の画素値が8ビットで表れているものとする。
次いで、上記プログラムにしたがって作動している制御部210が実行する動作について図面を参照しつつ説明する。
画像読取装置110のADFに紙文書がセットされ、画像読取装置110の操作部(図示省略)に設けられているスタートボタンなど所定の操作子が操作されると、画像読取装置110は、上記ADFにセットされている紙文書の画像を光学的に読み取り、読み取った画像に対応するRGB画像データを生成し通信線140aを介して画像処理装置120へ引渡す。画像処理装置120の制御部210は、IF部220を介してRGB画像データを受取ると、不揮発性記憶部230aに格納されているLUTを適宜参照してそのRGB画像データをL*a*b*画像データに変換する。ここで、L*a*b*画像データとは、画像を明度(L)と彩度(a,b)とで表す画像データである。そして、制御部210は、このL*a*b*画像データに対して、図4に示す画像処理を施し、さらに、その処理結果をYMCK画像データに変換しIF部220を介して画像形成装置130へと引渡し、その処理結果に応じた画像を記録紙上に形成させる。なお、以下に説明する動作例では、上記各画像データでは、各画素の画素値が8ビットで表れているものとする。
図5は、上記プログラムにしたがって作動している制御部210が実行する画像処理動作の流れを示すフローチャートとである。制御部210は、まず、ウィンドウ処理により損失する画素数Cをそのウィンドウ処理にて使用するウィンドウ(デジタルフィルタ)のサイズから算出する(ステップSA100)。
次いで、制御部210は、揮発性記憶部230bに格納されている画像データの表す画像を複数のブロックに分割する際のブロックのブロックサイズMを、SIMD演算レジスタ210aのパック数の最大値Nの整数倍に設定する(ステップSA110)。例えば、本実施形態では、制御部210は、上記ブロックサイズMに32(すなわち、パック数Nの2倍の値)を設定する。なお、本実施形態では、ブロックサイズMにパック数の最大値Nの2倍の値を設定する場合について説明したが、その1倍の値(すなわち、16)を設定するとしても良く、また、3倍の値を設定するとしても勿論良い。但し、上記ブロックサイズMの値が大きいほど、画像処理の処理効率が向上する反面、ブロックの属性を判別する際の判別精度が低下してしまうので、要求される処理効率と画像処理を施すことにより得られる画像の画質を総合的に判断し、適切な大きさのブロックサイズを設定するのが好ましい。
次いで、制御部210は、揮発性記憶部230bに格納されている画像データの表す画像を複数のブロックに分割する際のブロックのブロックサイズMを、SIMD演算レジスタ210aのパック数の最大値Nの整数倍に設定する(ステップSA110)。例えば、本実施形態では、制御部210は、上記ブロックサイズMに32(すなわち、パック数Nの2倍の値)を設定する。なお、本実施形態では、ブロックサイズMにパック数の最大値Nの2倍の値を設定する場合について説明したが、その1倍の値(すなわち、16)を設定するとしても良く、また、3倍の値を設定するとしても勿論良い。但し、上記ブロックサイズMの値が大きいほど、画像処理の処理効率が向上する反面、ブロックの属性を判別する際の判別精度が低下してしまうので、要求される処理効率と画像処理を施すことにより得られる画像の画質を総合的に判断し、適切な大きさのブロックサイズを設定するのが好ましい。
次いで、制御部210は、図6に示すように、上記画像データの両端に所定の画素値(本実施形態では、上記画像の端部の画素値)を有するW(ステップSA100にて算出された画素数Cの半分の値、但し、Cが奇数の場合は、小数点以下を切り上げた値)個の画素を付加し、さらに主走査方向の末尾にその主走査方向の画素数が上記パック数の最大値Nの倍数になるようダミー画素(図6では、ハッチングで表記)を付加する(ステップSA120)。より詳細に説明すると、制御部210は、まず、上記Wを2倍した値に上記画像データの主走査方向の画素数を加算して得られる値を、パック数の最大値Nで除算して余りを求める。次いで、制御部210は、パック数Nから上記余りを減算して得られる値を、主走査方向の末尾に付加するべきダミー画素の個数として算出する。なお、上記余りが“0”である場合には、ダミー画素を付加しない状態で、主走査方向の画素数がパック数の最大値Nの倍数になっていることを意味しているのであるから、この場合にはダミー画素の付加は不要である。上記のようにしてダミー画素を付加することによって、所定のパック数でSIMD演算レジスタ210aに画素データを読み込んでゆく過程で、主走査方向の末尾周辺の画素データを読み込む際に、画像データ以外のデータが書き込まれたメモリ領域にアクセスしてしまうことが確実に回避される。なお、本実施形態では、パック数Nから上記余りを減算して得られる値分のダミー画素を付加する場合について説明したが、パック数Nから上記余りを減算して得られる値にNの自然数倍の値を加算して得られえる値分のダミー画素を付加するようにしても勿論良い。
次いで、制御部210は、ステップSA120にてダミー画素を付加した画像データに対応する画像を、ステップSA110にて設定したブロックサイズMを有するブロック(本実施形態では、M=32であるから、32×32のマトリクス状のブロック)に分割し、各ブロックの属性を判別する(ステップSA130)。より詳細に説明すると、制御部210は、各ブロックについて明度(L)のヒストグラムと彩度(a、b)のヒストグラムを算出し、それを前述した属性判別テーブルに格納されている基準パターンと比較することによって、各ブロックの属性を判別する。この場合、制御部210は、例えば、基準パターンとの乖離度を適当な計算方法で算出し、一番乖離度が小さい基準パターンを選択する。
次いで、制御部210は、上記ブロックの各々について、その属性に応じたパック数を前述したパック数管理テーブルを参照して特定し、そのブロックの画像データを主走査方向に沿ってその属性に応じたパック数分ずつ読み取ってSIMD演算用レジスタに格納し、所定の画像処理(本実施形態では、属性に応じたデジタルフィルタを用いたウィンドウ処理)をSIMD命令を使用して実行する(ステップSA140)。例えば、属性が写真であるとステップSA130にて判別されたブロックについては、属性が写真である場合のパック数は4であるから、制御部210は、そのブロックに属する画素の画素値を表すデータを4画素分ずつ読み込んでSIMD演算レジスタ210aに格納し、SIMD演算を実行することによって、それら4個のデータに同時に同一の処理を施す。
ここで注目すべき点は、SIMD演算レジスタの記憶容量は128ビットであり、パック数を4にした場合には、1画素当り32ビットの記憶領域が割り当てられることになる。本実施形態では、各画素の画素値は8ビットで表されているのであるから、属性が写真であると判別されたブロックについては、実際の画素データのデータサイズに比較して充分に大きい記憶領域が割り当てられることになる。このため、属性が写真であるブロックについて画像処理過程で、演算結果が8ビットの範囲に収まらなくなること(桁あふれ)が回避される。従来は、桁あふれの発生に対処するために、画素データの下位1ビットを捨てる(当然に画質は劣化する)などしていたが、本実施形態に係る画像処理装置では、このようなことを行う必要がないため、高精度な画像処理を施すことができる。
これに対して、属性が文字や下地であるブロックについては、8並列(1画素当りに割り当てられる記憶容量は16ビット)または16並列(1画素当りに割り当てられる記憶容量は8ビット)で画像処理が実行されるため、画像処理の実行過程で演算結果の桁あふれが発生する可能性が高く、その処理精度は低下するものの、高速に画像処理を実行することが可能になる。なお、属性が文字や写真であるブロックについては、元来、属性が写真であるブロックほど高い処理精度を要求されないため、上記のような処理精度の低下が生じたとしても、特段の影響は生じない。
ところで、ウィンドウ処理の実行過程では、図7に示すように、連続する2つのブロックにウィンドウが跨ることが起こり得る。このような場合には、制御部210は、以下のようにそのウィンドウ処理の処理結果を算出する。まず、制御部210は、主走査方向で手前のブロック内の画素のうち上記ウィンドウに含まれる画素の画素値を用いてそのウィンドウ処理に応じた演算を行い、その演算結果を第1の部分結果として前述した汎用レジスタに書き込み記憶する。次いで、制御部210は、主走査方向で上記手前のブロックに後続するブロック(現ブロック)内の画素のうち、上記ウィンドウに含まれる画素の画素値を用いてそのウィンドウ処理に応じた演算を行い、その演算結果(以下、第2の部分結果)と上記汎用レジスタに格納されている第1の部分結果とからそのウィンドウ処理の処理結果を算出する。なお、ウィンドウが跨る2つのブロックの属性が異なっている場合には、第1の部分結果のビット長と第2の部分結果のビット長が異なってしまうことになるが、このような場合には、第1および第2の部分結果のうち上記ウィンドウ処理の注目画素を含んでいるブロックについての部分結果のビット長に合わせるように他方の部分結果にビット数変換を施すようにすれば良い。なお、ビット長が短い方を他方のビット長に一致するようにビット数変換を施した後に上記ウィンドウ処理の処理結果を算出するようにしても勿論良い。
そして、制御部210は、全てのブロックに対して画像処理を完了すると、その処理結果からステップSA120にて付加したダミー画素に対応する部分を削除し、前述したYMCK画像データに変換して画像形成装置130へ引渡す(ステップSA150)。
以上に説明したように、本実施形態に係る画像処理装置120によれば、スキャン画像を構成する各画像領域の属性に応じてSIMD演算のパック数が切り替えられ、各画像領域に属する画素の画素値をその属性に応じたビット数分のデータで表して演算を行うことが可能になり、高速かつ高画質な画像処理を実現することが可能になる、といった効果を奏する。
また、本実施形態に係る画像処理装置120によれば、各画像領域の主走査方向の画素数を、SIMD演算のパック数の最大値の倍数にすることによって、各画像領域に属する全ての画素について一様な処理をSIMD演算で施すことが可能になり、SIMD演算を用いてその画像処理の処理効率を向上させることが可能になる、といった効果を奏する。
また、本実施形態に係る画像処理装置120によれば、各画像領域の主走査方向の画素数を、SIMD演算のパック数の最大値の倍数にすることによって、各画像領域に属する全ての画素について一様な処理をSIMD演算で施すことが可能になり、SIMD演算を用いてその画像処理の処理効率を向上させることが可能になる、といった効果を奏する。
(C.変形例)
以上、本発明の1実施形態について説明したが、係る実施形態に以下に述べるような変形を加えても良いことは勿論である。
(C−1:変形例1)
上述した実施形態では、画像処理装置120へ入力される画像データがRGB画像データである場合について説明したが、他の形式の画像データであっても勿論良い。また、画像処理装置120が出力する画像データについてもYMCK画像データに限定されるものではなく、他の形式の画像データであっても良い。また、上述した実施形態では、入力されたRGB画像データをL*a*b*画像データに変換して属性判別を行う場合について説明したが、他の形式の画像データに変換して属性判別を行うとしても良く、また、入力画像データをそのまま用いて属性判別を行うようにしても良い。
以上、本発明の1実施形態について説明したが、係る実施形態に以下に述べるような変形を加えても良いことは勿論である。
(C−1:変形例1)
上述した実施形態では、画像処理装置120へ入力される画像データがRGB画像データである場合について説明したが、他の形式の画像データであっても勿論良い。また、画像処理装置120が出力する画像データについてもYMCK画像データに限定されるものではなく、他の形式の画像データであっても良い。また、上述した実施形態では、入力されたRGB画像データをL*a*b*画像データに変換して属性判別を行う場合について説明したが、他の形式の画像データに変換して属性判別を行うとしても良く、また、入力画像データをそのまま用いて属性判別を行うようにしても良い。
(C−2:変形例2)
上述した実施形態では、入力された画像データの両端に所定の画素値を有する画素を、ウィンドウ処理にて損失する画素数の半分以上ずつ付加し、さらに、ダミー画素を付加して主走査方向の画素数がパック数の最大値Nの倍数になるようにする場合について説明したが、ウィンドウ処理にて損失する画素数の半分以上の値であって、かつ、パック数の最大値Nの整数倍である数分の上記所定の画素値を有する画素を付加して主走査方向の画素数を調節するようにしても良い。このようにすると、例えば、1画素ずつシフトしたデータをSIMD演算レジスタに格納する必要がある処理において、SIMD演算を効率良く実行することが可能になる。具体的には、パック数が4である3つのSIMD演算レジスタを用いて、3×3ウィンドウ内で、上下行の画素値の和の差を求める処理を行う場合には、図8(a)に示すように、ウィンドウ処理にて損失する画素数の半分以上の値であって、かつ、パック数の最大値Nの整数倍個(本変形例では、1倍、すなわち、4個)分の画素を処理対象である画素配列の端部に付加することによって、各SIMD演算レジスタに1画素ずつシフトしたデータが読み込まれ、効率良く行の和を並列で演算することが可能になる。
上述した実施形態では、入力された画像データの両端に所定の画素値を有する画素を、ウィンドウ処理にて損失する画素数の半分以上ずつ付加し、さらに、ダミー画素を付加して主走査方向の画素数がパック数の最大値Nの倍数になるようにする場合について説明したが、ウィンドウ処理にて損失する画素数の半分以上の値であって、かつ、パック数の最大値Nの整数倍である数分の上記所定の画素値を有する画素を付加して主走査方向の画素数を調節するようにしても良い。このようにすると、例えば、1画素ずつシフトしたデータをSIMD演算レジスタに格納する必要がある処理において、SIMD演算を効率良く実行することが可能になる。具体的には、パック数が4である3つのSIMD演算レジスタを用いて、3×3ウィンドウ内で、上下行の画素値の和の差を求める処理を行う場合には、図8(a)に示すように、ウィンドウ処理にて損失する画素数の半分以上の値であって、かつ、パック数の最大値Nの整数倍個(本変形例では、1倍、すなわち、4個)分の画素を処理対象である画素配列の端部に付加することによって、各SIMD演算レジスタに1画素ずつシフトしたデータが読み込まれ、効率良く行の和を並列で演算することが可能になる。
(C−3:変形例3)
上述した実施形態では、画像読取装置110から引渡された画像データに所定の画像処理を施し、その処理結果を画像形成装置130へ引渡す場合について説明したが、その処理結果の出力先は画像形成装置に限定されるものではなく、例えば液晶ディスプレイなどの表示装置を備えたコンピュータ装置へ上記処理結果を引渡し、その処理結果に応じた画像を上記表示装置に表示させるようにしても良く、また、データベースを備えたコンピュータ装置に上記処理結果を引渡しそのデータベースに登録させるようにしても良い。
上述した実施形態では、画像読取装置110から引渡された画像データに所定の画像処理を施し、その処理結果を画像形成装置130へ引渡す場合について説明したが、その処理結果の出力先は画像形成装置に限定されるものではなく、例えば液晶ディスプレイなどの表示装置を備えたコンピュータ装置へ上記処理結果を引渡し、その処理結果に応じた画像を上記表示装置に表示させるようにしても良く、また、データベースを備えたコンピュータ装置に上記処理結果を引渡しそのデータベースに登録させるようにしても良い。
(C−4:変形例4)
上述した実施形態では、本発明に係る画像処理装置に特徴的な画像処理を制御部210に実行させるためのプログラムが不揮発性記憶部230aに予め格納されている場合について説明した。しかしながら、例えばCD−ROM(Compact Disk- Read Only Memory)やDVD(Digital Versatile Disk)などのコンピュータ装置読み取り可能な記録媒体に、上記プログラムを記録して配布し、その記録媒体を用いて一般的なコンピュータ装置に上記プログラムをインストールするとしても良いことは勿論である。このようにすると、一般的なコンピュータ装置を本発明に係る画像処理装置として機能させることが可能になるといった効果を奏する。また、上述した実施形態では、本発明に係る画像処理装置に特徴的な各手段をソフトウェアモジュールで実現する場合について説明したが、ハードウェアモジュールで実現するとしても良いことは勿論である。
上述した実施形態では、本発明に係る画像処理装置に特徴的な画像処理を制御部210に実行させるためのプログラムが不揮発性記憶部230aに予め格納されている場合について説明した。しかしながら、例えばCD−ROM(Compact Disk- Read Only Memory)やDVD(Digital Versatile Disk)などのコンピュータ装置読み取り可能な記録媒体に、上記プログラムを記録して配布し、その記録媒体を用いて一般的なコンピュータ装置に上記プログラムをインストールするとしても良いことは勿論である。このようにすると、一般的なコンピュータ装置を本発明に係る画像処理装置として機能させることが可能になるといった効果を奏する。また、上述した実施形態では、本発明に係る画像処理装置に特徴的な各手段をソフトウェアモジュールで実現する場合について説明したが、ハードウェアモジュールで実現するとしても良いことは勿論である。
110…画像読取装置、120…画像処理装置、130…画像形成装置、210…制御部、220…IF部、230…記憶部、230a…不揮発性記憶部、230b…揮発性記憶部、240…バス。
Claims (9)
- 画像データが入力される入力手段と、
前記画像データの表す画像を複数のブロックに分割する分割手段と、
前記分割手段により分割されたブロックの各々を解析し、そのブロックの属性を判別する判別手段と、
前記分割手段により分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記判別手段により判別された属性に応じた画素数分ずつ前記画像データから読み取って記憶するレジスタと、
前記レジスタに記憶されている画素値の各々に、前記判別手段により判別された属性に応じた画像処理をSIMD演算で施す画像処理手段と、
を有することを特徴とする画像処理装置。 - 前記分割手段は、
前記レジスタに格納可能な画素数の最大値がNである場合に、前記主走査方向の画素数がNの倍数になるように前記各ブロックの大きさを決定し、前記画像データの表す画像を複数のブロックに分割する
ことを特徴とする請求項1に記載の画像処理装置。 - 前記画像処理手段により実行される画像処理にウィンドウ処理が含まれている場合に、そのウィンドウ処理により失われる画素数をそのウィンドウ処理にて用いられるウィンドウのサイズおよびウィンドウ処理の総数から算出する算出手段を備え、
前記分割手段は、
前記入力手段へ入力された画像データに、付加する画素の和が前記算出手段により算出された画素数以上となるように画像の上下および左右の両端もしくは片端に画素を付加して得られる画像を、複数の前記ブロックに分割する
ことを特徴とする請求項2に記載の画像処理装置。 - 前記分割手段は、
前記所定の画素値を有する画素を付加して得られる画像の前記主走査方向の画素数が、前記レジスタに格納可能な画素数の最大値Nの倍数ではない場合には、前記主走査方向の末尾にダミー画素を付加して前記主走査方向の画素数を前記最大値Nの倍数にした後に、複数の前記ブロックに分割する
ことを特徴とする請求項3に記載の画像処理装置。 - 前記画像処理手段により実行される画像処理にウィンドウ処理が含まれている場合に、そのウィンドウ処理により失われる画素数をそのウィンドウ処理にて用いられるウィンドウのサイズおよびウィンドウ処理の総数から算出する算出手段を備え、
前記分割手段は、
所定の画素値を有する画素を、前記算出手段により算出された画素数の半分以上の数であって、かつ、前記レジスタに格納可能な画素数の最大値Nの倍数である数だけ前記入力手段へ入力された画像データの両端に付加して得られる画像を、複数の前記ブロックに分割する
ことを特徴とする請求項2に記載の画像処理装置。 - 前記画像処理手段は、連続する2つのブロックにウィンドウが跨るウィンドウ処理を実行する場合には、手前のブロック内でそのウィンドウに含まれる画素の画素値を用いて得られる演算結果と、他方のブロック内でそのウィンドウに含まれる画素の画素値を用いて得られる演算結果とを個別に算出し、その両者からそのウィンドウ処理の処理結果を算出する
ことを特徴とする請求項2に記載の画像処理装置。 - 前記画像処理手段は、連続する2つのブロックにウィンドウが跨るウィンドウ処理を実行する場合に、手前のブロックについて前記レジスタに格納される画素数と、他方のブロックについて前記レジスタに格納される画素数とが異なっている場合には、前記ウィンドウ処理の注目画素が属するブロックにて画素値を表すビット数に、他方のブロックにて画素値を表すビット数と一致させるビット数変換を行った後に、前者についての演算結果と後者についての演算結果とからそのウィンドウ処理の処理結果を算出する
ことを特徴とする請求項6に記載の画像処理装置。 - 前記画像処理手段は、連続する2つのブロックのうち、手前のブロックに対する画像処理にウィンドウ処理が含まれていない場合であっても、次のブロックに対する画像処理にウィンドウ処理が含まれている場合には、前記手前のブロックに属する画素のうち次のブロックについてのウィンドウ処理でウィンドウが跨る画素については、そのウィンドウ処理による演算を行う
ことを特徴とする請求項6に記載の画像処理装置。 - コンピュータ装置に、
入力された画像データの表す画像を複数のブロックに分割する第1のステップと、
前記第1のステップにて分割されたブロックの各々を解析し、そのブロックの属性を判別する第2のステップと、
前記第1のステップにて分割されたブロックの各々について、そのブロックに属する画素の画素値を主走査方向にそのブロックについて前記第2のステップにて判別された属性に応じた画素数分ずつ前記画像データから読み取って該コンピュータ装置のレジスタに記憶する第3のステップと、
前記第3のステップにて前記レジスタに記憶された画素値の各々に前記第2のステップにて判別された属性に応じた画像処理をSIMD演算で施す第4のステップと、
を実行させる特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005276289A JP2007087191A (ja) | 2005-09-22 | 2005-09-22 | 画像処理装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005276289A JP2007087191A (ja) | 2005-09-22 | 2005-09-22 | 画像処理装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007087191A true JP2007087191A (ja) | 2007-04-05 |
Family
ID=37974103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005276289A Pending JP2007087191A (ja) | 2005-09-22 | 2005-09-22 | 画像処理装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007087191A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8145000B2 (en) | 2007-10-29 | 2012-03-27 | Kabushiki Kaisha Toshiba | Image data compressing method and image data compressing apparatus |
JP2012216045A (ja) * | 2011-03-31 | 2012-11-08 | Fujitsu Ltd | 画像処理装置および画像処理プログラム |
US10032097B2 (en) | 2016-09-06 | 2018-07-24 | Seiko Epson Corporation | Image processing device, image processing method, and control program |
-
2005
- 2005-09-22 JP JP2005276289A patent/JP2007087191A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8145000B2 (en) | 2007-10-29 | 2012-03-27 | Kabushiki Kaisha Toshiba | Image data compressing method and image data compressing apparatus |
JP2012216045A (ja) * | 2011-03-31 | 2012-11-08 | Fujitsu Ltd | 画像処理装置および画像処理プログラム |
US10032097B2 (en) | 2016-09-06 | 2018-07-24 | Seiko Epson Corporation | Image processing device, image processing method, and control program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3962642B2 (ja) | 画像処理装置およびその方法 | |
JP5267255B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP6210319B2 (ja) | 印刷方法及び印刷システム | |
JP6127877B2 (ja) | 画像処理装置、および、コンピュータプログラム | |
JP2007200170A (ja) | 画像処理装置および画像処理プログラム | |
JP2004235993A (ja) | 画像処理方法 | |
JP2018056873A (ja) | 画像処理装置、および、コンピュータプログラム | |
JP6251029B2 (ja) | 制御装置、画像処理装置、制御方法、およびプログラム | |
JP2007087191A (ja) | 画像処理装置およびプログラム | |
US8139266B2 (en) | Color printing control device, color printing control method, and computer readable recording medium stored with color printing control program | |
JP2004023739A (ja) | 色変換テーブルの作成方法およびその装置 | |
JP2010120290A (ja) | 画像処理装置および画像処理方法 | |
JP4595801B2 (ja) | 画像処理装置 | |
JP2006048420A (ja) | 色変換テーブル作成方法および画像処理装置 | |
JP5317931B2 (ja) | 印刷装置、印刷装置の制御方法、およびプログラム | |
JP2012061701A (ja) | 画像処理装置、画像処理方法、画像形成装置、および画像処理プログラム | |
JP4571758B2 (ja) | 文字認識装置、文字認識方法、画像処理装置、画像処理方法、並びにコンピュータ読み取り可能な記録媒体 | |
JP2006109482A (ja) | 画像処理方法、画像処理装置及び画像処理プログラム | |
JP2002344763A (ja) | 画像処理装置 | |
KR20220127978A (ko) | Cmyk 컬러 스페이스로 분판된 컬러 이미지로부터 이미지의 망점 패턴을 보전하여 흑백 이미지를 생성하는 장치 및 그 방법 | |
JP4930503B2 (ja) | 画像処理装置と画像処理プログラム | |
JP2004187146A (ja) | 画像処理装置の色味変換方法 | |
JP5575306B2 (ja) | 印刷システム、印刷システムの制御方法、およびプログラム | |
JP3660226B2 (ja) | 画像処理方法及び画像処理装置並びにそれを備えた画像形成装置 | |
JP5523226B2 (ja) | 画像処理装置、画像処理プログラム、および画像処理方法 |