JPH11288384A - データ格納方法及び装置 - Google Patents

データ格納方法及び装置

Info

Publication number
JPH11288384A
JPH11288384A JP8896798A JP8896798A JPH11288384A JP H11288384 A JPH11288384 A JP H11288384A JP 8896798 A JP8896798 A JP 8896798A JP 8896798 A JP8896798 A JP 8896798A JP H11288384 A JPH11288384 A JP H11288384A
Authority
JP
Japan
Prior art keywords
data
storage
partial array
area
partial
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
Application number
JP8896798A
Other languages
English (en)
Inventor
Hitoshi Hoshino
仁 星野
Keiichiro Kawamura
圭一朗 河村
Yoichi Iwabuchi
洋一 岩渕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP8896798A priority Critical patent/JPH11288384A/ja
Publication of JPH11288384A publication Critical patent/JPH11288384A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Input (AREA)

Abstract

(57)【要約】 【課題】既に格納された部分配列に代えて新たな部分配
列を格納する際に、両部分配列間で重複する部分のデー
タを移動することなく再利用可能とする。 【解決手段】2次元配列データから抽出された部分配列
データが既にメモリに格納されており、新たに格納すべ
き部分配列データが抽出されると、ステップS10によ
り、メモリに既に格納されている部分配列データと新た
に抽出された部分配列データとの重複部分における要素
データについて該メモリにおける格納位置が保たれるよ
うに、該抽出された部分配列データの格納開始位置が決
定される。そして、S11〜S13により、決定された
格納開始位置より新たに抽出された部分配列データの前
記重複部分の要素データを除く各要素データを格納す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタル化した画
像データなどの二次元配列の形態のデータをメモリに格
納するデータ格納方法及び装置に関するものである。
【0002】
【従来の技術】画像データなどの二次元配列の形をした
データをメモリに格納する場合、二次元配列の任意の一
方の方向を縦方向として、他方の方向を横方向とする
と、横方向の各行を一次元の配列としてメモリ上に要素
データを並べ、さらにその行を単位として縦方向の一次
元配列をメモリ上に並べる形を取るのが一般的である。
二次元配列の格納の例として、4×3の二次元配列(2,
2)〜(5,4)をメモリに格納した場合の様子を図22に
示す。
【0003】従来のデータ格納方法では、一度このよう
に配列の格納位置をメモリ上に設定すると、縦方向の各
行の格納位置は変わることはない、つまり行の切れ目と
なる位置はメモリ上で不変である。例えば、図22の例
では、(5,2)と(2,3)の間、および(5,3)と(2,4)
の間が行の切れ目であり、この位置は不変となる。
【0004】
【発明が解決しようとする課題】元となる二次元配列デ
ータが、メモリに確保された、あるいは確保可能な格納
領域よりも大きく、一度に全てのデータをメモリ上に格
納することができない場合、二次元配列のデータからメ
モリに格納可能な大きさの矩形領域を切り出して部分配
列としてメモリに格納する。この格納は一時的なもの
で、格納された配列の外側にあるデータが必要な場合に
は、元となる二次元配列から新しい矩形領域を切り出し
て、新たな部分配列をメモリに格納する。このとき、既
にメモリに格納されている配列と新たに格納する配列に
重なる要素がある場合には、その部分のデータを再利用
することができる。
【0005】再利用される要素については、その要素の
データを格納するために必要な処理を省くことができ
る。さらに格納されているデータが元となる二次元配列
から切り出された後でなんらかのデータ加工処理を受け
ていた場合は、再利用する要素についてのデータ加工処
理も省くことができる。
【0006】しかし従来の方法で再利用を行うために
は、行の切れ目が不変であるために、まず再利用する要
素のデータを新しく格納する配列の格納位置に移動する
必要があった。このため、データを移動する処理の増加
分だけデータの再利用による処理量低減の効果が減少し
てしまう欠点があった。
【0007】この従来の方法による問題点を図23を用
いて説明する。図22のように(2,2)〜(5,4)の部分
配列が格納されているデータ格納領域に(4,3)〜(7,
5)の新たな部分配列を新しく格納する場合には、(4,
3)、(5,3)、(4,4)、(5,4)で構成される2×2の
配列が再利用可能である。したがって、まず、図23に
示されるように、この再利用する要素のデータを新しく
格納する配列の格納位置に合わせて移動する。そして、
新たな部分配列の残り要素のデータを対応する格納位置
に格納する。
【0008】本発明は、上述した従来のデータ格納処理
における問題に鑑みてなされたものであり、既に格納さ
れた部分配列に代えて新たな部分配列を格納する際に、
両部分配列間において重複する部分のデータについて、
移動することなく再利用を可能とするデータ格納装置及
び方法を提供することを目的とする。
【0009】
【課題を解決するための手段】上記の目的を達成するた
めの本発明の一態様によるデータ格納方法は例えば以下
の工程を備える。すなわち、2次元配列のデータから抽
出された部分配列データを格納するデータ格納方法であ
って、前記2次元配列データから、格納すべき部分配列
データを抽出する抽出工程と、前記メモリに既に格納さ
れている部分配列データと前記抽出工程で抽出された部
分配列データとの重複部分における要素データについて
該メモリにおける格納位置が保たれるように、該抽出さ
れた部分配列データの格納開始位置を決定する決定工程
と、前記決定工程で決定された格納開始位置より、前記
抽出工程で抽出された部分配列データの前記重複部分の
要素データを除く各要素データを格納する格納工程とを
備える。
【0010】また、上記の目的を達成するための本発明
の他の態様によれば、上記データ格納方法において、格
納すべき部分配列に必要なデータ領域よりも少なくとも
1行分大きな領域を有するデータ領域を設定する設定工
程と、前記決定工程による部分配列データの格納位置の
決定に従って前記抽出工程で抽出された部分配列データ
を格納するに際して、前記設定工程で設定されたデータ
領域をはみ出すか否かを判定する判定工程と、前記判定
工程で前記データ領域をはみ出すと判定された場合、当
該はみ出した部分を含むデータを行を単位として該デー
タ領域の先頭領域もしくは末尾領域へ移動する移動工程
とを更に備えるデータ格納方法が提供される。
【0011】
【発明の実施の形態】以下、添付の図面を参照して、本
発明の好適な実施形態を詳細に説明する。
【0012】<第1の実施形態>本実施形態におけるデ
ータ格納方法では、再利用可能な要素(既に格納されて
いる部分配列と新たに格納すべき部分配列との間で重複
する要素)が存在する場合にはメモリ上の配列の格納位
置(すなわち、行の切れ目)を設定しなおす。新しく格
納する部分配列の格納位置は、再利用する要素データの
存在位置を基準にして設定される。再利用する要素のデ
ータはそのまま新しい格納位置に存在することになるた
め、再利用する要素以外の要素のデータを格納するだけ
で新しい配列の格納が終了する。なお、本データ格納方
法及びこれを適用したデータ格納装置の利用方法として
は、大容量の画像ファイルから一部分を取り出して表示
する装置などにおいて、この一時的に取り出したデータ
を保存するバッファがあげられる。
【0013】上記のデータ格納方法によれば、格納済み
のデータを移動する必要は全くない。このため、再利用
要素の再配置に起因する再利用の効果の減少を解決でき
る。ただし、この方法では配列の格納位置がずれるた
め、メモリ上に部分配列の格納用として確保した領域を
はみ出してしまう可能性がある。
【0014】そこで、第1の実施形態では、確保した格
納領域をリングバッファとして扱い、はみ出した部分の
要素のデータをデータ格納領域の反対側に格納する方法
を採用する。この方法では始めに部分配列(2,2)〜
(5,4)を格納すると図22で示す従来と同じ位置に格
納されるが、新たな部分配列(4,3)〜(7,5)を格納す
ると図11で示す位置に格納される。このように、(4,
3)、(5,3)、(4,4)、(5,4)で構成される2×2の
配列に関る要素の格納位置は不変であるとともに、設定
されたデータ格納領域に部分配列の各データが納まって
いる。もちろん、リングバッファであるので、新たな部
分配列の最下行の(2,4)、(3,4)、(4,4)、(5,4)
の各要素の連続性はデータ格納領域内で保たれている。
【0015】図1は第1の実施形態のデータ格納方法を
用いたデータ格納装置の構成例を示すブロック図であ
る。図1に示したデータ格納装置では、本実施形態のデ
ータ格納方法をコンピュータ10がプログラムを実行す
ることにより実現している。
【0016】コンピュータ10において、1は内部デー
タの送信経路であるバス、2、3はそれぞれプログラム
やデータの格納領域であるROM及びRAMである。4
はCPUであり、データ演算や制御プログラムの実行を
行う。5は入力インターフェースであり、キーボード/
マウスなどの入力装置11からデータを受信する。6は
出力インターフェースであり、ディスプレイ12やプリ
ンタ13などの外部出力装置へデータを送信する。7は
入出力インターフェースであり、磁気記憶装置14や通
信ネットワークを経由して外部のデータ処理装置15と
のデータ送受信を行う。
【0017】図1に示すデータ格納装置では、本実施形
態のデータ格納方法は、ROM2に格納されたデータ格
納プログラム220をCPU4が実行することにより実
現される。このデータ格納プログラム220は、コンピ
ュータのOS(オペレーティングシステム)210上で
実行され、外部や内部の他のプログラム230とデータ
の受け渡しを行うことができる。なお、データ格納プロ
グラム220は必ずしもROM2上に存在する必要はな
く、ROM2や外部からRAM3上に読み込んで実行す
ることも可能である。
【0018】また、図1に示すデータ格納装置では、デ
ータ格納プログラムはデータを格納するデータ格納領域
310をRAM3上に確保する。このデータ格納領域3
10は、RAM3以外のランダムアクセスが可能な記憶
媒体上に確保することも可能である。さらに、図1に示
すデータ格納装置では、データ格納プログラム220は
データ格納領域310の他にデータ格納領域情報320
をRAM3上に確保する。なお、このデータ格納領域情
報320は、RAM3以外のCPU4内部や外部記憶装
置14などの一時的な記憶が可能な場所に格納すること
も可能である。
【0019】データ格納領域情報320には、データ格
納領域の状態と配列の格納位置や格納されているデータ
範囲についての情報を格納しておく。確保しておく情報
の一例として、データ格納領域の先頭のアドレスを示す
先頭アドレス321、当該データ格納領域のサイズを示
す格納領域サイズ322、当該データ格納領域に設定す
る配列の大きさを示す配列サイズ323と、一つの要素
のデータのサイズを示す1要素データサイズ324、配
列の格納位置に設定されている範囲の先頭要素の配列番
号を示す設定先頭要素番号325、その先頭要素の当該
データ格納領域における位置を示す設定先頭要素位置3
26、データ格納領域に既に格納されているデータ範囲
の先頭要素の配列番号を示す格納済先頭要素番号32
7、既に格納されているデータの大きさを示す格納済デ
ータサイズ328などがある。
【0020】以下、第1の実施形態によるデータ格納処
理の手順を図2及び図3のフローチャートを参照して説
明する。
【0021】図2は第1の実施形態によるデータ格納プ
ログラムの動作の概要を示すフローチャートである。な
お、本実施形態では、4×3配列のデータを格納する場
合のデータ格納プログラムの動作をこのフローチャート
に従って説明する。
【0022】まず、データ格納領域の初期化(ステップ
S1)を行う。図4は、4×3配列のデータを格納する
ための初期化したデータ格納領域の概略を示す図であ
る。この場合では、一般的なデータ格納方法と同じよう
に必要な領域がメモリ上に確保される。本例では、12
要素分のデータを格納可能な領域が確保される。ただ
し、上述したように、第1の実施形態ではこのデータ格
納領域をリングバッファとして用いる。
【0023】初期化が行われるとデータの格納要求を受
け付ける(ステップS2)。本実施形態のデータ格納プ
ログラムは、ここで格納すべきデータ範囲の指定(ステ
ップS3)を受け付けるようになっている。ここで格納
すべきデータ範囲とは、二次元配列データ中の所望の部
分領域であり、詳しくは図6を用いて後述する。なお、
データ範囲の指定は、キーボードやマウス等の入力装置
11を用いて行われる。
【0024】データ範囲が指定されると、指定されたデ
ータ範囲が確保されているデータ格納領域に格納できる
かをチェックし(ステップS4)、格納できない場合に
は当該データ格納要求を却下する。また、すでにデータ
が格納されている状態で本処理が実行された場合には、
新たに指定されたデータ範囲が当該旧データ範囲と一致
するか(縦横サイズが一致するか)を判断し、一致しな
い場合は当該データ格納要求を却下する。なお、格納を
要求されたデータ範囲が確保されたデータ格納領域より
も大きな場合には、確保するデータ格納領域の大きさを
拡大するか、あるいはデータ格納装置に格納するデータ
を当該データ格納領域に格納可能な大きさに分割してデ
ータ処理を行うようにシステムを構成してもよい。
【0025】一方、要求されたデータ範囲がデータ格納
領域に格納できる場合には、当該データ格納領域に、既
にデータが格納されているかをチェックする(ステップ
S5)。データが格納されていない場合には、要求され
た全データを格納する要求(ステップS7)を出して、
従来のデータ格納方法と同じように要求された全データ
範囲の格納処理(ステップS6)を行う。なお、ステッ
プS7におけるデータ格納の指示は、例えば、大容量の
画像ファイルから一部分を取り出して表示する装置大容
量の画像ファイルが保管されている記憶装置及びそのデ
バイスドライバに対して行われることになる。例とし
て、図4の如く初期化されたデータ格納領域に(2,2)
〜(5,4)の範囲(指定されたデータ範囲)のデータを
格納する場合を図5に示す。
【0026】また、ステップS5において、当該データ
格納領域に既にデータが格納されていると判定された場
合には、既に格納されているデータのデータ範囲と、新
しく格納を要求されたデータ範囲(ステップS3で指定
されたデータ範囲)のずれを調べる(ステップS8)。
このずれは、各データ範囲の縦方向と横方向のそれぞれ
一番近い要素がどれだけ離れているかによって求める。
図6は既に格納されたデータと新たに格納するデータの
各データ範囲のずれの一例を示す図である。既に格納さ
れているデータが図5で示したデータ範囲(2,2)〜
(5,4)であり、新たにステップS3で指定されたデー
タ範囲が(4,3)〜(7,5)であった場合、両者は図6で
示すようなずれを有することになる。
【0027】ここで、縦方向と横方向の両方のずれ量が
データ格納範囲よりも小さい場合には、両データ格納範
囲に重複する部分が存在するので、既に格納されている
データ範囲に再利用可能な要素が存在することになる
(ステップS9)。図6の例では、(4,3)、(5,3)、
(4,4)、(5,4)の各要素が再利用可能である。もし再
利用可能な要素が存在するならば、データ格納範囲にお
ける配列の格納位置の再設定を行う(ステップS1
0)。ここで、この格納位置の再設定においては、再利
用可能な要素のデータを移動することなく、新たなデー
タ範囲の各要素を格納できるように格納位置を設定して
いく。
【0028】図3は配列の格納位置の再設定の動作手順
をあらわすフローチャートである。まず、横方向のずれ
による配列の格納位置の再設定を行う(ステップS10
1)。例として、図6で示した横方向のずれに対する新
しい配列の格納位置の設定を図7に示す。図6におい
て、横方向のずれ量は2要素であるので、行の区切り位
置を図5で示した位置より2要素分横方向へ移動する。
この結果、行の区切り位置は、(3,2)と(4,2)の間、
(7,2)と(4,3)の間、(7,3)と(4,4)の間に移動す
る。この結果、データ格納領域に2要素分のはみ出しが
生じるが、データ格納領域はリングバッファであるので
はみ出した分は先頭に移動することになる。この点につ
いては後述する。
【0029】次に、縦方向のずれによる配列の格納位置
の再設定を行う(ステップS102)。例として、図6
で示した縦方向のずれに対する新しい配列の格納位置の
設定を図8に示す。図6において縦方向のずれ量は1行
単位分であるので、図8に示されるように格納先頭位置
を1行単位分ずらして格納領域先頭アドレスの設定を行
う。
【0030】以上のような横方向のずれに基づく行の区
切り位置の移動と縦方向のずれに基づく格納先頭位置の
移動により、再設定された配列の格納位置がデータ格納
領域をはみ出していないかをチェックする(ステップS
103)。はみ出している格納位置がある場合には、リ
ングバッファの機構によりその部分を確保した領域の反
対側に設定し直す(ステップS104)。図8の例では
6要素分の領域がデータ格納領域をはみ出している。そ
こで、ステップS104の処理により、はみ出した分を
リングバッファの機構によりデータ領域の先頭へ移動す
る。この時点での格納領域の状態例を図9に示す。
【0031】なお、図6の例では右方向及び下方向へず
れているので行区切り位置と格納先頭位置が図示のデー
タ格納領域の下方向へずれるが、データ範囲が左方向へ
ずれた場合は行区切り位置が上方向へ、データ範囲が上
方向へずれた場合は格納先頭位置が上方向へずれること
になるのは当業者には明らかであろう。また、再設定の
結果として図示のデータ格納領域の上の方へ格納位置が
はみ出した場合は、当該データ格納領域の末尾側へはみ
出した分を移動すればよいことも明らかである。
【0032】さて、図9の如く配列の格納位置が定まっ
たら、再利用可能なデータが存在しない範囲で、なおか
つ新しく格納するデータ範囲の部分を求める(ステップ
S11)。図10は図6に示したデータ範囲の指定を行
った場合における、新たに格納が必要な範囲を示す図で
ある。そして、データの格納が必要な範囲の存在をチェ
ックして(ステップS12)、もし存在する場合にはそ
の範囲についてのデータ格納の指示(ステップS14)
を出して、データの格納処理(ステップS13)を行な
う。ステップS13で示されるデータ格納処理は横方向
に連続したデータを連続的に格納するループ処理であ
る。データの格納が必要な領域が図10に示す例のよう
に必ずしも矩形の形をしておらず、また、データ格納領
域上で連続してもいない。このため、ステップS13の
一度のデータ格納処理では格納ができない場合もある。
このような場合には、格納が必要な範囲を矩形領域や連
続した領域に分割し、全ての格納を必要とする範囲につ
いてデータ格納が終了するまで繰り返し(ステップS1
1〜S13を繰り返して)格納を行なう。
【0033】データ範囲(2,2)〜(5,4)が既に格納さ
れている領域に対して新しくデータ範囲(4,3)〜(7,
5)を格納した結果、データ格納領域が最終的にどのよ
うになるかを図11に示す。図11に示すように、リン
グバッファの先頭(格納領域先頭アドレス)は(7,5)
と(4,3)の間に移動する。
【0034】次に、既に格納してあるデータの範囲と新
しく格納するデータ範囲のずれが大きく、再利用できる
領域が存在しない場合を説明する。この場合の例とし
て、データ範囲(4,3)〜(7,5)が既に格納されている
領域に対して新しくデータ範囲(1,0)〜(4,2)を格納
する場合を説明する。図12は既に格納されているデー
タ範囲(4,3)〜(7,5)と新しく格納するデータ範囲
(1,0)〜(4,2)のずれを示す図である。この場合には
縦方向のずれがデータ格納領域の縦の大きさよりも大き
く、再利用可能なデータは存在しない。このため、格納
済みのデータを全て破棄して(ステップS15)、一般
的なデータ格納方法により全データを格納する(ステッ
プS6)ことになる。データ範囲(4,3)〜(7,5)が既
に格納されている領域に対して、これと重複する部分を
持たないデータ範囲(1,0)〜(4,2)を格納した結果、
データ格納領域が最終的にどのようになるかを図13に
示す。
【0035】なお、ずれがデータ格納領域よりも大きい
場合の処理(ステップS9)(ステップS15)は、必
ずしもずれが小さい場合と分ける必要はない。ただし、
本実施形態のように、ずれがデータ格納領域よりも大き
い場合を分けて処理を行うことにより、再利用できるデ
ータが無いにもかかわらず再利用のためのデータ格納位
置の再設定を行なうという無駄を省くことができる。
【0036】<第2の実施形態>上記第1の実施形態で
は、確保したデータ格納領域をリングバッファとして扱
うことにより、新たに指定されたデータ範囲の各要素を
格納するに際して、再利用可能な要素のデータを移動す
ることなく、確保したデータ格納量域内でデータの格納
を行えるようにした。すなわち、第1の実施形態では、
データ範囲の1要素を単位としてリングバッファの反対
側への移動、格納を行っている。
【0037】これに対して、第2の実施形態では、第1
の実施形態と同様に、確保した領域をリングバッファと
して扱うが、確保するデータ格納領域に格納する配列の
横一行分だけ余裕を持たせておき、はみ出した部分を横
一行分を単位としてリングバッファの反対側に移動、格
納する。この方法では始めに配列(2,2)〜(5,4)を格
納すると図15で示す位置に格納される。ここで、デー
タ格納領域には1行分の余裕(1012〜1015)が
設けられている。そして、新しく(4,3)〜(7,5)のデ
ータ範囲を格納すると、図20で示す位置に格納され
る。上述のように、第1の実施形態では、図11で示す
ごとく行単位の途中からリングバッファの先頭と末尾に
分割されることがあるが、第2の実施形態では行が分割
されることはない。
【0038】以下、第2の実施形態について詳細に説明
する。なお、第2の実施形態によるデータ格納装置の構
成は第1の実施形態(図1)と同様であり、ここでは説
明を省略する。また、第2の実施形態のデータ格納処理
の手順について、図2のフローチャートを流用して説明
することにする。
【0039】第2の実施形態では、4×3配列のデータ
を格納する場合のデータ格納プログラムの動作を、図2
のフロー図に従って説明する。第1の実施形態とは異な
り、第2の実施形態の格納方法では格納する配列の横方
向一行は要素のデータがメモリ上に連続に格納されるこ
とを保証する。
【0040】まず、データ格納領域の初期化(ステップ
S1)を行なう。図14に4×3配列のデータを格納す
るために要素単位でリングバッファを行なう例の初期化
したデータ格納領域の概略を示す。本実施形態では一般
的なデータ格納方法と異なり、格納する配列の横方向一
行の要素分多いデータが格納可能な領域をメモリ上に確
保される。例えば、4×3の二次元配列データを格納す
る場合には、16要素分(4×4の二次元配列分)のデ
ータが格納可能な領域をメモリ上に確保されることにな
る。
【0041】初期化が行われるとデータの格納要求を受
け付ける(ステップS2)。データ格納要求の受け付け
と、受け取ったデータ範囲が確保した領域に格納できる
か否かのチェック(ステップS4)の動作は第1の実施
形態と同じである。ただし、格納できる配列の範囲は初
期化時に決めた大きさであるため、確保したメモリに格
納が可能な最大の配列よりも小さい。
【0042】要求されたデータ範囲がデータ格納領域に
格納できる場合には、次に既にデータが格納されている
かをチェックする(ステップS5)。データが格納され
ていない場合には、要求された全データを格納する要求
(ステップS7)を出して、従来のデータ格納方法と同
じように要求された全データ範囲の格納処理(ステップ
S6)を行なう。例として初期化したデータ格納領域に
(2,2)〜(5,4)の範囲のデータを格納した場合を、図
15に示す。
【0043】一方、当該データ格納領域に既にデータが
格納されている場合は、格納されているデータ範囲と、
新しく格納を要求されたデータ範囲のずれを調べる(ス
テップS8)。このずれは、各データ範囲の縦方向と横
方向のそれぞれ一番近い要素がどれだけ離れているかに
よって求める。本例でも、第1の実施形態と同様に、図
6に示すようなデータ範囲が指定された場合を説明す
る。
【0044】縦方向と横方向の両方のずれがデータ格納
範囲よりも小さい場合には、既に格納されているデータ
範囲に再利用可能な要素が存在することになる(ステッ
プS9)。もし再利用可能な要素が存在するならば、デ
ータ格納範囲における配列の格納位置の再設定を行なう
(ステップS10)。以下、第2の実施形態による配列
の格納位置の再設定の動作手順を図3のフローチャート
を流用して説明することにする。
【0045】まず、横方向のずれによる配列の格納位置
の再設定を行なう(ステップS101)。例として、図
6で示した横方向のずれに対する新しい配列の格納位置
の設定を図16に示す。横方向へは2要素分ずれている
ので、行の単位の切れ目を、図16に示されるメモリ領
域の下方向へ2要素分ずらす。
【0046】次に、縦方向のずれによる配列の格納位置
の再設定を行なう(ステップS102)。図6で示した
ように、本例における縦方向のずれは1行単位分である
ので、図17に示すように、格納先頭位置を1行単位
分、下方向へずらす。この処理の結果、格納領域先頭ア
ドレスが領域1005と1006の間に移動する。
【0047】以上説明したずれによる格納位置の設定を
行なった後に、新しい配列の格納位置がデータ格納領域
をはみ出していないかをチェックする(ステップS10
3)。はみ出している格納位置がある場合には、リング
バッファの機構により、はみ出した要素を含む行を確保
した領域の反対側に設定し直す(ステップS104)。
【0048】ここでは、第1の実施形態のデータ格納方
法と異なり、格納する配列よりも大きな領域を確保して
ある。このため、領域をはみ出す要素がある場合には、
当該リングバッファの反対側には必ず一行分のデータよ
りも大きな空の格納位置が存在する。よって、第2の実
施形態では、確保した領域の反対側への移動を行単位で
行い、反対側のデータが格納されている格納位置と連続
するように格納する。この様子を図18に示す。すなわ
ち、図17に示されるように確保されているデータ格納
領域をはみ出す部分が存在する場合、そのはみ出した部
分の要素を含む行全体(図17では(4,5)、(5,5)、
(6,5)、(7,5))をリングバッファの反対側へ移動
し、(4,3)から始まる行のデータに連続するように配
置する。この結果、図18に示されるように、確保した
領域内の先頭と終端にのみ余分な格納位置が存在し、そ
の部分を除いた部分がリングバッファとなる。
【0049】以上のようにして配列の格納位置が定まっ
たら、新たに指定されたデータ範囲内において、再利用
可能なデータが存在しない範囲の部分を求める(ステッ
プS11)。そして、データの格納が必要な範囲の存在
をチェックして(ステップS12)、もし存在する場合
にはその範囲についてのデータ格納の指示(ステップS
14)を出して、データの格納処理(ステップS13)
を行なう。データの格納が必要な領域を図19に示す。
第1の実施形態と同じように、第2の実施形態のデータ
格納方法においても、データの格納が必要な領域は必ず
しも矩形の形をしておらず、またデータ格納領域上で連
続してもいない。このため、一度のデータ格納処理で格
納ができない場合もある。このような場合には、格納が
必要な範囲を矩形領域や連続した領域に分割し、全ての
格納が必要な範囲についてデータ格納が終了するまで繰
り返し格納を行なう。
【0050】以上説明した第2の実施形態のデータ格納
処理により、データ範囲(2,2)〜(5,4)が既に格納さ
れているデータ格納領域に対して新しくデータ範囲(4,
3)〜(7,5)を格納した場合に、データ格納領域が最終
的にどのようになるかを図20に示す。
【0051】もし既に格納してあるデータの範囲と新し
く格納するデータ範囲のずれが大きく、再利用できる領
域が存在しない場合は、第1の実施形態と同じように格
納済みのデータを全て破棄して(ステップS15)、従
来のデータ格納方法により全データを格納する(ステッ
プS6)。データ範囲(4,3)〜(7,5)が既に格納され
ている領域に対して、このデータ範囲と重複部分を持た
ない新しいデータ範囲(1,0)〜(4,2)を格納した結果
(図12参照)、データ格納領域が最終的にどのように
なるかを図21に示す。
【0052】以上のように、上記各実施形態のデータ格
納方法によれば、二次元配列の各要素のデータを格納す
る位置を固定せず、既に格納してある配列要素の格納位
置を基準にして新しく格納する配列の格納位置設定する
ので、格納済みのデータについてはメモリ上で移動する
ことなく再利用することができる。
【0053】また、格納領域をリングバッファとして扱
うことで、配列の格納位置の再設定によるデータの格納
領域からのはみ出しを防ぎ、確保したデータ格納領域を
最大限に活用することができる。
【0054】また、特に第2の実施形態によれば、リン
グバッファ機構を採用しながら行単位での配置の連続性
が保証されるので、後段の処理をより効率的に行うこと
ができる。更に、第2の実施形態によれば、データが行
単位で連続性を保つように格納されるので、後続する処
理においてデータ読み出し時のアドレス制御が容易とな
る。
【0055】なお、本発明は、複数の機器(例えばホス
トコンピュータ,インタフェイス機器,リーダ,プリン
タなど)から構成されるシステムに適用しても、一つの
機器からなる装置(例えば、複写機,ファクシミリ装置
など)に適用してもよい。
【0056】また、本発明の目的は、前述した実施形態
の機能を実現するソフトウェアのプログラムコードを記
録した記憶媒体を、システムあるいは装置に供給し、そ
のシステムあるいは装置のコンピュータ(またはCPU
やMPU)が記憶媒体に格納されたプログラムコードを
読出し実行することによっても、達成されることは言う
までもない。
【0057】この場合、記憶媒体から読出されたプログ
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。
【0058】プログラムコードを供給するための記憶媒
体としては、例えば、フロッピディスク,ハードディス
ク,光ディスク,光磁気ディスク,CD−ROM,CD
−R,磁気テープ,不揮発性のメモリカード,ROMな
どを用いることができる。
【0059】また、コンピュータが読出したプログラム
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれることは言うまでもない。
【0060】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
【0061】
【発明の効果】以上説明したように、本発明によれば、
既に格納された部分配列に代えて新たな部分配列を格納
する際に、両部分配列間で重複する部分のデータについ
ては、データを移動することなく再利用することが可能
となる。
【0062】
【図面の簡単な説明】
【図1】第1の実施形態のデータ格納方法を用いたデー
タ格納装置の構成例を示すブロック図である。
【図2】第1の実施形態によるデータ格納プログラムの
動作の概要を示すフローチャートである。
【図3】配列の格納位置の再設定の動作手順をあらわす
フローチャートである。
【図4】第1の実施形態による、4×3配列のデータを
格納するための初期化したデータ格納領域の概略を示す
図である。
【図5】図4の如く初期化されたデータ格納領域に(2,
2)〜(5,4)の範囲のデータを格納した状態を示す図で
ある。
【図6】既に格納されたデータと新たに格納するデータ
の各データ範囲のずれの一例を示す図である。
【図7】図6で示した横方向のずれに対する新しい配列
の格納位置の設定を示す図である。
【図8】図6で示した縦方向のずれに対する新しい配列
の格納位置の設定を示す図である。
【図9】新しい配列の格納状態を示す図である。
【図10】図6に示したデータ範囲の指定を行った場合
における、新たに格納が必要な範囲を示す図である。
【図11】データ範囲(2,2)〜(5,4)が既に格納され
ている領域に対して新しくデータ範囲(4,3)〜(7,5)
を格納した結果、データ格納領域が最終的にどのように
なるかを示す図である。
【図12】既に格納されているデータ範囲(4,3)〜
(7,5)と新しく格納するデータ範囲(1,0)〜(4,2)
のずれを示す図である。
【図13】既に格納されている領域に対と重複する部分
を持たないデータ範囲を格納した結果を示す図である。
【図14】第2の実施形態における、4×3配列のデー
タを格納するために要素単位でリングバッファを行なう
例の初期化したデータ格納領域の概略を示す図である。
【図15】図14の如く初期化されたデータ格納領域に
(2,2)〜(5,4)の範囲のデータを格納した状態を示す
図である。
【図16】図6で示した横方向のずれに対する新しい配
列の格納位置の設定を示す図である。
【図17】図6で示した縦方向のずれに対する新しい配
列の格納位置の設定を示す図である。
【図18】確保した領域の反対側への移動を行単位で行
った状態を示す図である。
【図19】データの格納が必要な領域を示す図である。
【図20】第2の実施形態において、既に格納されてい
るデータ格納領域に対して重複する部分を有する新たな
データ範囲を格納した場合に、データ格納領域が最終的
にどのようになるかを示す図である。
【図21】既に格納されている領域に対と重複する部分
を持たないデータ範囲を格納した結果を示す図である。
【図22】二次元配列の格納の例として、4×3の二次
元配列(2,2)〜(5,4)をメモリに格納した場合の様子
を示す図である。
【図23】従来のデータ格納方法の問題点を説明する図
である。

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 2次元配列のデータから抽出された部分
    配列データを格納するデータ格納方法であって、 前記2次元配列データから、格納すべき部分配列データ
    を抽出する抽出工程と、 前記メモリに既に格納されている部分配列データと前記
    抽出工程で抽出された部分配列データとの重複部分にお
    ける要素データについて該メモリにおける格納位置が保
    たれるように、該抽出された部分配列データの格納開始
    位置を決定する決定工程と、 前記決定工程で決定された格納開始位置より、前記抽出
    工程で抽出された部分配列データの前記重複部分の要素
    データを除く各要素データを格納する格納工程とを備え
    ることを特徴とするデータ格納方法。
  2. 【請求項2】 前記2次元配列データの一方の方向を横
    方向とし、他方を縦方向とした場合、前記部分配列デー
    タの格納形態が横方向に並ぶ1行分の要素を連続的に格
    納して行データとし、該行データを単位として並べたも
    のであり、 前記決定工程は、前記メモリに既に格納されている部分
    配列データと前記抽出工程で抽出された部分配列データ
    との横方向のずれ量に基づいて前記行データ間の区切り
    位置を移動し、前記両部分配列データ間の縦方向のずれ
    量に基づいて先頭の行データの格納位置を決定すること
    を特徴とする請求項1に記載のデータ格納方法。
  3. 【請求項3】 前記決定工程による部分配列データの格
    納位置の決定に従って前記抽出工程で抽出された部分配
    列データを格納するに際して、該部分配列データを格納
    するべく予め設定されたデータ領域をはみ出すか否かを
    判定する判定工程と、 前記判定工程で前記データ領域をはみ出すと判定された
    場合、前記データ領域をリングバッファとして機能させ
    るために、当該はみ出した部分を該データ領域の先頭領
    域もしくは末尾領域へ移動する移動手段とを更に備える
    ことを特徴とする請求項1に記載のデータ格納方法。
  4. 【請求項4】 前記データ領域を設定する設定工程を更
    に備えることを特徴とする請求項3に記載のデータ格納
    方法。
  5. 【請求項5】 格納すべき部分配列に必要なデータ領域
    よりも少なくとも1行分大きな領域を有するデータ領域
    を設定する設定工程と、 前記決定工程による部分配列データの格納位置の決定に
    従って前記抽出工程で抽出された部分配列データを格納
    するに際して、前記設定工程で設定されたデータ領域を
    はみ出すか否かを判定する判定工程と、 前記判定工程で前記データ領域をはみ出すと判定された
    場合、当該はみ出した部分を含むデータを行を単位とし
    て該データ領域の先頭領域もしくは末尾領域へ移動する
    移動工程とを更に備えることを特徴とする請求項1に記
    載のデータ格納方法。
  6. 【請求項6】 前記抽出工程で抽出された部分配列デー
    タと前記メモリに既に格納されている部分配列データと
    のあいだに重複部分がない場合は、該メモリに既に格納
    されている部分配列データを破棄する破棄工程を更に備
    えることを特徴とする請求項1に記載のデータ格納方
    法。
  7. 【請求項7】 2次元配列のデータから抽出された部分
    配列データを格納するデータ格納装置であって、 前記2次元配列データから、格納すべき部分配列データ
    を抽出する抽出手段と、 前記メモリに既に格納されている部分配列データと前記
    抽出手段で抽出された部分配列データとの重複部分にお
    ける要素データについて該メモリにおける格納位置が保
    たれるように、該抽出された部分配列データの格納開始
    位置を決定する決定手段と、 前記決定手段で決定された格納開始位置より、前記抽出
    手段で抽出された部分配列データの前記重複部分の要素
    データを除く各要素データを格納する格納手段とを備え
    ることを特徴とするデータ格納装置。
  8. 【請求項8】 前記2次元配列データの一方の方向を横
    方向とし、他方を縦方向とした場合、前記部分配列デー
    タの格納形態が横方向に並ぶ1行分の要素を連続的に格
    納して行データとし、該行データを単位として並べたも
    のであり、 前記決定手段は、前記メモリに既に格納されている部分
    配列データと前記抽出手段で抽出された部分配列データ
    との横方向のずれ量に基づいて前記行データ間の区切り
    位置を移動し、前記両部分配列データ間の縦方向のずれ
    量に基づいて先頭の行データの格納位置を決定すること
    を特徴とする請求項7に記載のデータ格納装置。
  9. 【請求項9】 前記決定手段による部分配列データの格
    納位置の決定に従って前記抽出手段で抽出された部分配
    列データを格納するに際して、該部分配列データを格納
    するべく予め設定されたデータ領域をはみ出すか否かを
    判定する判定手段と、 前記判定手段で前記データ領域をはみ出すと判定された
    場合、前記データ領域をリングバッファとして機能させ
    るために、当該はみ出した部分を該データ領域の先頭領
    域もしくは末尾領域へ移動する移動手段とを更に備える
    ことを特徴とする請求項7に記載のデータ格納装置。
  10. 【請求項10】 前記データ領域を設定する設定手段を
    更に備えることを特徴とする請求項9に記載のデータ格
    納装置。
  11. 【請求項11】 格納すべき部分配列に必要なデータ領
    域よりも少なくとも1行分大きな領域を有するデータ領
    域を設定する設定手段と、 前記決定手段による部分配列データの格納位置の決定に
    従って前記抽出手段で抽出された部分配列データを格納
    するに際して、前記設定手段で設定されたデータ領域を
    はみ出すか否かを判定する判定手段と、 前記判定手段で前記データ領域をはみ出すと判定された
    場合、当該はみ出した部分を含むデータを行を単位とし
    て該データ領域の先頭領域もしくは末尾領域へ移動する
    移動手段とを更に備えることを特徴とする請求項7に記
    載のデータ格納装置。
  12. 【請求項12】 前記抽出手段で抽出された部分配列デ
    ータと前記メモリに既に格納されている部分配列データ
    とのあいだに重複部分がない場合は、該メモリに既に格
    納されている部分配列データを破棄する破棄手段を更に
    備えることを特徴とする請求項7に記載のデータ格納装
    置。
  13. 【請求項13】 2次元配列のデータから抽出された部
    分配列データを格納するデータ格納処理のための制御プ
    ログラムを格納する記憶媒体であって、該制御プログラ
    ムが、 前記2次元配列データから、格納すべき部分配列データ
    を抽出する抽出工程のコードと、 前記メモリに既に格納されている部分配列データと前記
    抽出工程で抽出された部分配列データとの重複部分にお
    ける要素データについて該メモリにおける格納位置が保
    たれるように、該抽出された部分配列データの格納開始
    位置を決定する決定工程のコードと、 前記決定工程で決定された格納開始位置より、前記抽出
    工程で抽出された部分配列データの前記重複部分の要素
    データを除く各要素データを格納する格納工程のコード
    とを備えることを特徴とする記憶媒体。
JP8896798A 1998-04-01 1998-04-01 データ格納方法及び装置 Pending JPH11288384A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8896798A JPH11288384A (ja) 1998-04-01 1998-04-01 データ格納方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8896798A JPH11288384A (ja) 1998-04-01 1998-04-01 データ格納方法及び装置

Publications (1)

Publication Number Publication Date
JPH11288384A true JPH11288384A (ja) 1999-10-19

Family

ID=13957597

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8896798A Pending JPH11288384A (ja) 1998-04-01 1998-04-01 データ格納方法及び装置

Country Status (1)

Country Link
JP (1) JPH11288384A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005530246A (ja) * 2002-06-13 2005-10-06 アナログ・デバイスズ・インク 画像片とサーキュラーアドレッシング構成を使用する画像データ処理方法及び装置
JP2008146545A (ja) * 2006-12-13 2008-06-26 Sony Corp アドレス生成回路、バッファ回路、情報処理装置および撮像システム
WO2020004098A1 (ja) * 2018-06-29 2020-01-02 ソニー株式会社 情報処理装置、情報処理方法およびプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005530246A (ja) * 2002-06-13 2005-10-06 アナログ・デバイスズ・インク 画像片とサーキュラーアドレッシング構成を使用する画像データ処理方法及び装置
JP2008146545A (ja) * 2006-12-13 2008-06-26 Sony Corp アドレス生成回路、バッファ回路、情報処理装置および撮像システム
WO2020004098A1 (ja) * 2018-06-29 2020-01-02 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US11520505B2 (en) 2018-06-29 2022-12-06 Sony Corporation Information processing apparatus and information processing method

Similar Documents

Publication Publication Date Title
US5577184A (en) Character pattern output apparatus
JPH11288384A (ja) データ格納方法及び装置
EP0361434B1 (en) Display emulating system
US7113309B2 (en) Image processing method, image processing apparatus, and image processing system
JP2005153426A (ja) 印刷制御装置および印刷制御方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
JP3209910B2 (ja) 印刷制御装置および印刷制御方法
US7362475B2 (en) Image forming device for processing a file containing raster data and vector data
JP4400097B2 (ja) 印刷装置、印刷制御方法、プログラム及び記録媒体
JP2003051929A (ja) 画像処理方法及び装置
JP3663757B2 (ja) 描画処理装置
JP2004030386A (ja) 画像処理方法および画像処理装置
JPH09240073A (ja) 印刷制御方法及び装置及び該装置を含む印刷システム及び前記方法を実施する制御手順を記憶した記憶媒体
JP2001096854A (ja) 印刷処理装置および印刷処理方法
JPH10235972A (ja) 画像処理装置及びその制御方法
US7170616B2 (en) Print processing and method for banding areas and pages of each physical color
JP3591096B2 (ja) ページプリンタの制御方法
JP2000298566A (ja) 印刷装置、情報処理装置、これらの制御方法、及び情報記録媒体
JP3259503B2 (ja) データ処理装置
JP2932568B2 (ja) データ通信装置
JP2715475B2 (ja) 図形出力装置
JPH10320152A (ja) 印刷処理システム、印刷処理装置ならびに、印刷処理方法
JPH1044530A (ja) 印刷制御装置、情報処理装置、印刷装置および印刷情報処理方法
JP2000075846A (ja) 画像表示方法及び装置
JPH10312255A (ja) メッセージ表示方式
JP2000311249A (ja) グラフィック処理装置とそのグラフィックコマンド処理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050218