JP3072721B2 - イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体 - Google Patents

イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体

Info

Publication number
JP3072721B2
JP3072721B2 JP09233048A JP23304897A JP3072721B2 JP 3072721 B2 JP3072721 B2 JP 3072721B2 JP 09233048 A JP09233048 A JP 09233048A JP 23304897 A JP23304897 A JP 23304897A JP 3072721 B2 JP3072721 B2 JP 3072721B2
Authority
JP
Japan
Prior art keywords
row
processing target
processing
variables
bit
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.)
Expired - Fee Related
Application number
JP09233048A
Other languages
English (en)
Other versions
JPH1173497A (ja
Inventor
直行 根本
弘晏 高橋
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 JP09233048A priority Critical patent/JP3072721B2/ja
Priority to US09/129,331 priority patent/US6240216B1/en
Publication of JPH1173497A publication Critical patent/JPH1173497A/ja
Application granted granted Critical
Publication of JP3072721B2 publication Critical patent/JP3072721B2/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/70Denoising; Smoothing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/409Edge or detail enhancement; Noise or error suppression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Memory System (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、イメージ処理方法に
関するものであり、より詳しくは、ソフトウェアによる
2値のイメージデータのマスク処理(ノイズの除去、パ
ターンの平滑化等)に関する。
【0002】
【従来の技術】現在、インターネット(ワールド・ワイ
ド・ウエブ)の普及やユーザーのマルチメディア志向に
よりイメージデータを扱う需要が増大してきており、こ
れを高速に処理することが求められている。
【0003】しかし、スキャナ入力、公衆電話回線から
のFAXデータの受信、デジタルカメラからの入力等に
よるイメージの入力段階やアナログ/デジタル変換、画
像圧縮/解凍処理等イメージの処理段階によってイメー
ジに劣化が生じ、ノイズが発生する場合がある。また、
入力された小さな文字等のパターンを拡大する場合には
大きな角を持ち、滑らかな曲線が表現されていないパタ
ーンが発生する場合がある。
【0004】かかる劣化したパターンを含むイメージは
ユーザにとって見にくく、ときには認識し難いものとな
ってしまう。また、その後にパターン認識(文字認識や
図形認識)の処理を行うに際し、認識率の低下や処理時
間の増大等の問題を発生させる。
【0005】このような従来技術の問題点を解決するた
めに、本願の出願時点では公開されていない出願人の他
の特許出願(特願平8−42302号)においては、マ
スクを用いるイメージ処理で、if-then文もしくはswitc
h文によっての判定を従来は必要としたものを判定なし
にビット列のシフト、論理否定、積、和のみを用いて高
速にスムージング処理を行う方法を提案している。しか
し、この方法においては、処理単位やレジスタの長さの
影響で横幅が8/16/32/64ビット等の特定のサ
イズのイメージの処理に限定されていたため、それをど
の様なサイズのイメージにも適用できる方法が望まれて
いる。
【0006】
【発明が解決しようとする課題】本発明の目的は、図形
の輪郭をスムージングするに際しての処理速度を高速化
することである。
【0007】本願発明の他の目的は、ノイズ除去や拡大
イメージの平滑化などマスクを用いる高速なイメージ処
理を、2値のどの様なサイズのイメージに適用できるよ
うにすることにある。
【0008】本願発明の他の目的は、認識率の高いパタ
ーン(文字または図形)認識システムを提供することに
ある。
【0009】
【課題を解決するための手段】ビットパターン中に描か
れた2値画像の図形や文字等についてスムージング等の
マスク処理を行うに際し、処理スードの低下を招く要素
となる条件判断及び分岐命令の、if then else や swit
ch構文等を用いずビット列のシフト、論理否定、積、和
等の論理演算のみを用いてスムージング等の処理を行
う。これにより処理の大幅な高速化が達成される。
【0010】また、バス幅やレジスタの長さ以上のイメ
ージを高速に処理するため、処理対象の左右に必ずしも
論理演算に使用しない元イメージの隣接パターンをロー
ドし、これを処理単位として演算に使用する。そして処
理結果には処理対象の部分を出力する。
【0011】本発明の一態様においては、(a)前記ビ
ットパターンのi行目(iはn以下の自然数)から、処
理対象sビット(sは自然数)と前記処理対象sビット
の直前または直後に連続するaビット(aは自然数)を
含む処理単位tビット(tはmおよびr以下の自然数)
を抽出し、前記演算記憶域に格納する段階と、(b)前
記処理対象sビットと、前記処理対象の存在するi行目
の前に位置するi−1行において、前記処理対象と同じ
列に位置する前行処理対象sビットと、前記処理対象の
存在するi行目の後に位置するi+1行において、前記
処理対象と同じ列に位置する次行処理対象sビットの3
個と、前記処理対象、前記前行処理対象、前記次行処理
対象の各々について、左へのビットシフト及び右へのビ
ットシフト演算を施した6個の行変数とを使用した論理
演算を行う段階と、(c)前記論理演算の結果を含むs
ビットを処理結果として出力する段階と、(d)前記処
理対象sビットに連続するsビットを新たな処理対象と
して、前記段階(a)〜(c)を繰り返す段階と、を含
むrビット(rは自然数)の幅を有する演算記憶域を備
えるコンピュータシステムを使用して、横mビット幅で
縦nビット行(m,nは自然数)のビットパターンのイ
メージを処理する方法が提供される。なお、ここでいう
「演算記憶域」とは、レジスタを含む概念である。
【0012】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納する段階と、
(b)前記aビットに含まれるビットと前記処理対象s
ビットに含まれるビットを使用した論理演算を行う段階
と、(c)前記論理演算の結果を含むsビットを処理結
果として出力する段階と、(d)前記処理対象sビット
に連続するsビットを新たな処理対象として、前記段階
(a)〜(c)を繰り返す段階と、を含むrビット(r
は自然数)の幅を有する演算記憶域を備えるコンピュー
タシステムを使用して、横mビット幅で縦nビット行
(m,nは自然数)のビットパターンのイメージを処理
する方法が提供される。
【0013】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前に連続するa1ビットと前記処理対象sビ
ットの直後に連続するa2ビット(a1およびa2は自
然数)とよりなる処理単位tビット(tはmおよびr以
下の自然数)を抽出し、前記演算記憶域に格納する段階
と、(b)前記a1ビットに含まれるビット及びa2ビ
ットに含まれるビットと前記処理対象sビットに含まれ
るビットを使用した論理演算を行う段階と、(c)前記
論理演算の結果を含むsビットを処理結果として出力す
る段階と、(d)前記処理対象sビットに連続するsビ
ットを新たな処理対象として、前記段階(a)〜(c)
を繰り返す段階と、を含むrビット(rは自然数)の幅
を有する演算記憶域を備えるコンピュータシステムを使
用して、横mビット幅で縦nビット行(m,nは自然
数)のビットパターンのイメージを処理する方法が提供
される。
【0014】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納する段階と、
(b)前記処理対象sビットと、前記処理対象の存在す
るi行目の前に位置するi−1行において、前記処理対
象と同じ列に位置する前行処理対象sビットと、前記処
理対象の存在するi行目の後に位置するi+1行におい
て、前記処理対象と同じ列に位置する次行処理対象sビ
ットの3個と、前記処理対象、前記前行処理対象、前記
次行処理対象の各々について、左へのビットシフト及び
右へのビットシフト演算を施した6個の行変数とを使用
した論理演算を行う段階と、(c)前記論理演算の結果
を含むsビットを処理結果として出力する段階と、
(d)前記処理対象sビットに連続するsビットを新た
な処理対象として、前記段階(a)〜(c)を繰り返す
段階と、(e)出力された処理結果に基づいてパターン
認識を行う段階と、を含むrビット(rは自然数)の幅
を有する演算記憶域を備えるコンピュータシステムを使
用して、横mビット幅で縦nビット行(m,nは自然
数)のビットパターンのイメージを処理する方法が提供
される。
【0015】本発明の他の一態様においては、(a)前
記ビットパターンのイメージを1行ずらして格納する作
業域と、(b1)前記作業域から前記ビットパターンの
i行目(iはn以下の自然数)から、処理対象sビット
(sは自然数)と前記処理対象sビットの直前または直
後に連続するaビット(aは自然数)を含む処理単位t
ビット(tはmおよびr以下の自然数)を抽出し、前記
演算記憶域に格納し、(b2)前記処理対象sビット
と、前記処理対象の存在するi行目の前に位置するi−
1行において、前記処理対象と同じ列に位置する前行処
理対象sビットと、前記処理対象の存在するi行目の後
に位置するi+1行において、前記処理対象と同じ列に
位置する次行処理対象sビットの3個と、前記処理対
象、前記前行処理対象、前記次行処理対象の各々につい
て、左へのビットシフト及び右へのビットシフト演算を
施した6個の行変数とを使用した論理演算を行い、(b
3)前記論理演算の結果を含むsビットを処理結果とし
て出力し、(b4)前記処理対象sビットに連続するs
ビットを新たな処理対象として、前記段階(b1)〜
(b3)を繰り返すイメージ処理部と、(c)処理結果
を格納する処理結果イメージ格納部と、を含むrビット
(rは自然数)の幅を有する演算記憶域を備え、横mビ
ット幅で縦nビット行(m,nは自然数)のビットパタ
ーンのイメージを処理する装置が提供される。
【0016】本発明の他の一態様においては、(a1)
前記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納し、(a2)前
記aビットに含まれるビットと前記処理対象sビットに
含まれるビットを使用した論理演算を行い、(a3)前
記論理演算の結果を含むsビットを処理結果として出力
し、(a4)前記処理対象sビットに連続するsビット
を新たな処理対象として、前記段階(a1)〜(a3)
を繰り返すイメージ処理部と、(b)処理結果を格納す
る処理結果イメージ格納部と、を含むrビット(rは自
然数)の幅を有する演算記憶域を備え、横mビット幅で
縦nビット行(m,nは自然数)のビットパターンのイ
メージを処理する装置が提供される。
【0017】本発明の他の一態様においては、(a)前
記ビットパターンのイメージを1行ずらして格納する作
業域と、(b1)前記ビットパターンのi行目(iはn
以下の自然数)から、処理対象sビット(sは自然数)
と前記処理対象sビットの直前または直後に連続するa
ビット(aは自然数)を含む処理単位tビット(tはm
およびr以下の自然数)を抽出し、前記演算記憶域に格
納し、(b2)前記処理対象sビットと、前記処理対象
の存在するi行目の前に位置するi−1行において、前
記処理対象と同じ列に位置する前行処理対象sビット
と、前記処理対象の存在するi行目の後に位置するi+
1行において、前記処理対象と同じ列に位置する次行処
理対象sビットの3個と、前記処理対象、前記前行処理
対象、前記次行処理対象の各々について、左へのビット
シフト及び右へのビットシフト演算を施した6個の行変
数とを使用した論理演算を行い、(b3)前記論理演算
の結果を含むsビットを処理結果として出力し、(b
4)前記処理対象sビットに連続するsビットを新たな
処理対象として、前記段階(b1)〜(b3)を繰り返
すイメージ処理部と、(c)処理結果を格納する処理結
果イメージ格納部と、(d)出力された処理結果に基づ
いてパターン認識を行うイメージ認識部と、を含むrビ
ット(rは自然数)の幅を有する演算記憶域を備え、横
mビット幅で縦nビット行(m,nは自然数)のビット
パターンのイメージを処理する装置が提供される。
【0018】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納することを前記
コンピュータシステムに指示するためのプログラムコー
ドと、(b)前記処理対象sビットと、前記処理対象の
存在するi行目の前に位置するi−1行において、前記
処理対象と同じ列に位置する前行処理対象sビットと、
前記処理対象の存在するi行目の後に位置するi+1行
において、前記処理対象と同じ列に位置する次行処理対
象sビットの3個と、前記処理対象、前記前行処理対
象、前記次行処理対象の各々について、左へのビットシ
フト及び右へのビットシフト演算を施した6個の行変数
とを使用した論理演算を行うことを前記コンピュータシ
ステムに指示するためのプログラムコードと、(c)前
記論理演算の結果を含むsビットを処理結果として出力
することを前記コンピュータシステムに指示するための
プログラムコードと、(d)前記処理対象sビットに連
続するsビットを新たな処理対象として、前記段階
(a)〜(c)を繰り返すことを前記コンピュータシス
テムに指示するためのプログラムコードと、を含むrビ
ット(rは自然数)の幅を有する演算記憶域を備えるコ
ンピュータシステムで使用され、横mビット幅で縦nビ
ット行(m,nは自然数)のビットパターンのイメージ
を処理するイメージ処理プログラムを格納した記録媒体
が提供される。
【0019】本発明の他の一態様において、前記論理演
算は、(a)前記処理対象、前記前行処理対象、前記次
行処理対象の各々について、左へのビットシフト及び右
へのビットシフト演算を施した6個の行変数と、前記前
行処理対象と、前記次行処理対象の合計8個の行変数の
内、前記処理対象、前記前行処理対象の各々について、
左へのビットシフト演算を施した2個の行変数と前記前
行処理対象の合計3個の行変数のみを反転させ、該8個
の行変数の論理和を行った演算結果、または、(b)前
記処理対象、前記前行処理対象、前記次行処理対象の各
々について、左へのビットシフト及び右へのビットシフ
ト演算を施した6個の行変数と、前記前行処理対象と、
前記次行処理対象の合計8個の行変数の内、前記処理対
象、前記次行処理対象の各々について、左へのビットシ
フト演算を施した2個の行変数と前記次行処理対象の合
計3個の行変数のみを反転させ、該8個の行変数の論理
和を行った演算結果、または、(c)前記処理対象、前
記前行処理対象、前記次行処理対象の各々について、左
へのビットシフト及び右へのビットシフト演算を施した
6個の行変数と、前記前行処理対象と、前記次行処理対
象の合計8個の行変数の内、前記処理対象、前記前行処
理対象の各々について、右へのビットシフト演算を施し
た2個の行変数と前記前行処理対象の合計3個の行変数
のみを反転させ、該8個の行変数の論理和を行った演算
結果、または、(d)前記処理対象、前記前行処理対
象、前記次行処理対象の各々について、左へのビットシ
フト及び右へのビットシフト演算を施した6個の行変数
と、前記前行処理対象と、前記次行処理対象の合計8個
の行変数の内、前記処理対象、前記次行処理対象の各々
について、右へのビットシフト演算を施した2個の行変
数と前記次行処理対象の合計3個の行変数のみを反転さ
せ、該8個の行変数の論理和を行った演算結果、のいず
れかの演算結果と前記処理対象の論理積を行うことを特
徴とする。
【0020】本発明の他の一態様において、前記論理演
算は、(e)前記処理対象、前記前行処理対象、前記次
行処理対象の各々について、右へのビットシフト演算を
施した3個の行変数と、前記前行処理対象と、前記次行
処理対象の合計5個の行変数の論理和を行った演算結
果、または、(f)前記処理対象、前記次行処理対象の
各々について、左へのビットシフト及び右ビットシフト
演算を施した4個の行変数と、前記次行処理対象の合計
5個の行変数との論理和を行った演算結果、または、
(g)前記処理対象、前記前行処理対象、前記次行処理
対象の各々について、左へのビットシフト演算を施した
3個の行変数と、前記前行処理対象と、前記次行処理対
象の合計5個の行変数の論理和を行った演算結果、また
は、(h)前記処理対象、前記前行処理対象の各々につ
いて、左へのビットシフト及び右ビットシフト演算を施
した4個の行変数と、前記前行処理対象の合計5個の行
変数の論理和を行った演算結果、のいずれかの演算結果
と前記処理対象の論理積を行うことを特徴とする。
【0021】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納することを前記
コンピュータシステムに指示するためのプログラムコー
ドと、(b)前記aビットに含まれるビットと前記処理
対象sビットに含まれるビットを使用した論理演算を行
うことを前記コンピュータシステムに指示するためのプ
ログラムコードと、(c)前記論理演算の結果を含むs
ビットを処理結果として出力することを前記コンピュー
タシステムに指示するためのプログラムコードと、
(d)前記処理対象sビットに連続するsビットを新た
な処理対象として、前記段階(a)〜(c)を繰り返す
ことを前記コンピュータシステムに指示するためのプロ
グラムコードと、を含むrビット(rは自然数)の幅を
有する演算記憶域を備えるコンピュータシステムで使用
され、横mビット幅で縦nビット行(m,nは自然数)
のビットパターンのイメージを処理するイメージ処理プ
ログラムを格納した記録媒体が提供される。
【0022】本発明の他の一態様においては、(a)前
記ビットパターンのi行目(iはn以下の自然数)か
ら、処理対象sビット(sは自然数)と前記処理対象s
ビットの直前または直後に連続するaビット(aは自然
数)を含む処理単位tビット(tはmおよびr以下の自
然数)を抽出し、前記演算記憶域に格納することを前記
コンピュータシステムに指示するためのプログラムコー
ドと、(b)前記処理対象sビットと、前記処理対象の
存在するi行目の前に位置するi−1行において、前記
処理対象と同じ列に位置する前行処理対象sビットと、
前記処理対象の存在するi行目の後に位置するi+1行
において、前記処理対象と同じ列に位置する次行処理対
象sビットの3個と、前記処理対象、前記前行処理対
象、前記次行処理対象の各々について、左へのビットシ
フト及び右へのビットシフト演算を施した6個の行変数
とを使用した論理演算を行うことを前記コンピュータシ
ステムに指示するためのプログラムコードと、(c)前
記論理演算の結果を含むsビットを処理結果として出力
することを前記コンピュータシステムに指示するための
プログラムコードと、(d)前記処理対象sビットに連
続するsビットを新たな処理対象として、前記段階
(a)〜(c)を繰り返すことを前記コンピュータシス
テムに指示するためのプログラムコードと、(e)出力
された処理結果に基づいてパターン認識を行うことを前
記コンピュータシステムに指示するためのプログラムコ
ードと、を含むrビット(rは自然数)の幅を有する演
算記憶域を備えるコンピュータシステムで使用され、横
mビット幅で縦nビット行(m,nは自然数)のビット
パターンのイメージを処理するイメージ処理プログラム
を格納した記録媒体が提供される。
【0023】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1を参照すると、本発明のイメージ処理システ
ムを実施するためのハードウェア構成の概観図が示され
ている。イメージ処理システム100は、中央処理装置
(CPU)1とメモリ4とを含んでいる。CPU1とメ
モリ4は、バス2等を介して、補助記憶装置としてのハ
ードディスク装置13、31とを接続してある。フロッ
ピーディスク装置(またはMO32、CD−ROM2
7、33等の媒体駆動装置26、29、30)21はフ
ロッピーディスクコントローラ(またはIDEコントロ
ーラ25、SCSIコントローラ28等の各種コントロ
ーラ)20を介してバス2へ接続されている。
【0024】フロッピーディスク装置(またはMO、C
D−ROM等の媒体駆動装置26、29、30)21に
は、フロッピーディスク24(またはMO32、CD−
ROM27、33等の媒体)が挿入され、このフロッピ
ーディスク等やハードディスク装置13、ROM14等
の記憶媒体には、オペレーティングシステムと協働して
CPU等に命令を与え、本発明を実施するためのコンピ
ュータ・プログラムのコードを記録することができ、メ
モリ4にロードされることによって実行される。このコ
ンピュータ・プログラムのコードは圧縮し、または、複
数に分割して、複数の媒体にまたがって記録することも
できる。同様に、上記各種記憶媒体には入力となるイメ
ージデータや処理結果のイメージデータを格納すること
もできる。
【0025】イメージ処理システム100は更に、ユー
ザ・インターフェース・ハードウェアを備えたシステム
とすることができ、ユーザ・インターフェース・ハード
ウェアとしては、例えば、画面位置情報を入力をするた
めのポインティング・デバイス(マウス、ジョイスティ
ック、トラックボール等)7、キー入力をサポートする
キーボード6や、イメージデータをユーザに提示するた
めのディスプレイ11、12がある。また、スピーカ4
3は、オーディオ・コントローラ41から音声信号を、
アンプ42を介して受領し、音声として出力する。
【0026】本発明のイメージ処理システム100の入
力となるイメージデータは、好適にはスキャナによって
作成され、パラレルポート17を介して本イメージ処理
システム100に入力される。ただし、スキャナによっ
て作成されたイメージデータは、パラレルポート25で
はなくSCSIインターフェースや他のインターフェー
スを介して本イメージ処理システム100に入力されて
もよい。また、シリアルポート15およびモデムまた
は、トークンリング等の通信アダプタ18等を介して他
のコンピュータ等と通信を行い、イメージデータを受領
することや、フロッピーディスク24等の記憶媒体から
も入力可能である。さらにシリアルポート15等を介し
てデジタルカメラと接続し、イメージデータを受領する
事もできる。
【0027】このように、本発明は、通常のパーソナル
コンピュータ(PC)やワークステーションや専用のO
CR、テレビやFAX等の各種家電製品に組み込まれた
コンピュータ又はこれらの組合せによって実施可能であ
ることを容易に理解できるであろう。ただし、これらの
構成要素は例示であり、その全ての構成成要素が本発明
の必須の構成要素となるわけではない。特に、本発明
は、イメージの平滑化を行うものであるため、シリアル
ポート15、通信アダプタカード18、オーディオ・コ
ントローラ21、アンプ22、スピーカ23等の構成要
素は本発明の一態様においては必須のものではない。
【0028】オペレーティング・システムとしては、W
indows(マイクロソフトの商標)、OS/2(I
BMの商標)、AIX(IBMの商標)上のX−WIN
DOWシステム(MITの商標)などの、標準でGUI
マルチウインドウ環境をサポートするものが望ましい
が、特定のオペレーティング・システム環境に限定され
るものではない。
【0029】また、図1は、スタンド・アロン環境のシ
ステムを示しているが、クライアント/サーバ・システ
ムとして本発明を実現し、クライアント・マシンは、サ
ーバ・マシンに対して、イーサネット、トークン・リン
グなどでLAN接続し、クライアント・マシン側には、
後述するユーザ入力部と、イメージ表示部と、イメージ
入力部のみを配置し、その他の機能をサーバ・マシン側
に配置してもよい。このように、サーバ・マシン側とク
ライアント・マシン側にどのような機能を配置するかは
設計に際し自由に変更できる事項であり、複数のマシン
を組合せ、それらにどのような機能を配分し、実施する
か等の種々の変更は本発明の思想に包含される概念であ
る。
【0030】B.システム構成 次に、図2のブロック図を参照して、本発明のシステム
構成について説明する。本発明の好適な実施例において
は、イメージ処理システム100は、ユーザ入力部10
1、制御部103、イメージ処理部105、処理結果イ
メージ格納部107、イメージ認識部109、イメージ
表示部111、イメージ入力部113、及び、作業域1
15によって構成される。
【0031】このユーザ入力部101は、処理の開始・
終了の命令の入力や、入力イメージの設定、マスクパタ
ーンの設定(角取りまたは飛び出し除去の指定)等の入
力をユーザより受領し、制御部103へ伝達する機能を
有する。イメージ入力部113は、スキャナ等から入力
された帳票のイメージ情報を保持し、そのイメージ情報
を制御部103に伝達する。イメージ処理部105は、
作業域115を使用し、イメージ入力部113で保持さ
れたイメージ情報を平滑化し、制御部103に返す。
【0032】制御部103は、イメージ処理部105か
ら渡された処理結果のイメージデータを処理結果イメー
ジ格納部107に格納する。イメージ表示部111は、
イメージ入力部113の保持するイメージデータや、処
理結果イメージ格納部107の保持するイメージデータ
等を表示画面上12に表示する。イメージ認識部109
は、処理結果イメージ格納部107の保持するイメージ
データから特徴抽出を抽出し、パターンマッチングを行
い、認識結果出力を行う。このイメージ認識部109は
公知の文字認識エンジン、図形認識エンジンに相当する
ものであり、当業者にとって周知のものであるため、詳
しい説明を省略する。
【0033】なお、文字認識においては、イメージ処理
部105に個別文字の位置/大きさ/文字種の判定機能
や、この判定結果に基づいて、標準の大きさに文字を変
換したり、文字の方向や位置を補正する正規化機能を設
けることもできる。また、単語辞書を使った自動エラー
修正を認識結果出力に先立って行うこともできる。さら
に、図形認識においては、本発明のイメージ処理に先立
って、グレイスケール変換やディザリング変換等により
カラーイメージから白黒二階調イメージへの変換を行っ
てもよい。
【0034】以上図2に示す各機能ブロックを説明した
が、これらの機能ブロックは、論理的機能ブロックであ
り、各々1つのまとまりを持ったハードウエアやソフト
ウエアによって実現されることを意味するのではなく、
複合し、または共通したハードウエアやソフトウエアに
よって実現可能である。また、ここに示した機能ブロッ
クの全てが本発明の必須の構成要素となるわけではな
い。例えば、本発明による処理の結果物である処理結果
イメージは制御部103によって出力されるため、処理
結果イメージ格納部107、イメージ認識部109やイ
メージ表示部111は、本発明の一態様においては不要
な構成要素である。
【0035】次に、本発明の好適な実施例における具体
的な処理手順の説明に先立って、関連する特願平8−4
2302号のイメージ処理方法を説明する。
【0036】この発明においては以下の2種の高速のス
ムージングを行う方法を開示している。 (1)大きな角のスムージング(角とり) (2)1ドット飛び出し削除によるスムージング
【0037】この本実施例では、横が8ビット幅でn個
の行からなるビットパターン中に描かれた図形に対する
スムージング処理について説明を行っているが、この方
法は同様にして16/32/64ビットと同様の方法で
拡張できる。また、異なるパターンをセットすることに
より他のパターンでのビット単位の処理に柔軟に変更で
きる。
【0038】(1)大きな角のスムージング 角のスムージング(角とり)では、図3に示すようなイ
メージデータから抽出した横3ビット、縦3ビットのパ
ターンで、以下の4パターン(ABCD)のどれかとマ
ッチングする時、角の1ドットを消去することによって
スムージングする。ここで重要なことは、従来よく用い
られる条件判断によるパターンマッチングを行わず、論
理演算のみを用いて自動的にかつ高速に角のドットが消
去される点にある。
【0039】
【表1】 A B **・ **・ ・・・ ・・・ **・ -> *・・ **・ -> *・・ ・・・ ・・・ **・ **・ C D ・** ・** ・・・ ・・・ "*"は黒点 (=1) ・** -> ・・* ・** -> ・・* "・"はブランク (=0) ・・・ ・・・ ・** ・**
【0040】上記スムージングを達成するための具体的
な例を横幅が8ビットの場合について説明する。図4に
おいて、2進値(1又は0)で表されたビットパターン
(正規化されたパターン)が図示されている。ここでビ
ットパターン中に描かれた図形や文字において、0はド
ットがないことを、1はドットがあることに対応する。
そして処理単位は横方向の行単位(1行=8ビット)で
行われる。現在の処理の中心となる行をカレント行(カ
レントライン)またはctと呼び、その上の行をup、
下をdwで表す。またa点、b点は以降のスムージング
処理の結果、削除されるドットを表している。
【0041】図5において、さらにこれら3つの行から
派生するビット列を定義する。即ちul,ur,cl,
cr,dl,drである。これらの行名の末尾に記載さ
れるl,rはそれぞれ左(left)、右(righ
t)の頭文字を表し、clでればカレント行を1ビット
左へシフトするという意味である。ここで「左へシフト
する」とは見る側、つまりセンサ側でのシフトと定義す
る。従ってメモリ中のビット列は反対に右へ1ビットシ
フトすることになる。これら9つのビット列はメモリ中
の作業変数へ格納され、以降の演算の対象とされる。
【0042】図6〜図10は上記A〜Dパターンにおけ
る実際のスムージング方法について図示したものであ
る。図7において説明されるのはパターンAのスムージ
ング処理の場合である。9つの升目は、図5のシフト走
査後の作業変数の位置と同じである。つまりカレント行
及びその上下の行を1ビットずつ左右にずらした行を注
目されるドットの回りに論理的に配置することで、以降
の論理演算のみによるスムージング処理が容易に理解さ
れる。
【0043】パターンAでは左上隅4ビットが黒点(ド
ットあり)の場合であるから、カレント行以外で黒点に
対応する、ul,up,clのビット列を反転(黒点対
応)させる。その他のブランクに対応する、ur,c
r,dl,dm,drはそのまま(ブランク対応)にし
て、8つの作業変数の論理ORを取る。この演算により
大きな角に対応するカレント行中のビット位置が0とし
て計算される。なぜなら上下のラインで1ビット左右に
揺らし、黒点反転を行ったビットの総論理和が0であれ
ばそれは角であるのと同値であるからである。
【0044】この論理ORの結果をカレント行のビット
列との論理AND(つまりカレント行のビットマスクと
して用いる)をとれば、カレント行のスムージング処理
が終了する。図7の場合、論理ORの結果は全て1なの
でスムージングの対象となる角は無いことが分かる。こ
の処理を全ラインに渡って行えばパターンAに関しての
スムージング処理は全て終了することになる。
【0045】図8は、左下隅4ビットが黒点である場合
である。これも図7同様に計算を行い、論理ORの結果
5ビット目が0であるのでカレント行の5ビット目が角
であることが分かり、結局5ビット目、即ち図4におけ
るb点は削除される。同様にして図9、図10において
パターンC、Dの処理がなされる。図10では論理OR
の結果2ビット目が0であるので、図4におけるa点が
スムージング処理の結果削除される。
【0046】図11において角のスムージング処理のフ
ローチャートを示す。まずステップ1においてビットパ
ターンを作業域(行変数)に読み込む。作業域はビット
パターンの総行数をnと定義すると、上下の2行を余分
に持つのでn+2行となる。従って作業域の2行目から
ビットパターンが読み込まれる。次にステップ2で作業
域の上下の前記2行をブランクにする。そしてステップ
3でループ変数をiとしてこれを2からn+1まで1ず
つ増加させて、以下のステップ4からステップ9を繰り
返す。
【0047】ステップ4では作業域i行目の前行(i−
1)、カレント行(i)、次行(i+1)をそれぞれ作
業変数に代入する。ステップ5において前記作業変数を
それぞれ1ビット右、1ビット左にシフトさせてそれぞ
れ別の作業変数に代入する。従って計9個の作業変数が
作成されることになる。次のステップ6でカレント行で
シフトさせない作業変数を結果作業変数に代入する。
【0048】ステップ7ではA、B、C、D4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する作業変数はそのままで、黒点の
位置に対応する作業変数はビットを反転させ、計8つの
作業変数でビットごとの総論理ORをとる。その結果を
結果作業変数とビットごとのANDをとり、それを結果
作業変数に代入する。
【0049】最後にステップ9で結果作業変数を作業域
のiライン目のパターンに代入する。以上で角に関する
スムージング処理が完了する。
【0050】以下に図11で示されたフローチャートに
基づく、実際のC言語によるコーディング例を記載する
ので参照されたい。
【0051】 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.横mビット x 縦n行のパターンを */ /* 1lineずらして作業域(m 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() */
【0052】(2)1ドット飛び出し削除によるスムー
ジング 1ドット飛び出し削除によるスムージングでは、横3ビ
ット、縦2ビットまたは横2ビット、縦3ビットのパタ
ーンで以下の4パターンのどれかと合う時、中央の1ド
ット消去することによってスムージングする。
【0053】
【表2】 E F ・・ ・・ *・ -> ・・ ・*・ -> ・・・ ・・ ・・ ・・・ ・・・ G H ・・ ・・ ・・・ ・・・ "*"は黒点 (=1) ・* -> ・・ ・*・ -> ・・・ "・"はブランク (=0) ・・ ・・
【0054】1ドット飛び出し削除によるスムージング
処理の基本的な処理の流れは角のスムージング処理と同
一である。図12において1ドット飛び出し削除による
スムージング処理のフローチャートを示す。まずステッ
プ1においてビットパターンを作業域に読み込む。作業
域はビットパターンの総行数をnと定義すると、上下の
2行を余分に持つのでn+2行となる。従って作業域の
2行目からビットパターンが読み込まれる。次にステッ
プ2で作業域の上下の前記2行をブランクにする。そし
てステップ3でループ変数をiとしてこれを2からn+
1まで1ずつ増加させて、以下のステップ4からステッ
プ9を繰り返す。
【0055】ステップ4では作業域i行目の前行(i−
1)、カレント行(i)、次行(i+1)をそれぞれ作
業変数に代入する。ステップ5において前記作業変数を
それぞれ1ビット右、1ビット左にシフトさせてそれぞ
れ別の作業変数に代入する。従って計9個の作業変数が
作成されることになる。次のステップ6でカレント行で
シフトさせない作業変数を結果作業変数に代入する。以
下のステップ7及び8が角のスムージング処理と若干異
なるステップである。
【0056】ステップ7ではE、F、G、H4パターン
毎に以下のステップ8を繰り返す。ステップ8ではカレ
ント行でシフトさせない作業変数を除き、ブランク(空
白部)の位置に対応する5個の作業変数でビットごとの
総論理ORをとる。その結果を結果作業変数とビットご
とのANDをとり、それを結果作業変数に代入する。
【0057】最後にステップ9で結果作業変数を作業域
のiライン目のパターンに代入する。以上で1ドット飛
び出し削除に関するスムージング処理が完了する。
【0058】以下に図12で示されたフローチャートに
基づく、実際のC言語によるコーディング例を記載する
ので参照されたい。なお、この本願発明は横8ビットの
行を処理単位として説明したが全く同様に方法で16/
32/64ビットと拡張できる。さらに黒点部及びブラ
ンク部のパターンセットのバリーエションを変更するだ
けで異なるスムージング処理が行えるので柔軟性に富
む。従ってパターンを変えれば他のイメージ・エンハン
スにも応用できる。
【0059】 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.横mビット x 縦n行のパターンを */ /* 1行ずらして作業域(m 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. 結果作業変数を元のm x n(m bits x n lines)のパターン */ /* に代入。 */ *(buf16x24 + i-1) = wk3; } } /* End of DeleteNoise() */
【0060】以上に説明した特願平8−42302号の
方法の制限(処理単位/レジスタの長さ)以上のイメージ
も現実にはCPUの中でレジスタを使って処理しなけれ
ばならない。この場合、単純に例えば64ビットずつイ
メージをレジスタにロードして特願平8−42302号
の方法を適用したのでは端の1ビットずつに関しては隣
のビットが存在しないので、この様な単純な処理ではマ
スク処理はできない。そこで図13の様にif文を含んだ
特殊なビット処理を行わなければならない。処理単位の
境界ビットaは、その周辺のパターンに従って処理され
なければならないからである。
【0061】そこで図14のように処理単位(tビッ
ト)を重複させ、rビットのレジスタ内の中央部には処
理結果を書き込むパターン(処理対象sビット)をロー
ドし左右隣には元イメージの隣接パターン(隣接a1/
a2ビット)をロードして処理する。なお、図14では
処理単位tを64ビットとし、処理し書き込まれる処理
対象sは48ビットとしている。
【0062】本発明の好適な実施例においては、図14
のように左端から48ビット(ハッチング部分)を処理対
象sとして選択する。その左右の8ビット(隣接aビッ
ト)を加えて処理単位tとする。ただし、隣接パターン
aが存在しない時はビット'0'を8個かそれ以上パディ
ングする。
【0063】ここで、処理単位tとは、演算を同時に行
う単位であって、レジスタ長rやバス幅等によって制限
を受ける。本発明の好適な実施例の場合は、処理単位t
がレジスタ長rに設定されている。また、処理対象sと
は、演算に使用され、処理結果に反映される部分のビッ
ト列である。
【0064】この処理単位tを上述の方法で角取りや飛
び出し除去等のイメージ処理を行う。処理対象s48ビ
ットを処理結果イメージに書き込む。これを繰り返し右
端までいったら、折り返し左端に戻り同じ処理をする。
これを縦方向(y-axis)で繰り返す。また、右端が48ビ
ットではないときは、レジスタの右残り(9ビット以
上)に'0'を詰めて処理する。
【0065】図15、16は夫々、角のスムージング
(角とり)、1ドット飛び出し削除によるスムージングを
行う処理手順を示すフローチャートである。本発明の好
適な実施例において主要なアルゴリズムは特願平8−4
2302号の方法を使用している。ただし、本発明の思
想は3×3のマスク処理のみに限定されるものではな
く、1×3以上のマスク処理に適用可能なものである。
【0066】図15において角のスムージング処理のフ
ローチャートを示す。まずステップ1においてビットパ
ターンを作業域(行変数)に読み込む。作業域はビット
パターンの総行数をnと定義すると、上下の2行を余分
に持つのでn+2行となる。従って作業域の2行目から
ビットパターンが読み込まれる。次にステップ2で作業
域の上下の前記2行をブランクにする。そしてステップ
3でループ変数をiとしてこれを2からn+1まで1ず
つ増加させて、以下のステップ4からステップ9を繰り
返す。
【0067】ステップ4ではi行目の左端より順に右端
になるまで処理対象長ずらして処理対象を選択し、以下
のステップ5乃至11を右端になるまで繰り返す。右端
に達したら折り返し次行で同じ操作をする。図14の例
においては、処理対象は48ビットとして設定されてい
る。そして、ステップ5では、処理対象の左右の領域を
付加し、基本処理単位(処理単位)とする。図14の例で
は処理対象48ビットに左右8ビットづつ附加され、6
4ビットとして処理されている。
【0068】ステップ6では作業域i行目の前行(i−
1)、カレント行(i)、次行(i+1)をそれぞれ作
業変数に代入する。ステップ7において前記作業変数を
それぞれ1ビット右、1ビット左にシフトさせてそれぞ
れ別の作業変数に代入する。従って計9個の作業変数が
作成されることになる。次のステップ8でカレント行で
シフトさせない作業変数を結果作業変数に代入する。
【0069】ステップ9ではA、B、C、D4パターン
毎に以下のステップ10を繰り返す。ステップ10では
カレント行でシフトさせない作業変数を除き、ブランク
(空白部)の位置に対応する作業変数はそのままで、黒
点の位置に対応する作業変数はビットを反転させ、計8
つの作業変数でビットごとの総論理ORをとる。その結
果を結果作業変数とビットごとのANDをとり、それを
結果作業変数に代入する。
【0070】最後にステップ11で、結果作業変数の処
理対象部分を処理結果に書き込む。もし、右端が処理対
象部分よりも小さいとき(図14の一番右側の処理単位
の場合)は、残りをマスクアウトするか残り部分をイメ
ージの幅に含めないようする。
【0071】以下に図15で示されたフローチャートに
基づく、実際のC言語によるコーディング例を記載する
ので参照されたい。なお、ここでは具体的にmビット幅
でn lines(m x n)のパターンでの角とりと、1ドットノ
イズとりの動作で説明する。このソースコードは、C言
語によりコーディングされており、t bitを32bitとして
いる。
【0072】 角のスムージング(角とり) #define CHAR_WIDTH 8 #define SHORT_WIDTH 16 #define LONG_WIDTH 32 /* for big endian system */ void smooth( char *pImg, /* pointer of Image (Input) */ long imgWidth, /* Image width */ long imgHeight /* Image height */ ){ unsigned long ct; /* center 作業変数 その1 */ unsigned long cl; /* c.left 作業変数 その2 */ unsigned long cr; /* c.right 作業変数 その3 */ unsigned long up; /* up 作業変数 その4 */ unsigned long ul; /* u.left 作業変数 その5 */ unsigned long ur; /* u.right 作業変数 その6 */ unsigned long dw; /* down 作業変数 その7 */ unsigned long dl; /* d.left 作業変数 その8 */ unsigned long dr; /* d.Right 作業変数 その9 */ unsigned long work; /* 結果作業変数 */ long* plImg; /* pointer of Image (Input) */ short* psImg; /* pointer of Image (Input) */ long i, j; /* counter */ long cntX; char* pImgTemp; /* pointer of Image */ char* pImgWork; /* pointer of Image (Work Area) */ char* pImgWorkOrg; /* pointer of Image (for save pointer) */ /* 入力イメージは32bitアラインを仮定。*/ cntX = (imgWidth+31) / LONG_WIDTH*2; pImgWorkOrg = (char*)calloc((cntX*(SHORT_WIDTH/CHAR_WIDTH)) * (imgHeight+2)+2, sizeof(char)); /* m x n(m bits x n lines)のパターンを */ /* 1lineずらして作業域(m bits x (n+2)lines)にコピー。 */ memcpy(pImgWorkOrg+cntX*(SHORT_WIDTH/CHAR_WIDTH)+1, pImg, cntX*(SHORT_WIDTH/CHAR_WIDTH)* imgHeight ); /* clear */ memset(pImg, 0, cntX*(SHORT_WIDTH/CHAR_WIDTH)* imgHeight); pImgTemp = pImg; pImgWork = pImgWorkOrg+cntX*(SHORT_WIDTH/CHAR_WIDTH); for (i = 0; i < imgHeight; i++){ /* loop (y-axis) */ for (j = 0; j < cntX; j++){ /* loop(x-axis) by 2byte-unit */ /* 左端より順にから右端になるまで処理対象長ずらして */ /* 処理対象を選択 */ /* 処理対象の左右の領域を付加し、基本処理単位(処理 */ /* 単位)とする。 */ up = *((unsigned long *)(pImgWork - cntX*(SHORT_WIDTH/CHAR_WIDTH))); ct = *((unsigned long *)(pImgWork)); dw = *((unsigned long *)(pImgWork + cntX*(SHORT_WIDTH/CHAR_WIDTH))); /* イメージの端の補正 */ if(j==0){ up &= 0x00ffffff; ct &= 0x00ffffff; dw &= 0x00ffffff; }else if(j==cntX-1){ up &= 0xffffff00; ct &= 0xffffff00; dw &= 0xffffff00; } /* この作業変数をそれぞれ1bit右、1bit左にシフトさせて */ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。 */ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 現lineでシフトさせない作業変数を結果作業変数に代入 */ work = ct; /* 4パターン毎に、以下を繰り返す。 */ /* 現lineでシフトさせない作業変数を除く、上のBlank */ /* Dotの位置に対応する作業変数はそのまま、黒点に対応する */ /* 作業変数はビット反転させ、8作業変数でビットごとのORを */ /* とる。その結果を結果作業変数とビットごとのANDをとり、 */ /* それを結果作業変数に代入。 */ work &= (~ul | ~up | ur | ~cl | cr | dl | dw | dr); work &= ( ul | ~up | ~ur | cl | ~cr | dl | dw | dr); work &= ( ul | up | ur |~ cl | cr | ~dl | ~dw | dr); work &= ( ul | up | ur | cl | ~cr | dl | ~dw | ~dr); psImg = (unsigned short *)(pImgTemp); *psImg = (unsigned short)(work>>8); pImgTemp += 2; pImgWork += 2; } /* End of for each j */ } /* End of for each i */ /* release pointer */ free(pImgWorkOrg); }
【0073】図16は、1ドット飛び出し削除によるス
ムージングを行う処理手順を示すフローチャートであ
る。1ドット飛び出し削除によるスムージング処理の基
本的な処理の流れは角のスムージング処理と同一であ
る。まずステップ1においてビットパターンを作業域に
読み込む。作業域はビットパターンの総行数をnと定義
すると、上下の2行を余分に持つのでn+2行となる。
従って作業域の2行目からビットパターンが読み込まれ
る。次にステップ2で作業域の上下の前記2行をブラン
クにする。そしてステップ3でループ変数をiとしてこ
れを2からn+1まで1ずつ増加させて、以下のステッ
プ4からステップ9を繰り返す。
【0074】ステップ4ではi行目の左端より順に右端
になるまで処理対象長ずらして処理対象を選択し、以下
のステップ5乃至11を右端になるまで繰り返す。右端
に達したら折り返し次行で同じ操作をする。図14の例
においては、処理対象は48ビットとして設定されてい
る。そして、ステップ5では、処理対象の左右の領域を
付加し、基本処理単位(処理単位)とする。図14の例で
は処理対象48ビットに左右8ビットづつ附加され、6
4ビットとして処理されている。
【0075】ステップ6では作業域i行目の前行(i−
1)、カレント行(i)、次行(i+1)をそれぞれ作
業変数に代入する。ステップ7において前記作業変数を
それぞれ1ビット右、1ビット左にシフトさせてそれぞ
れ別の作業変数に代入する。従って計9個の作業変数が
作成されることになる。次のステップ8でカレント行で
シフトさせない作業変数を結果作業変数に代入する。以
下のステップ9及び10が角のスムージング処理と若干
異なるステップである。
【0076】ステップ9ではE、F、G、H4パターン
毎に以下のステップ10を繰り返す。ステップ10では
カレント行でシフトさせない作業変数を除き、ブランク
(空白部)の位置に対応する5個の作業変数でビットご
との総論理ORをとる。その結果を結果作業変数とビッ
トごとのANDをとり、それを結果作業変数に代入す
る。
【0077】最後にステップ11で、結果作業変数の処
理対象部分を処理結果に書き込む。もし、右端が処理対
象部分よりも小さいとき(図14の一番右側の処理単位
の場合)は、残りをマスクアウトするか残り部分をイメ
ージの幅に含めないようする。以上で1ドット飛び出し
削除に関するスムージング処理が完了する。
【0078】以下に図16で示されたフローチャートに
基づく、実際のC言語によるコーディング例を記載する
ので参照されたい。
【0079】 1ドットノイズ取り #define CHAR_WIDTH 8 #define SHORT_WIDTH 16 #define LONG_WIDTH 32 /* for big endian system */ void delnoise( char *pImg, /* pointer of Image (Input) */ long imgWidth, /* Image width */ long imgHeight /* Image height */ ){ unsigned long ct; /* center 作業変数 その1 */ unsigned long cl; /* c.left 作業変数 その2 */ unsigned long cr; /* c.right 作業変数 その3 */ unsigned long up; /* up 作業変数 その4 */ unsigned long ul; /* u.left 作業変数 その5 */ unsigned long ur; /* u.right 作業変数 その6 */ unsigned long dw; /* down 作業変数 その7 */ unsigned long dl; /* d.left 作業変数 その8 */ unsigned long dr; /* d.Right 作業変数 その9 */ unsigned long work; /* 結果作業変数 */ long* plImg; /* pointer of Image (Input) */ short* psImg; /* pointer of Image (Input) */ long i, j; /* counter */ long cntX; char* pImgTemp; /* pointer of Image */ char* pImgWork; /* pointer of Image (Work Area) */ char* pImgWorkOrg; /* pointer of Image (for save pointer) */ /* 入力イメージは32bitアラインを仮定。*/ cntX = (imgWidth+31) / LONG_WIDTH*2; pImgWorkOrg = (char*)calloc((cntX*(SHORT_WIDTH/CHAR_WIDTH)) * (imgHeight+2)+2, sizeof(char)); /* m x n(m bits x n lines)のパターンを */ /* 1lineずらして作業域(m bits x (n+2)lines)にコピー。 */ memcpy(pImgWorkOrg+cntX*(SHORT_WIDTH/CHAR_WIDTH)+1, pImg, cntX*(SHORT_WIDTH/CHAR_WIDTH)* imgHeight ); /* clear */ memset(pImg, 0, cntX*(SHORT_WIDTH/CHAR_WIDTH)* imgHeight); pImgTemp = pImg; pImgWork = pImgWorkOrg+cntX*(SHORT_WIDTH/CHAR_WIDTH); for (i = 0; i < imgHeight; i++){ /* loop (y-axis) */ for (j = 0; j < cntX; j++){ /* loop(x-axis) by 2byte-unit */ /* 左端より順にから右端になるまで処理対象長ずらして */ /* 処理対象を選択 */ /* 処理対象の左右の領域を付加し、基本処理単位(処理 */ /* 単位)とする。 */ up = *((unsigned long *)(pImgWork - cntX*(SHORT_WIDTH/CHAR_WIDTH))); ct = *((unsigned long *)(pImgWork)); dw = *((unsigned long *)(pImgWork + cntX*(SHORT_WIDTH/CHAR_WIDTH))); /* イメージの端の補正 */ if(j==0){ up &= 0x00ffffff; ct &= 0x00ffffff; dw &= 0x00ffffff; }else if(j==cntX-1){ up &= 0xffffff00; ct &= 0xffffff00; dw &= 0xffffff00; } /* この作業変数をそれぞれ1bit右、1bit左にシフトさせて */ /* それぞれ別の作業変数に代入。計9個の作業変数を作る。 */ cl = ct >> 1; cr = ct << 1; ul = up >> 1; ur = up << 1; dl = dw >> 1; dr = dw << 1; /* 現lineでシフトさせない作業変数を結果作業変数に代入 */ work = ct; /* 4パターン毎に、以下を繰り返す。 */ /* 現lineでシフトさせない作業変数を除く、上のBlank */ /* Dotの位置に対応する作業変数はそのまま、黒点に対応する */ /* 作業変数はビット反転させ、8作業変数でビットごとのORを */ /* とる。その結果を結果作業変数とビットごとのANDをとり、 */ /* それを結果作業変数に代入。 */ work &= (cl | cr | ul | up | ur); work &= (cl | cr | dl | dw | dr); work &= (up | dw | ul | cl | dl); work &= (up | dw | ur | cr | dr); psImg = (unsigned short *)(pImgTemp); *psImg = (unsigned short)(work>>8); pImgTemp += 2; pImgWork += 2; } /* End of for each j */ } /* End of for each i */ /* release pointer */ free(pImgWorkOrg); }
【0080】図17〜20において各(1)、(2)の
スムージング処理を行う前のビットパターンと処理後の
ビットパターンを示す。ほぼ無視できる処理スピードで
図17における大きな角が図18において削除されてお
り、また図19における点在する点が図20において削
除されている。
【0081】
【発明の効果】以上説明したように、本発明によれば、
ビットパターン中に描かれた図形(OCR処理では正規
化パターン)の高速なスムージングを行うことが可能と
なる。
【0082】また、本発明の一態様においては、ノイズ
除去や拡大イメージの平滑化などマスクを用いる高速な
イメージ処理を、2値のどの様なサイズのイメージに適
用可能となる。
【0083】さらに、また、本発明の一態様において
は、認識率の高いパターン(文字または図形)認識シス
テムを提供することができる。
【0084】
【図面の簡単な説明】
【図1】 ハードウェア構成を示すブロック図である。
【図2】 処理要素のブロック図である。
【図3】 入力されたビットマップののイメージデータ
を示した概念図である。
【図4】 2進値で表されたビットパターンとカレント
行との対応を示す図である。
【図5】 カレント行及びその上下の行からシフトして
作成される行を示す図である。
【図6】 スムージング方法を説明する図である。
【図7】 パターンAにおけるスムージング方法を表し
た図である。
【図8】 パターンBにおけるスムージング方法を表し
た図である。
【図9】 パターンCにおけるスムージング方法を表し
た図である。
【図10】 パターンDにおけるスムージング方法を表
した図である。
【図11】 角のスムージング処理の処理手順を示すフ
ローチャートである。
【図12】 1ドット飛び出し削除によるスムージング
処理の処理手順を示すフローチャートである。
【図13】 本発明の好適な実施例におけるスムージン
グ処理の処理単位を示す図である。
【図14】 本発明の好適な実施例におけるスムージン
グ処理を説明する概念図である。
【図15】 角のスムージング処理の処理手順を示すフ
ローチャートである。
【図16】 1ドット飛び出し削除によるスムージング
処理の処理手順を示すフローチャートである。
【図17】 角のスムージング処理前のビットパターン
を示した図である。
【図18】 角のスムージング処理後のビットパターン
を示した図である。
【図19】 1ドット飛び出し削除によるスムージング
処理前のビットパターンを示した図である。
【図20】 1ドット飛び出し削除によるスムージング
処理後のビットパターンを示した図である。
【符号の説明】
100 イメージ処理システム 101 ユーザ入力部 103 制御部 105 イメージ処理部 107 処理結果イメージ格納部 109 イメージ認識部 111 イメージ表示部 113 イメージ入力部 115 作業域
───────────────────────────────────────────────────── フロントページの続き (72)発明者 高橋 弘晏 神奈川県大和市下鶴間1623番地14 日本 アイ・ビー・エム株式会社 大和事業所 内 (56)参考文献 特開 平9−237338(JP,A) 特公 平1−22664(JP,B2) (58)調査した分野(Int.Cl.7,DB名) G06T 3/40 G06F 12/04 540 H04N 1/409

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】rビット(rは自然数)の幅を有する演算
    記憶域を備えるコンピュータシステムを使用して、横m
    ビット幅で縦nビット行(m,nは自然数)のビットパ
    ターンのイメージを処理する方法であって、 (a)前記ビットパターンのi行目(iはn以下の自然
    数)から、処理対象sビット(sは自然数)と前記処理
    対象sビットの直前または直後に連続するaビット(a
    は自然数)を含む処理単位tビット(tはmおよびr以
    下の自然数)を抽出し、前記演算記憶域に格納する段階
    と、 (b)前記処理対象sビットと、前記処理対象の存在す
    るi行目の前に位置するi−1行において、前記処理対
    象と同じ列に位置する前行処理対象sビットと、前記処
    理対象の存在するi行目の後に位置するi+1行におい
    て、前記処理対象と同じ列に位置する次行処理対象sビ
    ットの3個と、前記処理対象、前記前行処理対象、前記
    次行処理対象の各々について、左へのビットシフト及び
    右へのビットシフト演算を施した6個の行変数とを使用
    した論理演算を行う段階と、 (c)前記論理演算の結果を含むsビットを処理結果と
    して出力する段階と、 (d)前記処理対象sビットに連続するsビットを新た
    な処理対象として、前記段階(a)〜(c)を繰り返す
    段階と、 を含むイメージ処理方法。
  2. 【請求項2】前記論理演算を行う段階が、 (a)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (b)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (c)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (d)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項1記載のイメージ処理方法。
  3. 【請求項3】前記論理演算を行う段階が、 (e)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、右へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (f)前記処理対象、前記次行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記次行処理対象の合計5個の行変
    数との論理和を行った演算結果、または、 (g)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (h)前記処理対象、前記前行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記前行処理対象の合計5個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項1記載のイメージ処理方法。
  4. 【請求項4】rビット(rは自然数)の幅を有する演算
    記憶域を備えるコンピュータシステムを使用して、横m
    ビット幅で縦nビット行(m,nは自然数)のビットパ
    ターンのイメージを処理する方法であって、 (a)前記ビットパターンのi行目(iはn以下の自然
    数)から、処理対象sビット(sは自然数)と前記処理
    対象sビットの直前または直後に連続するaビット(a
    は自然数)を含む処理単位tビット(tはmおよびr以
    下の自然数)を抽出し、前記演算記憶域に格納する段階
    と、 (b)前記処理対象sビットと、前記処理対象の存在す
    るi行目の前に位置するi−1行において、前記処理対
    象と同じ列に位置する前行処理対象sビットと、前記処
    理対象の存在するi行目の後に位置するi+1行におい
    て、前記処理対象と同じ列に位置する次行処理対象sビ
    ットの3個と、前記処理対象、前記前行処理対象、前記
    次行処理対象の各々について、左へのビットシフト及び
    右へのビットシフト演算を施した6個の行変数とを使用
    した論理演算を行う段階と、 (c)前記論理演算の結果を含むsビットを処理結果と
    して出力する段階と、 (d)前記処理対象sビットに連続するsビットを新た
    な処理対象として、前記段階(a)〜(c)を繰り返す
    段階と、 (e)出力された処理結果に基づいてパターン認識を行
    う段階と、 を含むイメージ処理方法。
  5. 【請求項5】rビット(rは自然数)の幅を有する演算
    記憶域を備え、横mビット幅で縦nビット行(m,nは
    自然数)のビットパターンのイメージを処理する装置で
    あって、 (a)前記ビットパターンのイメージを1行ずらして格
    納する作業域と、 (b1)前記作業域から前記ビットパターンのi行目
    (iはn以下の自然数)から、処理対象sビット(sは
    自然数)と前記処理対象sビットの直前または直後に連
    続するaビット(aは自然数)を含む処理単位tビット
    (tはmおよびr以下の自然数)を抽出し、前記演算記
    憶域に格納し、 (b2)前記処理対象sビットと、前記処理対象の存在
    するi行目の前に位置するi−1行において、前記処理
    対象と同じ列に位置する前行処理対象sビットと、前記
    処理対象の存在するi行目の後に位置するi+1行にお
    いて、前記処理対象と同じ列に位置する次行処理対象s
    ビットの3個と、前記処理対象、前記前行処理対象、前
    記次行処理対象の各々について、左へのビットシフト及
    び右へのビットシフト演算を施した6個の行変数とを使
    用した論理演算を行い、 (b3)前記論理演算の結果を含むsビットを処理結果
    として出力し、 (b4)前記処理対象sビットに連続するsビットを新
    たな処理対象として、前記段階(b1)〜(b3)を繰
    り返すイメージ処理部と、 (c)処理結果を格納する処理結果イメージ格納部と、 を含むイメージ処理装置。
  6. 【請求項6】前記論理演算が、 (a)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (b)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (c)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (d)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項5記載のイメージ処理装置。
  7. 【請求項7】前記論理演算が、 (e)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、右へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (f)前記処理対象、前記次行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記次行処理対象の合計5個の行変
    数との論理和を行った演算結果、または、 (g)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (h)前記処理対象、前記前行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記前行処理対象の合計5個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項5記載のイメージ処理装置。
  8. 【請求項8】rビット(rは自然数)の幅を有する演算
    記憶域を備え、横mビット幅で縦nビット行(m,nは
    自然数)のビットパターンのイメージを処理する装置で
    あって、 (a)前記ビットパターンのイメージを1行ずらして格
    納する作業域と、 (b1)前記ビットパターンのi行目(iはn以下の自
    然数)から、処理対象sビット(sは自然数)と前記処
    理対象sビットの直前または直後に連続するaビット
    (aは自然数)を含む処理単位tビット(tはmおよび
    r以下の自然数)を抽出し、前記演算記憶域に格納し、 (b2)前記処理対象sビットと、前記処理対象の存在
    するi行目の前に位置するi−1行において、前記処理
    対象と同じ列に位置する前行処理対象sビットと、前記
    処理対象の存在するi行目の後に位置するi+1行にお
    いて、前記処理対象と同じ列に位置する次行処理対象s
    ビットの3個と、前記処理対象、前記前行処理対象、前
    記次行処理対象の各々について、左へのビットシフト及
    び右へのビットシフト演算を施した6個の行変数とを使
    用した論理演算を行い、 (b3)前記論理演算の結果を含むsビットを処理結果
    として出力し、 (b4)前記処理対象sビットに連続するsビットを新
    たな処理対象として、前記段階(b1)〜(b3)を繰
    り返すイメージ処理部と、 (c)処理結果を格納する処理結果イメージ格納部と、 (d)出力された処理結果に基づいてパターン認識を行
    うイメージ認識部と、 を含むイメージ処理装置。
  9. 【請求項9】rビット(rは自然数)の幅を有する演算
    記憶域を備えるコンピュータシステムで使用され、横m
    ビット幅で縦nビット行(m,nは自然数)のビットパ
    ターンのイメージを処理するイメージ処理プログラムを
    格納した記録媒体であって、 該イメージ処理プログラムは、 (a)前記ビットパターンのi行目(iはn以下の自然
    数)から、処理対象sビット(sは自然数)と前記処理
    対象sビットの直前または直後に連続するaビット(a
    は自然数)を含む処理単位tビット(tはmおよびr以
    下の自然数)を抽出し、前記演算記憶域に格納すること
    を前記コンピュータシステムに指示するためのプログラ
    ムコードと、 (b)前記処理対象sビットと、前記処理対象の存在す
    るi行目の前に位置するi−1行において、前記処理対
    象と同じ列に位置する前行処理対象sビットと、前記処
    理対象の存在するi行目の後に位置するi+1行におい
    て、前記処理対象と同じ列に位置する次行処理対象sビ
    ットの3個と、前記処理対象、前記前行処理対象、前記
    次行処理対象の各々について、左へのビットシフト及び
    右へのビットシフト演算を施した6個の行変数とを使用
    した論理演算を行うことを前記コンピュータシステムに
    指示するためのプログラムコードと、 (c)前記論理演算の結果を含むsビットを処理結果と
    して出力することを前記コンピュータシステムに指示す
    るためのプログラムコードと、 (d)前記処理対象sビットに連続するsビットを新た
    な処理対象として、前記段階(a)〜(c)を繰り返す
    ことを前記コンピュータシステムに指示するためのプロ
    グラムコードと、 を含む記録媒体。
  10. 【請求項10】前記論理演算が、 (a)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (b)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、左への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (c)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記前行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記前行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、または、 (d)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト及び右へのビ
    ットシフト演算を施した6個の行変数と、前記前行処理
    対象と、前記次行処理対象の合計8個の行変数の内、前
    記処理対象、前記次行処理対象の各々について、右への
    ビットシフト演算を施した2個の行変数と前記次行処理
    対象の合計3個の行変数のみを反転させ、該8個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項9記載の記録媒体。
  11. 【請求項11】前記論理演算が、 (e)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、右へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (f)前記処理対象、前記次行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記次行処理対象の合計5個の行変
    数との論理和を行った演算結果、または、 (g)前記処理対象、前記前行処理対象、前記次行処理
    対象の各々について、左へのビットシフト演算を施した
    3個の行変数と、前記前行処理対象と、前記次行処理対
    象の合計5個の行変数の論理和を行った演算結果、また
    は、 (h)前記処理対象、前記前行処理対象の各々につい
    て、左へのビットシフト及び右ビットシフト演算を施し
    た4個の行変数と、前記前行処理対象の合計5個の行変
    数の論理和を行った演算結果、 のいずれかの演算結果と前記処理対象の論理積を行うこ
    とを特徴とする請求項9記載の記録媒体。
  12. 【請求項12】rビット(rは自然数)の幅を有する演
    算記憶域を備えるコンピュータシステムで使用され、横
    mビット幅で縦nビット行(m,nは自然数)のビット
    パターンのイメージを処理するイメージ処理プログラム
    を格納した記録媒体であって、 該イメージ処理プログラムは、 (a)前記ビットパターンのi行目(iはn以下の自然
    数)から、処理対象sビット(sは自然数)と前記処理
    対象sビットの直前または直後に連続するaビット(a
    は自然数)を含む処理単位tビット(tはmおよびr以
    下の自然数)を抽出し、前記演算記憶域に格納すること
    を前記コンピュータシステムに指示するためのプログラ
    ムコードと、 (b)前記処理対象sビットと、前記処理対象の存在す
    るi行目の前に位置するi−1行において、前記処理対
    象と同じ列に位置する前行処理対象sビットと、前記処
    理対象の存在するi行目の後に位置するi+1行におい
    て、前記処理対象と同じ列に位置する次行処理対象sビ
    ットの3個と、前記処理対象、前記前行処理対象、前記
    次行処理対象の各々について、左へのビットシフト及び
    右へのビットシフト演算を施した6個の行変数とを使用
    した論理演算を行うことを前記コンピュータシステムに
    指示するためのプログラムコードと、 (c)前記論理演算の結果を含むsビットを処理結果と
    して出力することを前記コンピュータシステムに指示す
    るためのプログラムコードと、 (d)前記処理対象sビットに連続するsビットを新た
    な処理対象として、前記段階(a)〜(c)を繰り返す
    ことを前記コンピュータシステムに指示するためのプロ
    グラムコードと、 (e)出力された処理結果に基づいてパターン認識を行
    うことを前記コンピュータシステムに指示するためのプ
    ログラムコードと、 を含む記録媒体。
JP09233048A 1997-08-28 1997-08-28 イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体 Expired - Fee Related JP3072721B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP09233048A JP3072721B2 (ja) 1997-08-28 1997-08-28 イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体
US09/129,331 US6240216B1 (en) 1997-08-28 1998-08-05 Method and apparatus for processing an image, storage medium for storing an image processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09233048A JP3072721B2 (ja) 1997-08-28 1997-08-28 イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体

Publications (2)

Publication Number Publication Date
JPH1173497A JPH1173497A (ja) 1999-03-16
JP3072721B2 true JP3072721B2 (ja) 2000-08-07

Family

ID=16948989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09233048A Expired - Fee Related JP3072721B2 (ja) 1997-08-28 1997-08-28 イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体

Country Status (2)

Country Link
US (1) US6240216B1 (ja)
JP (1) JP3072721B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10453151B2 (en) 2001-02-01 2019-10-22 Kris Engineering, Inc. Receipts scanner and financial organizer
US7746510B2 (en) 2001-02-01 2010-06-29 Pandipati Radha K C Receipts scanner and financial organizer
JP2006217403A (ja) * 2005-02-04 2006-08-17 Sony Corp 符号化装置および方法、復号化装置および方法、記録媒体、プログラム、画像処理システム、並びに画像処理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6136876A (ja) * 1984-07-30 1986-02-21 Ricoh Co Ltd 画像情報のマスク処理回路
JP2631474B2 (ja) 1987-07-16 1997-07-16 住友電気工業株式会社 アンチロツク制御装置
US4910608A (en) * 1988-12-09 1990-03-20 Harris Corporation Imagery data compression mechanism employing adaptive vector quantizer
JP2974363B2 (ja) * 1990-04-02 1999-11-10 株式会社リコー 画像処理装置

Also Published As

Publication number Publication date
JPH1173497A (ja) 1999-03-16
US6240216B1 (en) 2001-05-29

Similar Documents

Publication Publication Date Title
JP3356612B2 (ja) 高速な輪郭スムージング方法及び装置
JP4700423B2 (ja) 形状を使用する共通チャーティング
US6954215B2 (en) System and method for employing non-alpha channel image data in an alpha-channel-aware environment
JP3072721B2 (ja) イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体
JP2817771B2 (ja) 画像データ回転方法およびシステム
JP3774494B2 (ja) データ記憶装置
JP2000214980A (ja) ポインティングシステム
JP2000113111A (ja) イメージ認識用特徴値抽出方法、およびその装置、イメージ解析プログラムを格納する記憶媒体
JP3163577B2 (ja) ベクトル・フォント生成方法
JP4832462B2 (ja) 画像処理装置、画像処理プログラムおよび画像処理方法
JP3114289B2 (ja) 文字パターン発生装置
JP2804651B2 (ja) 輪郭塗り潰し方式
JP2962525B2 (ja) テキストブロック認識方法
JP2787487B2 (ja) コンピュータシステムに表示され且つ操作される線分の位置を決定する回路
JP2698348B2 (ja) 文字処理装置
JP2765658B2 (ja) 光学文字読み取りシステム
JPH0315193B2 (ja)
JP3014749B2 (ja) 画像メモリ装置
JP2876568B2 (ja) 文字認識装置
JPH08147210A (ja) ビットマップメモリ装置
JPH0573693A (ja) 輪郭塗り潰し方式
JPH03232375A (ja) 画像処理装置
JP2003101790A (ja) 画像処理装置、画像処理方法、画像処理プログラム及び画像処理プログラム記録媒体
JPH0765177A (ja) 画像処理システムおよび画像処理装置
JPH0594518A (ja) 論理演算装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080602

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20080602

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090602

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100602

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees