JPH09237338A - 高速な輪郭スムージング方法及び装置 - Google Patents

高速な輪郭スムージング方法及び装置

Info

Publication number
JPH09237338A
JPH09237338A JP8042302A JP4230296A JPH09237338A JP H09237338 A JPH09237338 A JP H09237338A JP 8042302 A JP8042302 A JP 8042302A JP 4230296 A JP4230296 A JP 4230296A JP H09237338 A JPH09237338 A JP H09237338A
Authority
JP
Japan
Prior art keywords
row
smoothing
bit
variables
work
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.)
Granted
Application number
JP8042302A
Other languages
English (en)
Other versions
JP3356612B2 (ja
Inventor
Naoyuki Nemoto
直行 根本
Hiroyasu Takahashi
弘晏 高橋
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP04230296A priority Critical patent/JP3356612B2/ja
Priority to US08/779,183 priority patent/US5870504A/en
Publication of JPH09237338A publication Critical patent/JPH09237338A/ja
Application granted granted Critical
Publication of JP3356612B2 publication Critical patent/JP3356612B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/16Image preprocessing
    • G06V30/168Smoothing or thinning of the pattern; Skeletonisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

(57)【要約】 【課題】ビットパターン中に描かれた図形や文字の高速
なスムージングを行う。 【解決手段】一般的にOCR処理は、帳票のイメージ取
得、個別文字の位置/大きさ/文字種の判定、正規化、
大きな角のスムージング、1ドット飛び出し削除による
スムージング、特長抽出、パターンマッチング、単語辞
書を使った自動エラー修正、認識結果出力からなる。本
願発明では、前記 大きな角のスムージング、1ドット
飛び出し削除によるスムージングの処理について高速な
ソフトウェア処理を実現することで課題を解決する。本
願のソフトウェア処理においては、従来よく用いられか
つ処理スードの低下を招く要素となる条件判断及び分岐
命令の、if then else や switch構文等を用いずビット
列のシフト、論理否定、積、和のみを用いてスムージン
グ処理を行う。これにより処理の大幅な高速化が達成さ
れる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本願はOCR(Optical Characte
r Recognition)と画像エンハンスでの処理方法に関
し、特にソフトウェアによるスムージング処理方法に関
する。
【0002】
【従来の技術】従来のOCR関連処理では主に専用ハー
ドウェアを用いて行われていた。例えば、MPUにモト
ローラ(TM)の68020や68040を使用し、メモリ
とOCRのための固有なICなどで構成されたMCA
(Micro Channel Architeture)のカードで、イメージ
処理、スムージング処理、パターンマッチング処理など
を行っていた。
【0003】現在は高速で安価なCPUが普及してお
り、専用ハードウェアを用いずにソフトウェアのみによ
るOCR関連処理が行えるようになった。ソフトウェア
で行う場合のメリットとしては比較的少ない投資でOC
Rが可能になる点やソフトウェアのバージョンアップ等
で容易に機能を変更できる柔軟性があげられる。
【0004】しかし、ハードウェア固有の機能による処
理を単純にソフトウェアのみで代行すると、処理スピー
ドは一般的に遅くなりコストパフォーマンスが大幅に低
下する。また処理スピードを無理に上げようとしてOC
Rとして本来望まれる基本的機能である認識率が下がっ
てしまう等の弊害を起こす可能性もある。例えばスキャ
ンする文字が小さくてサイズの正規化により大きな角が
できる場合や、1ドットのノイズが垂直と水平方向に生
じると正しい輪郭が抽出できない。これらのスムージン
グは文字認識率を落とさないために非常に重要である。
【0005】
【発明が解決しようとする課題】従って、本発明が解決
しようとする課題は、ソフトウェアによるOCR処理を
行うにあたり、図形(OCR処理では主に文字である)
の輪郭をスムージングする処理速度を、全体の処理の中
でほぼ無視できるほどに高速化することである。
【0006】本願発明の他の目的は、認識率をハードウ
ェアによる処理に比較して同等以上に保つことである。
【0007】より具体的に本願発明の他の目的は、ビッ
トパターン中に描かれた図形(OCR処理では正規化パ
ターンに相当する)の高速なスムージングを行うことで
ある。
【0008】
【課題を解決するための手段】一般的にOCR処理は主
に以下のような流れで行われる。 1.(始め) 帳票のイメージ取得 2.(前処理)個別文字の位置/大きさ/文字種の判定 3. 正規化 4. 大きな角のスムージング(解像度が低い時) <--本願発明 5. 1ドット飛び出し削除によるスムージング <--本願発明 6. 特徴抽出 7. パターンマッチング 8.(後処理)単語辞書を使った自動エラー修正 9. 認識結果出力
【0009】上記4及び5の処理について高速なソフト
ウェア処理を実現することで課題を解決する。このソフ
トウェア処理においては、従来よく用いられかつ処理ス
ードの低下を招く要素となる条件判断及び分岐命令の、
if then else や switch構文等を用いずビット列のシフ
ト、論理否定、積、和のみを用いてスムージング処理を
行う。これにより処理の大幅な高速化が達成される。
【0010】
【発明の実施の形態】本願発明では以下の2種の高速の
スムージングを行う方法を開示する。 (1)大きな角のスムージング(角とり) (2)1ドット飛び出し削除によるスムージング
【0011】本実施例では横が8ビット幅でn個の行か
らなるビットパターン中に描かれた図形に対するスムー
ジング処理について説明を行うが、この方法は同様にし
て16/32/64ビットと同様の方法で拡張できる。
また、異なるパターンをセットすることにより他のパタ
ーンでのビット単位の処理に柔軟に変更できる。
【0012】(1)大きな角のスムージング 角のスムージング(角とり)では、横3ビット、縦3ビ
ットのパターンで、以下の4パターン(ABCD)のど
れかとマッチングする時、角の1ドットを消去すること
によってスムージングする。ここで重要なことは、従来
よく用いられる条件判断によるパターンマッチングを行
わず、論理演算のみを用いて自動的にかつ高速に角のド
ットが消去される点にある。
【0013】
【表1】 A B **・ **・ ・・・ ・・・ **・ -> *・・ **・ -> *・・ ・・・ ・・・ **・ **・ C D ・** ・** ・・・ ・・・ "*"は黒点 (=1) ・** -> ・・* ・** -> ・・* "・"はブランク (=0) ・・・ ・・・ ・** ・**
【0014】上記スムージングを達成するための具体的
な例を横幅が8ビットの場合について説明する。図1に
おいて、2進値(1又は0)で表されたビットパターン
(正規化されたパターン)が図示されている。ここでビ
ットパターン中に描かれた図形や文字において、0はド
ットがないことを、1はドットがあることに対応する。
そして処理単位は横方向の行単位(1行=8ビット)で
行われる。現在の処理の中心となる行をカレント行(カ
レントライン)またはctと呼び、その上の行をup、
下をdwで表す。またa点、b点は以降のスムージング
処理の結果、削除されるドットを表している。
【0015】図2において、さらにこれら3つの行から
派生するビット列を定義する。即ちul,ur,cl,
cr,dl,drである。これらの行名の末尾に記載さ
れるl,rはそれぞれ左(left)、右(righ
t)の頭文字を表し、clでればカレント行を1ビット
左へシフトするという意味である。ここで「左へシフト
する」とは見る側、つまりセンサ側でのシフトと定義す
る。従ってメモリ中のビット列は反対に右へ1ビットシ
フトすることになる。これら9つのビット列はメモリ中
の作業変数へ格納され、以降の演算の対象とされる。
【0016】図3〜図6は上記A〜Dパターンにおける
実際のスムージング方法について図示したものである。
図3において説明されるのはパターンAのスムージング
処理の場合である。9つの升目は、図2のシフト走査後
の作業変数の位置と同じである。つまりカレント行及び
その上下の行を1ビットずつ左右にずらした行を注目さ
れるドットの回りに論理的に配置することで、以降の論
理演算のみによるスムージング処理が容易に理解され
る。
【0017】パターンAでは左上隅4ビットが黒点(ド
ットあり)の場合であるから、カレント行以外で黒点に
対応する、ul,up,clのビット列を反転(黒点対
応)させる。その他のブランクに対応する、ur,c
r,dl,dw,drはそのまま(ブランク対応)にし
て、8つの作業変数の論理ORを取る。この演算により
大きな角に対応するカレント行中のビット位置が0とし
て計算される。なぜなら上下のラインで1ビット左右に
揺らし、黒点反転を行ったビットの総論理和が0であれ
ばそれは角であるのと同値であるからである。この論理
ORの結果をカレント行のビット列との論理AND(つ
まりカレント行のビットマスクとして用いる)をとれ
ば、カレント行のスムージング処理が終了する。図3の
場合、論理ORの結果は全て1なのでスムージングの対
象となる角は無いことが分かる。この処理を全ラインに
渡って行えばパターンAに関してのスムージング処理は
全て終了することになる。
【0018】図4は、左下隅4ビットが黒点である場合
である。これも図3同様に計算を行い、論理ORの結果
5ビット目が0であるのでカレント行の5ビット目が角
であることが分かり、結局5ビット目、即ち図1におけ
るb点は削除される。同様にして図5、図6においてパ
ターンC、Dの処理がなされる。図6では論理ORの結
果2ビット目が0であるので、図1におけるa点がスム
ージング処理の結果削除される。
【0019】図7において角のスムージング処理のフロ
ーチャートを示す。まずステップ1においてビットパタ
ーンを作業配列(行変数)に読み込む。作業配列はビッ
トパターンの総行数をnと定義すると、上下の2行を余
分に持つのでn+2行となる。従って作業配列の2行目
からビットパターンが読み込まれる。次にステップ2で
作業配列の上下の前記2行をブランクにする。そしてス
テップ3でループ変数をiとしてこれを2からn+1ま
で1ずつ増加させて、以下のステップ4からステップ9
を繰り返す。ステップ4では作業配列i行目の前行(i
−1)、カレント行(i)、次行(i+1)をそれぞれ
作業変数に代入する。ステップ5において前記作業変数
をそれぞれ1ビット右、1ビット左にシフトさせてそれ
ぞれ別の作業変数に代入する。従って計9個の作業変数
が作成されることになる。次のステップ6でカレント行
でシフトさせない作業変数を結果作業変数に代入する。
【0020】ステップ7ではA、B、C、D4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する作業変数はそのままで、黒点の
位置に対応する作業変数はビットを反転させ、計8つの
作業変数でビットごとの総論理ORをとる。その結果を
結果作業変数とビットごとのANDをとり、それを結果
作業変数に代入する。
【0021】最後にステップ9で結果作業変数を作業配
列のiライン目のパターンに代入する。以上で角に関す
るスムージング処理が完了する。
【0022】以下に図7で示されたフローチャートに基
づく、実際のC言語によるコーディング例を記載するの
で参照されたい。
【0023】 void Smooth24( unsigned short *buf16x24 /*スムージングされるパターンのポインタ*/){ static unsigned short wkbuf[26]; /* 作業配列 */ short i; unsigned short ct; /* center 作業変数 その1 */ unsigned short cl; /* c.left 作業変数 その2 */ unsigned short cr; /* c.right 作業変数 その3 */ unsigned short up; /* up 作業変数 その4 */ unsigned short ul; /* u.left 作業変数 その5 */ unsigned short ur; /* u.right 作業変数 その6 */ unsigned short dw; /* down 作業変数 その7 */ unsigned short dl; /* d.left 作業変数 その8 */ unsigned short dr; /* d.Right 作業変数 その9 */ unsigned short wk3; /* 結果作業変数 */ /* 1.横wビット x 縦n行のパターンを */ /* 1lineずらして作業配列(w x (n+2)行)にコピー。 */ for (i=1; i<25; i++) { wkbuf[i] = *(buf16x24 + i-1); } /* 2. 作業配列のパターンの上下 */ /* の行をブランクにする。 */ wkbuf[0] = 0; wkbuf[25] = 0; /* 3. 下の4-9を2行目からn+1行目目まで、ループ */ for (i=1; i<25; i++){ /* 4.作業配列 i−1,i,i+1行を */ /* それぞれ作業変数に代入。 */ ct = wkbuf[i]; up = wkbuf[i-1]; dw = wkbuf[i+1]; /* 5. この作業変数をそれぞれ1bit右、1bit左にシフトさせて*/ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。*/ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 6.現lineでシフトさせない作業変数を結果作業変数に代入。*/ wk3 = ct; /* 7. 4パターン毎に、8を繰り返す。*/ /* 8. 現lineでシフトさせない作業変数を除く、上図のBlank*/ /* Dotの位置に対応する作業変数はそのまま、黒点に対応する*/ /* 作業変数はビット反転させ、8作業変数でビットごとのORを*/ /* とる。その結果を結果作業変数とビットごとのANDをとり、*/ /* 9. 結果作業変数を元の作業配列のパターン*/ /* に代入。 */ *(buf16x24 + i-1) = wk3; } } /* End of Smooth24() */
【0024】(2)1ドット飛び出し削除によるスムー
ジング 1ドット飛び出し削除によるスムージングでは、横3ビ
ット、縦2ビットまたは横2ビット、縦3ビットのパタ
ーンで以下の4パターンのどれかと合う時、中央の1ド
ット消去することによってスムージングする。
【0025】
【表2】 E F ・・ ・・ *・ -> ・・ ・*・ -> ・・・ ・・ ・・ ・・・ ・・・ G H ・・ ・・ ・・・ ・・・ "*"は黒点 (=1) ・* -> ・・ ・*・ -> ・・・ "・"はブランク (=0) ・・ ・・
【0026】1ドット飛び出し削除によるスムージング
処理の基本的な処理の流れは角のスムージング処理と同
一である。図8において1ドット飛び出し削除によるス
ムージング処理のフローチャートを示す。まずステップ
1においてビットパターンを作業配列に読み込む。作業
配列はビットパターンの総行数をnと定義すると、上下
の2行を余分に持つのでn+2行となる。従って作業配
列の2行目からビットパターンが読み込まれる。次にス
テップ2で作業配列の上下の前記2行をブランクにす
る。そしてステップ3でループ変数をiとしてこれを2
からn+1まで1ずつ増加させて、以下のステップ4か
らステップ9を繰り返す。
【0027】ステップ4では作業配列i行目の前行(i
−1)、カレント行(i)、次行(i+1)をそれぞれ
作業変数に代入する。ステップ5において前記作業変数
をそれぞれ1ビット右、1ビット左にシフトさせてそれ
ぞれ別の作業変数に代入する。従って計9個の作業変数
が作成されることになる。次のステップ6でカレント行
でシフトさせない作業変数を結果作業変数に代入する。
以下のステップ7及び8が角のスムージング処理と若干
異なるステップである。
【0028】ステップ7ではE、F、G、H4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する5個の作業変数でビットごとの
総論理ORをとる。その結果を結果作業変数とビットご
とのANDをとり、それを結果作業変数に代入する。
【0029】最後にステップ9で結果作業変数を作業配
列のiライン目のパターンに代入する。以上で1ドット
飛び出し削除に関するスムージング処理が完了する。
【0030】以下に図8で示されたフローチャートに基
づく、実際のC言語によるコーディング例を記載するの
で参照されたい。
【0031】 void DeleteNoise24( unsigned short *buf16x24 /*スムージングされるパターンのポインタ*/){ static unsigned short wkbuf[26]; /* 作業配列 */ short i; unsigned short ct; /* center 作業変数 その1 */ unsigned short cl; /* c.left 作業変数 その2 */ unsigned short cr; /* c.right 作業変数 その3 */ unsigned short up; /* up 作業変数 その4 */ unsigned short ul; /* u.left 作業変数 その5 */ unsigned short ur; /* u.right 作業変数 その6 */ unsigned short dw; /* down 作業変数 その7 */ unsigned short dl; /* d.left 作業変数 その8 */ unsigned short dr; /* d.Right 作業変数 その9 */ unsigned short wk3; /* 結果作業変数 */ /* 1.横wビット x 縦n行のパターンを */ /* 1行ずらして作業配列(w x (n+2)行)にコピー。 */ for (i=1; i<25; i++) { wkbuf[i] = *(buf16x24 + i-1); } /* 2. 作業配列のパターンの上下 */ /* の行をブランクにする。 */ wkbuf[0] = 0; wkbuf[25] = 0; /* 3. 下の4-9を2行目からn+1行目目まで、ループ */ for (i=1; i<25; i++){ /* 4.作業配列 i−1,i,i+1行を */ /* それぞれ作業変数に代入。 */ ct = wkbuf[i]; up = wkbuf[i-1]; dw = wkbuf[i+1]; /* 5. この作業変数をそれぞれ1bit右、1bit左にシフトさせて*/ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。*/ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 6.現lineでシフトさせない作業変数を結果作業変数に代入。*/ wk3 = ct; /* 7.4パターン毎に、8を繰り返す。*/ /* 8.現lineでシフトさせない作業変数を除く、ブランクの*/ /* の位置に対応する5作業変数でビットごとのORをとる。*/ /* その結果を結果作業変数とビットごとのANDをとり、*/ /* それを結果作業変数に代入。 */ wk3 &= (cl | cr | ul | up | ur); wk3 &= (cl | cr | dl | dw | dr); wk3 &= (up | dw | ul | cl | dl); wk3 &= (up | dw | ur | cr | dr); /* 9. 結果作業変数を元のw x n(w bits x n lines)のパターン */ /* に代入。 */ *(buf16x24 + i-1) = wk3; } } /* End of DeleteNoise() */
【0032】図9〜12において各(1)、(2)のス
ムージング処理を行う前のビットパターンと処理後のビ
ットパターンを示す。ほぼ無視できる処理スピードで図
9における大きな角が図10において削除されており、
また図11における点在する点が図12において削除さ
れている。本願発明は横8ビットの行を処理単位として
説明したが全く同様に方法で16/32/64ビットと
拡張できる。さらに黒点部及びブランク部のパターンセ
ットのバリーエションを変更するだけで異なるスムージ
ング処理が行えるので柔軟性に富む。従ってパターンを
変えれば他のイメージ・エンハンスにも応用できる。
【0033】
【発明の効果】本発明により、ビットパターン中に描か
れた図形(OCR処理では正規化パターン)の高速なス
ムージングを行うことが可能となり、ソフトウェアによ
るOCR処理の処理速度を実用レベルまで高速化するこ
とができる。さらにスムージングの処理品質はハードウ
ェアによる場合と同等であるので認識率の低下もない。
【図面の簡単な説明】
【図1】2進値で表されたビットパターンとカレント行
との対応を示す図である。
【図2】カレント行及びその上下の行からシフトして作
成される行を示す図である。
【図3】パターンAにおけるスムージング方法を表した
図である。
【図4】パターンBにおけるスムージング方法を表した
図である。
【図5】パターンCにおけるスムージング方法を表した
図である。
【図6】パターンDにおけるスムージング方法を表した
図である。
【図7】角のスムージング処理のフローチャートを示し
た図である。
【図8】1ドット飛び出し削除によるスムージング処理
のフローチャートを示した図である。
【図9】角のスムージング処理前のビットパターンを示
した図である。
【図10】角のスムージング処理後のビットパターンを
示した図である。
【図11】1ドット飛び出し削除によるスムージング処
理前のビットパターンを示した図である。
【図12】1ドット飛び出し削除によるスムージング処
理後のビットパターンを示した図である。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成8年7月5日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正内容】
【書類名】 明細書
【発明の名称】高速な輪郭スムージング方法及び装置
【特許請求の範囲】
【発明の詳細な説明】
【0001】
【産業上の利用分野】本願はOCR(Optical Characte
r Recognition)と画像エンハンスでの処理方法に関
し、特にソフトウェアによるスムージング処理方法に関
する。
【0002】
【従来の技術】従来のOCR関連処理では主に専用ハー
ドウェアを用いて行われていた。例えば、MPUにモト
ローラ(TM)の68020や68040を使用し、メモリ
とOCRのための固有なICなどで構成されたMCA
(Micro Channel Architeture)のカードで、イメージ
処理、スムージング処理、パターンマッチング処理など
を行っていた。
【0003】現在は高速で安価なCPUが普及してお
り、専用ハードウェアを用いずにソフトウェアのみによ
るOCR関連処理が行えるようになった。ソフトウェア
で行う場合のメリットとしては比較的少ない投資でOC
Rが可能になる点やソフトウェアのバージョンアップ等
で容易に機能を変更できる柔軟性があげられる。
【0004】しかし、ハードウェア固有の機能による処
理を単純にソフトウェアのみで代行すると、処理スピー
ドは一般的に遅くなりコストパフォーマンスが大幅に低
下する。また処理スピードを無理に上げようとしてOC
Rとして本来望まれる基本的機能である認識率が下がっ
てしまう等の弊害を起こす可能性もある。例えばスキャ
ンする文字が小さくてサイズの正規化により大きな角が
できる場合や、1ドットのノイズが垂直と水平方向に生
じると正しい輪郭が抽出できない。これらのスムージン
グは文字認識率を落とさないために非常に重要である。
【0005】
【発明が解決しようとする課題】従って、本発明が解決
しようとする課題は、ソフトウェアによるOCR処理を
行うにあたり、図形(OCR処理では主に文字である)
の輪郭をスムージングする処理速度を、全体の処理の中
でほぼ無視できるほどに高速化することである。
【0006】本願発明の他の目的は、認識率をハードウ
ェアによる処理に比較して同等以上に保つことである。
【0007】より具体的に本願発明の他の目的は、ビッ
トパターン中に描かれた図形(OCR処理では正規化パ
ターンに相当する)の高速なスムージングを行うことで
ある。
【0008】
【課題を解決するための手段】一般的にOCR処理は主
に以下のような流れで行われる。 1.(始め) 帳票のイメージ取得 2.(前処理)個別文字の位置/大きさ/文字種の判定 3. 正規化 4. 大きな角のスムージング(解像度が低い時) <--本願発明 5. 1ドット飛び出し削除によるスムージング <--本願発明 6. 特徴抽出 7. パターンマッチング 8.(後処理)単語辞書を使った自動エラー修正 9. 認識結果出力
【0009】上記4及び5の処理について高速なソフト
ウェア処理を実現することで課題を解決する。このソフ
トウェア処理においては、従来よく用いられかつ処理ス
ードの低下を招く要素となる条件判断及び分岐命令の、
if then else や switch構文等を用いずビット列のシフ
ト、論理否定、積、和のみを用いてスムージング処理を
行う。これにより処理の大幅な高速化が達成される。
【0010】
【発明の実施の形態】本願発明では以下の2種の高速の
スムージングを行う方法を開示する。 (1)大きな角のスムージング(角とり) (2)1ドット飛び出し削除によるスムージング
【0011】本実施例では横が8ビット幅でn個の行か
らなるビットパターン中に描かれた図形に対するスムー
ジング処理について説明を行うが、この方法は同様にし
て16/32/64ビットと同様の方法で拡張できる。
また、異なるマスクパターンをセットすることにより他
のパターンでのビット単位の処理に柔軟に変更できる。
【0012】(1)大きな角のスムージング 角のスムージング(角とり)では、横3ビット、縦3ビ
ットのパターンで、以下の4マスクパターン(ABC
D)のどれかとマッチングする時、角の1ドットを消去
することによってスムージングする。ここで重要なこと
は、従来よく用いられる条件判断によるパターンマッチ
ングを行わず、論理演算のみを用いて自動的にかつ高速
に角のドットが消去される点にある。
【0013】
【表1】 A B **・ **・ ・・・ ・・・ **・ -> *・・ **・ -> *・・ ・・・ ・・・ **・ **・ C D ・** ・** ・・・ ・・・ "*"は黒点 (=1) ・** -> ・・* ・** -> ・・* "・"はブランク (=0) ・・・ ・・・ ・** ・**
【0014】上記スムージングを達成するための具体的
な例を横幅が8ビットの場合について説明する。図1に
おいて、2進値(1又は0)で表されたビットパターン
(正規化されたパターン)が図示されている。ここでビ
ットパターン中に描かれた図形や文字において、0はド
ットがないことを、1はドットがあることに対応する。
そして処理単位は横方向の行単位(1行=8ビット)で
行われる。現在の処理の中心となる行をカレント行(カ
レントライン)またはctと呼び、その上の行をup、
下をdwで表す。またa点、b点は以降のスムージング
処理の結果、削除されるドットを表している。
【0015】図2において、さらにこれら3つの行から
派生するビット列を定義する。即ちul,ur,cl,
cr,dl,drである。これらの行名の末尾に記載さ
れるl,rはそれぞれ左(left)、右(righ
t)の頭文字を表し、ここで「左へシフトする」とは見
る側、つまりセンサ側でのシフトと定義する。従ってメ
モリ中のビット列は反対に右へ1ビットシフトすること
になる。左端に新しく加わる1ビットは'0'になる。こ
れら9つのビット列はメモリ中の作業変数へ格納され、
以降の演算の対象とされる。
【0016】図3〜図6は上記A〜Dパターンにおける
実際のスムージング方法について図示したものである。
図3において説明されるのはパターンAのスムージング
処理の場合である。9つの升目は、図2のシフト走査後
の作業変数の位置と同じである。つまりカレント行及び
その上下の行を1ビットずつ左右にずらした行を注目さ
れるドットと同じ桁位置に論理的に配置することで、以
降の論理演算のみによるスムージング処理が容易に理解
される。
【0017】パターンAでは左上隅4ビットが黒点(ド
ットあり)の場合であるから、カレント行以外で黒点に
対応する、ul,up,clのビット列を反転(黒点対
応)させる。その他のブランクに対応する、ur,c
r,dl,dw,drはそのまま(ブランク対応)にし
て、8つの作業変数の論理和(OR)を取る。この演算
により大きな角に対応するカレント行中のビット位置が
0として計算される。なぜなら上下のラインで1ビット
左右に揺らし、黒点反転を行ったビットの総論理ORが
0であればそれは角であるのと同値であるからである。
この論理和の結果をカレント行のビット列との論理AN
D(つまりカレント行のビットマスクとして用いる)を
とれば、カレント行のスムージング処理が終了する。図
3の場合、論理ORの結果は全て1なのでスムージング
の対象となる角は無いことが分かる。この処理を全ライ
ンに渡って行えばパターンAに関してのスムージング処
理は全て終了することになる。
【0018】図4は、左下隅4ビットが黒点である場合
である。これも図3同様に計算を行い、論理ORの結果
5ビット目が0であるのでカレント行の5ビット目が角
であることが分かり、結局5ビット目、即ち図1におけ
るb点は削除される。同様にして図5、図6においてパ
ターンC、Dの処理がなされる。図6では論理ORの結
果2ビット目が0であるので、図1におけるa点がスム
ージング処理の結果削除される。
【0019】図7において角のスムージング処理のフロ
ーチャートを示す。まずステップ1においてビットパタ
ーンを作業配列(行変数)に読み込む。作業配列はビッ
トパターンの総行数をnと定義すると、上下の2行を余
分に持つのでn+2行となる。従って作業配列の2行目
からビットパターンが読み込まれる。次にステップ2で
作業配列の上下の前記2行をブランクにする。そしてス
テップ3でループ変数をiとしてこれを2からn+1ま
で1ずつ増加させて、以下のステップ4からステップ9
を繰り返す。ステップ4では作業配列i行目の前行(i
−1)、カレント行(i)、次行(i+1)をそれぞれ
作業変数に代入する。ステップ5において前記作業変数
をそれぞれ1ビット右、1ビット左にシフトさせてそれ
ぞれ別の作業変数に代入する。従って計9個の作業変数
が作成されることになる。次のステップ6でカレント行
でシフトさせない作業変数を結果作業変数に代入する。
【0020】ステップ7ではA、B、C、D4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する作業変数はそのままで、黒点の
位置に対応する作業変数はビットを反転させ、計8つの
作業変数でビットごとの総論理和(OR)をとる。その
結果を結果作業変数(シフトなしのカレント行)とビッ
トごとのANDをとり、それを結果作業変数に代入す
る。
【0021】最後にステップ9で結果作業変数を作業配
列のiライン目のパターンに代入する。以上で角に関す
るスムージング処理が完了する。
【0022】以下に図7で示されたフローチャートに基
づく、実際のC言語によるコーディング例を記載するの
で参照されたい。
【0023】 void Smooth24( unsigned short *buf16x24 /*スムージングされるパターンのポインタ*/){ static unsigned short wkbuf[26]; /* 作業配列 */ short i; unsigned short ct; /* center 作業変数 その1 */ unsigned short cl; /* c.left 作業変数 その2 */ unsigned short cr; /* c.right 作業変数 その3 */ unsigned short up; /* up 作業変数 その4 */ unsigned short ul; /* u.left 作業変数 その5 */ unsigned short ur; /* u.right 作業変数 その6 */ unsigned short dw; /* down 作業変数 その7 */ unsigned short dl; /* d.left 作業変数 その8 */ unsigned short dr; /* d.Right 作業変数 その9 */ unsigned short wk3; /* 結果作業変数 */ /* 1.横wビット x 縦n行のパターンを */ /* 1lineずらして作業配列(w x (n+2)行)にコピー。 */ for (i=1; i<25; i++) { wkbuf[i] = *(buf16x24 + i-1); } /* 2. 作業配列のパターンの上下 */ /* の行をブランクにする。 */ wkbuf[0] = 0; wkbuf[25] = 0; /* 3. 下の4-9を2行目からn+1行目目まで、ループ */ for (i=1; i<25; i++){ /* 4.作業配列 i−1,i,i+1行を */ /* それぞれ作業変数に代入。 */ ct = wkbuf[i]; up = wkbuf[i-1]; dw = wkbuf[i+1]; /* 5. この作業変数をそれぞれ1bit右、1bit左にシフトさせて*/ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。*/ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 6.現lineでシフトさせない作業変数を結果作業変数に代入。*/ wk3 = ct; /* 7. 4パターン毎に、8を繰り返す。*/ /* 8. 現lineでシフトさせない作業変数を除く、上図のBlank*/ /* Dotの位置に対応する作業変数はそのまま、黒点に対応する*/ /* 作業変数はビット反転させ、8作業変数でビットごとのORを*/ /* とる。その結果を結果作業変数とビットごとのANDをとり、*/ /* それを結果作業変数に代入。 */ wk3 &= ( ̄ul |  ̄up | ur |  ̄cl | cr | dl | dw | dr); wk3 &= ( ul |  ̄up |  ̄ur | cl |  ̄cr | dl | dw | dr); wk3 &= ( ul | up | ur |  ̄cl | cr |  ̄dl |  ̄dw | dr); wk3 &= ( ul | up | ur | cl |  ̄cr | dl |  ̄dw |  ̄dr); /* 9. 結果作業変数を元の作業配列のパターン*/ /* に代入。 */ *(buf16x24 + i-1) = wk3; } } /* End of Smooth24() */
【0024】(2)1ドット飛び出し削除によるスムー
ジング 1ドット飛び出し削除によるスムージングでは、横3ビ
ット、縦2ビットまたは横2ビット、縦3ビットのパタ
ーンで以下の4パターンのどれかと合う時、中央の1ド
ット消去することによってスムージングする。
【0025】
【表2】 E F ・・ ・・ *・ -> ・・ ・*・ -> ・・・ ・・ ・・ ・・・ ・・・ G H ・・ ・・ ・・・ ・・・ "*"は黒点 (=1) ・* -> ・・ ・*・ -> ・・・ "・"はブランク (=0) ・・ ・・
【0026】1ドット飛び出し削除によるスムージング
処理の基本的な処理の流れは角のスムージング処理と同
一である。図8において1ドット飛び出し削除によるス
ムージング処理のフローチャートを示す。まずステップ
1においてビットパターンを作業配列に読み込む。作業
配列はビットパターンの総行数をnと定義すると、上下
の2行を余分に持つのでn+2行となる。従って作業配
列の2行目からビットパターンが読み込まれる。次にス
テップ2で作業配列の上下の前記2行をブランクにす
る。そしてステップ3でループ変数をiとしてこれを2
からn+1まで1ずつ増加させて、以下のステップ4か
らステップ9を繰り返す。
【0027】ステップ4では作業配列i行目の前行(i
−1)、カレント行(i)、次行(i+1)をそれぞれ
作業変数に代入する。ステップ5において前記作業変数
をそれぞれ1ビット右、1ビット左にシフトさせてそれ
ぞれ別の作業変数に代入する。従って計9個の作業変数
が作成されることになる。次のステップ6でカレント行
でシフトさせない作業変数を結果作業変数に代入する。
以下のステップ7及び8が角のスムージング処理と若干
異なるステップである。
【0028】ステップ7ではE、F、G、H4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する5個の作業変数でビットごとの
総論理ORをとる。その結果を結果作業変数とビットご
とのANDをとり、それを結果作業変数に代入する。
【0029】最後にステップ9で結果作業変数を作業配
列のiライン目のパターンに代入する。以上で1ドット
飛び出し削除に関するスムージング処理が完了する。
【0030】以下に図8で示されたフローチャートに基
づく、実際のC言語によるコーディング例を記載するの
で参照されたい。
【0031】 void DeleteNoise24( unsigned short *buf16x24 /*スムージングされるパターンのポインタ*/){ static unsigned short wkbuf[26]; /* 作業配列 */ short i; unsigned short ct; /* center 作業変数 その1 */ unsigned short cl; /* c.left 作業変数 その2 */ unsigned short cr; /* c.right 作業変数 その3 */ unsigned short up; /* up 作業変数 その4 */ unsigned short ul; /* u.left 作業変数 その5 */ unsigned short ur; /* u.right 作業変数 その6 */ unsigned short dw; /* down 作業変数 その7 */ unsigned short dl; /* d.left 作業変数 その8 */ unsigned short dr; /* d.Right 作業変数 その9 */ unsigned short wk3; /* 結果作業変数 */ /* 1.横wビット x 縦n行のパターンを */ /* 1行ずらして作業配列(w x (n+2)行)にコピー。 */ for (i=1; i<25; i++) { wkbuf[i] = *(buf16x24 + i-1); } /* 2. 作業配列のパターンの上下 */ /* の行をブランクにする。 */ wkbuf[0] = 0; wkbuf[25] = 0; /* 3. 下の4-9を2行目からn+1行目目まで、ループ */ for (i=1; i<25; i++){ /* 4.作業配列 i−1,i,i+1行を */ /* それぞれ作業変数に代入。 */ ct = wkbuf[i]; up = wkbuf[i-1]; dw = wkbuf[i+1]; /* 5. この作業変数をそれぞれ1bit右、1bit左にシフトさせて*/ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。*/ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 6.現lineでシフトさせない作業変数を結果作業変数に代入。*/ wk3 = ct; /* 7.4パターン毎に、8を繰り返す。*/ /* 8.現lineでシフトさせない作業変数を除く、ブランクの*/ /* の位置に対応する5作業変数でビットごとのORをとる。*/ /* その結果を結果作業変数とビットごとのANDをとり、*/ /* それを結果作業変数に代入。 */ wk3 &= (cl | cr | ul | up | ur); wk3 &= (cl | cr | dl | dw | dr); wk3 &= (up | dw | ul | cl | dl); wk3 &= (up | dw | ur | cr | dr); /* 9. 結果作業変数を元のw x n(w bits x n lines)のパターン */ /* に代入。 */ *(buf16x24 + i-1) = wk3; } } /* End of DeleteNoise() */
【0032】図9〜12において各(1)、(2)のス
ムージング処理を行う前のビットパターンと処理後のビ
ットパターンを示す。ほぼ無視できる処理スピードで図
9における大きな角が図10において削除されており、
また図11における点在する点が図12において削除さ
れている。本願発明は横8ビットの行を処理単位として
説明したが全く同様に方法で16/32/64ビットと
拡張できる。さらにマスクパターンセットの黒点部及び
ブランク部のバリーエションを変更するだけで異なるス
ムージング処理が行えるので柔軟性に富む。従ってパタ
ーンを変えれば他のイメージ・エンハンスにも応用でき
る。
【0033】
【発明の効果】本発明により、ビットパターン中に描か
れた図形(OCR処理では正規化パターン)の高速なス
ムージングを行うことが可能となり、ソフトウェアによ
るOCR処理の処理速度を実用レベルまで高速化するこ
とができる。さらにスムージングの処理品質はハードウ
ェアによる場合と同等であるので認識率の低下もない。
【図面の簡単な説明】
【図1】2進値で表されたビットパターンとカレント行
との対応を示す図である。
【図2】カレント行及びその上下の行からシフトして作
成される行を示す図である。
【図3】パターンAにおけるスムージング方法を表した
図である。
【図4】パターンBにおけるスムージング方法を表した
図である。
【図5】パターンCにおけるスムージング方法を表した
図である。
【図6】パターンDにおけるスムージング方法を表した
図である。
【図7】角のスムージング処理のフローチャートを示し
た図である。
【図8】1ドット飛び出し削除によるスムージング処理
のフローチャートを示した図である。
【図9】角のスムージング処理前のビットパターンを示
した図である。
【図10】角のスムージング処理後のビットパターンを
示した図である。
【図11】1ドット飛び出し削除によるスムージング処
理前のビットパターンを示した図である。
【図12】1ドット飛び出し削除によるスムージング処
理後のビットパターンを示した図である。 ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成8年7月5日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】図1
【補正方法】変更
【補正内容】
【図1】
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図2
【補正方法】変更
【補正内容】
【図2】
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図6
【補正方法】変更
【補正内容】
【図6】
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図8
【補正方法】変更
【補正内容】
【図8】
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図12
【補正方法】変更
【補正内容】
【図12】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 高橋 弘晏 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 大和事業所内

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】横wビット幅で縦nビット幅のビットパタ
    ーン中の図形の輪郭をスムージングする方法であって、 前記ビットパターンを、1行がwビット幅である、n個
    の行変数として記憶するステップと、 前記n個の行変数を、シフト演算、論理否定、論理和、
    論理積のみを用いてスムージング演算を行うスムージン
    グ演算ステップと、 を具備する、輪郭スムージング方法
  2. 【請求項2】前記スムージング演算ステップが、 前記n個の行変数内の任意の1個をカレント行と見な
    し、前記カレント行と、前記カレント行の前に位置する
    前行と、前記カレント行の次の位置する次行の3個の行
    変数に、前記カレント行、前記前行、前記次行の各々に
    ついて、左へのビットシフト及び右へのビットシフト演
    算を施した6個の行変数を加え、計9個の行変数を作成
    するシフト演算ステップを含む、 請求項1記載の輪郭スムージング方法
  3. 【請求項3】前記シフト演算ステップで作成された計9
    個の行変数に関して論理否定、論理和、論理積の演算を
    行う論理演算ステップを含む、 請求項2記載の輪郭スムージング方法
  4. 【請求項4】前記論理演算ステップが角を削除するスム
    ージング演算を含む、 請求項3記載の輪郭スムージング方法
  5. 【請求項5】前記論理演算ステップが1ドット飛び出し
    削除を行うスムージング演算を含む、 請求項3記載の輪郭スムージング方法
  6. 【請求項6】横wビット幅で縦nビット幅のビットパタ
    ーン中の図形の輪郭をスムージングする装置であって、 前記ビットパターンを、1行がwビット幅である、n個
    の行変数として記憶する手段と、 前記n個の行変数を、シフト演算、論理否定、論理和、
    論理積のみを用いてスムージング演算を行うスムージン
    グ演算手段と、 を具備する、輪郭スムージング装置
  7. 【請求項7】前記スムージング演算手段が、 前記n個の行変数内の任意の1個をカレント行と見な
    し、前記カレント行と、前記カレント行の前に位置する
    前行と、前記カレント行の次の位置する次行の3個の行
    変数に、前記カレント行、前記前行、前記次行の各々に
    ついて、左へのビットシフト及び右へのビットシフト演
    算を施した6個の行変数を加え、計9個の行変数を作成
    するシフト演算手段を含む、 請求項6記載の輪郭スムージング装置
  8. 【請求項8】前記シフト演算手段で作成された計9個の
    行変数に関して論理否定、論理和、論理積の演算を行う
    論理演算手段を含む、 請求項7記載の輪郭スムージング方法
  9. 【請求項9】前記論理演算手段が角を削除するスムージ
    ング演算を含む、 請求項8記載の輪郭スムージング装置
  10. 【請求項10】前記論理演算手段が1ドット飛び出し削
    除を行うスムージング演算を含む、 請求項8記載の輪郭スムージング装置
JP04230296A 1996-02-29 1996-02-29 高速な輪郭スムージング方法及び装置 Expired - Fee Related JP3356612B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP04230296A JP3356612B2 (ja) 1996-02-29 1996-02-29 高速な輪郭スムージング方法及び装置
US08/779,183 US5870504A (en) 1996-02-29 1997-01-06 High speed outline smoothing method and apparatus including the operation of shifting bits of the current, preceding, and succeeding lines left and right

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP04230296A JP3356612B2 (ja) 1996-02-29 1996-02-29 高速な輪郭スムージング方法及び装置

Publications (2)

Publication Number Publication Date
JPH09237338A true JPH09237338A (ja) 1997-09-09
JP3356612B2 JP3356612B2 (ja) 2002-12-16

Family

ID=12632237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04230296A Expired - Fee Related JP3356612B2 (ja) 1996-02-29 1996-02-29 高速な輪郭スムージング方法及び装置

Country Status (2)

Country Link
US (1) US5870504A (ja)
JP (1) JP3356612B2 (ja)

Families Citing this family (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289133B1 (en) * 1996-12-20 2001-09-11 Canon Kabushiki Kaisha Image processing method and apparatus
JP2005122361A (ja) * 2003-10-15 2005-05-12 Sony Computer Entertainment Inc 画像処理装置及び方法、コンピュータプログラム、記録媒体
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
WO2016144724A1 (en) 2015-03-10 2016-09-15 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
EP3268965A4 (en) 2015-03-12 2018-10-03 Micron Technology, INC. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
CN207637499U (zh) 2016-11-08 2018-07-20 美光科技公司 用于形成在存储器单元阵列上方的计算组件的设备
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404233A (en) * 1990-08-28 1995-04-04 Kyocera Corporation Method for smoothing image
JPH05314250A (ja) * 1992-05-11 1993-11-26 Fuji Xerox Co Ltd 拡大画像の平滑方法及び装置

Also Published As

Publication number Publication date
US5870504A (en) 1999-02-09
JP3356612B2 (ja) 2002-12-16

Similar Documents

Publication Publication Date Title
JPH09237338A (ja) 高速な輪郭スムージング方法及び装置
CA1160347A (en) Method for recognizing a machine encoded character
JP2940496B2 (ja) パタンマッチング符号化装置及び方法
US7711202B2 (en) Image enhancement employing partial template matching
EP0173098A2 (en) Pattern outline tracking method and apparatus
KR100212412B1 (ko) 문자패턴 생성장치
JP3172498B2 (ja) イメージ認識用特徴値抽出方法、およびその装置、イメージ解析プログラムを格納する記憶媒体
US6240216B1 (en) Method and apparatus for processing an image, storage medium for storing an image processing program
JPH0683964A (ja) 画像照合方法
US5666440A (en) Method and apparatus for extracting outline data from bi-level image data
WO2014129016A1 (ja) 文字認識装置、文字認識方法及び記録媒体
JP2688666B2 (ja) 図形のベクトル化方法
JPH0535872A (ja) 2値画像の輪郭追跡方式
JP2804651B2 (ja) 輪郭塗り潰し方式
JP2838556B2 (ja) 画像処理装置
JP2962525B2 (ja) テキストブロック認識方法
JP2954218B2 (ja) 画像処理方法及び装置
JP3454626B2 (ja) 大分類方法
JP2932664B2 (ja) 1パス型図形形状特徴量計算装置
JPH0535862A (ja) アウトラインベクトルの自動整形方式
JPH04294474A (ja) 光学的文字読取装置
JPH02297589A (ja) イメージデータ文字パターン作成処理装置
JPH05173534A (ja) ストローク文字表示制御方法
Yin et al. High-speed thinning algorithm for character recognition
JP2002298084A (ja) 文字変形方法、文字変形装置、プログラム及び記録媒体

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081004

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081004

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091004

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091004

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101004

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101004

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111004

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121004

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131004

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees