JP7138032B2 - 画像変換装置、画像変換プログラム、および画像変換方法 - Google Patents

画像変換装置、画像変換プログラム、および画像変換方法 Download PDF

Info

Publication number
JP7138032B2
JP7138032B2 JP2018230109A JP2018230109A JP7138032B2 JP 7138032 B2 JP7138032 B2 JP 7138032B2 JP 2018230109 A JP2018230109 A JP 2018230109A JP 2018230109 A JP2018230109 A JP 2018230109A JP 7138032 B2 JP7138032 B2 JP 7138032B2
Authority
JP
Japan
Prior art keywords
section
value
row
column
distance
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.)
Active
Application number
JP2018230109A
Other languages
English (en)
Other versions
JP2020091799A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018230109A priority Critical patent/JP7138032B2/ja
Priority to US16/693,443 priority patent/US11222393B2/en
Publication of JP2020091799A publication Critical patent/JP2020091799A/ja
Application granted granted Critical
Publication of JP7138032B2 publication Critical patent/JP7138032B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/155Segmentation; Edge detection involving morphological operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/187Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20036Morphological image processing
    • G06T2207/20041Distance transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)

Description

本発明は、画像変換装置、画像変換プログラムおよび画像変換方法に関する。
特定の部分のみを表示し、特定の部分以外の部分を表示しないようにするマスク処理を行うことにより、例えば、特定の部分の画素に1を格納し、特定の部分以外の部分の画素に0を格納した2値画像が生成される。以下、0が格納された画素を0画素と称する。そして、2値画像の各画素から最も近い0画素までの距離を算出し、算出した距離を格納した距離画像を生成する技術が用いられている。生成された距離画像は、例えば、画像内の領域の分割に用いられる。
関連する技術として、2値画像を距離変換して距離画像を作成し、距離画像を用いて2値画像に対してクロージング処理を実行し、クロージング処理の前後の画像の差分からボイドを抽出する技術が提案されている(例えば、特許文献1を参照)。
また、関連する技術として、物体の形状を表す複数の形状データを統合する画像処理装置が提案されている(例えば、特許文献2を参照)。
特開2015-68755号公報 特開2009-32122号公報
2値画像を距離画像に変換する方法として、2値画像の各行および各列の画素をスキャンして0画素からの距離を決定する方法が考えられる。この方法を用いた場合、各行および各列にスレッドを割り当てると、並列数は、2値画像の行数または列数となる。よって、並列可能数が大きいプロセッサ(例えば、Graphics Processing Unit(GPU))を用いた場合に並列可能数を有効に使えない可能性がある。
また、各画素にスレッドを割り当てて各行および各列をスキャンし、0画素からの距離を決定する方法が考えられる。この方法を用いた場合、各画素に対して独立したスレッドで並列実行が行われるため、並列可能数を有効に使える。しかし、一つの画素に対して複数のスレッドでアクセスするため、画素に対するアクセス量が多くなる。
1つの側面として、本発明は、少ない画素アクセス量でプロセッサの並列可能数を有効に使用して画像変換を行うことを目的とする。
1つの態様では、画像変換装置は、入力画像内の行単位の画素値を複数の区間に分割し、各行の前記区間毎に、プロセッサが並列実行可能なスレッドを割り当てる第1割り当て部と、前記各行で割り当てられたスレッド毎に、前記区間内の所定数値の画素からの距離のうち最小の距離を前記各行の区間において算出し、前記最小の距離を示す値を格納した第1距離画像を生成する第1生成部と、前記各行で割り当てられたスレッド毎に、前記各行の所定区間より左側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記左側の区間における前記境界値の算出結果を用いて算出し、前記各行の所定区間より右側の区間の所定数値の画素からの距離のうち最小の距離を示す左境界値を、前記右側の区間における前記左境界値の算出結果を用いて算出する第1算出部と、前記各行で割り当てられたスレッド毎に、前記第1距離画像内の値と、前記境界値及び前記左境界値に基づいて算出した行全体をスコープとした所定数値の画素からの距離を示す値とのうち小さい値で前記第1距離画像内の値を更新した第2距離画像を出力する第1更新部と、前記第2距離画像内の列単位の画素値を複数区間に分割し、各列の前記区間毎に前記プロセッサが並列実行可能なスレッドを割り当てる第2割り当て部と、前記各列で割り当てられたスレッド毎に、前記第2距離画像における画素値に基づいて、各列の前記区間内の所定数値の画素からの距離のうち最小の距離を示す値を前記各列の区間において算出し、算出した値を格納した第3距離画像を生成する第2生成部と、前記各列で割り当てられたスレッド毎に、前記各列の所定区間より上側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記上側の区間における前記境界値の算出結果を用いて算出し、前記各列の所定区間より下側の区間の所定数値の画素からの距離のうち最小の距離を示す上境界値を、前記下側の区間における前記上境界値の算出結果を用いて算出する第2算出部と、前記各列で割り当てられたスレッド毎に、前記第3距離画像内の値と、前記境界値及び前記上境界値に基づいて算出した所定数値の画素からの距離を示す値とのうち小さい値で前記第3距離画像内の値を更新する第2更新部と、を備える。
1つの側面によれば、少ない画素アクセス量でプロセッサの並列可能数を有効に使用して画像変換を行うことができる。
2次元上でのマンハッタン距離の例を示す図である。 マスク処理が行われた入力画像を距離画像に変換する例を示す図である。 領域分割の一例を示す図である。 第1の関連技術における画像変換装置を示す図である。 行Forwardスキャン部の処理の一例を示す図である。 行Backwardスキャン部の処理の一例を示す図である。 第2の関連技術における画像変換装置を示す図である。 第2の関連技術における画像変換処理の概要を示す図である。 第1の関連技術および第2の関連技術における並列数を示す図である。 実施形態における画像変換装置の機能構成の一例を示す図である。 行方向スキャン処理の一例を示す図である。 行方向リダクション部における右境界値の算出例を示す図である。 行方向リダクション部における左境界値の算出例を示す図である。 行方向リダクション部の処理の一例を示す図(その1)である。 行方向リダクション部の処理の一例を示す図(その2)である。 行方向合算部の処理の一例を示す図である。 列Forwardスキャン処理の一例を示す図である。 列Backwardスキャン処理の一例を示す図である。 実施形態の行方向の処理の一例を示すフローチャートである。 実施形態の列方向の処理の一例を示すフローチャートである。 第1の関連技術、第2の関連技術および実施形態における並列数を示す図である。 画像変換装置のハードウェア構成の一例を示す図である。
以下、実施形態の画像変換処理の関連技術について説明する。2値画像の各画素から最も近い0画素までの距離を算出し、算出した距離を格納した距離画像を生成する際に、例えば、マンハッタン距離が用いられる。例えば、n次元における点p(p,p,・・・p)と点q(q,q,・・・q)との間のマンハッタン距離d(p,q)は、以下の式(1)により算出される。
Figure 0007138032000001
また、2次元における点p(p,p)と点q(q,q)との間のマンハッタン距離は、以下の式(2)により算出される。
Figure 0007138032000002
図1は、2次元上でのマンハッタン距離の例を示す図である。図1(a)において、点A(1,3)と点B(1,1)との距離は、上記式(2)に基づいて算出すると2となる。また、図1(b)において、点C(3,3)と点D(1,1)との距離は、上記式(2)に基づいて算出すると4となる。
なお、以下の説明において、画素間の距離には、上述のマンハッタン距離が用いられる。以下の説明において、マンハッタン距離を単に「距離」と記載することがある。
図2は、マスク処理が行われた入力画像を距離画像に変換する例を示す図である。図2に示す入力画像は、画像の画素毎に、前景の画素に1が格納され、背景の画素に0が格納された2値画像である。図2では、所定画素から最も近い0画素への距離を、その所定画素の画素値とする画像変換処理を行うことにより距離画像が生成されている。
図3は、領域分割の一例を示す図である。図3に示す例では、入力画像として、領域Aと領域Bを含むカラー画像が用いられる。ただし、カラー画像において領域Aと領域Bとの境界が明確でないとする。
AとBの領域分割をする場合、まず、カラー画像がグレースケール画像に変換され、グレースケール画像が2値画像(1)に変換される。そして、2値画像(1)は、各画素から最も近い0画素への距離を格納した距離画像に変換される。そして、距離画像は、例えば、所定値以上の数値が格納された画素を黒とし、所定値未満の数値が格納された画素を白とした2値画像(2)に変換される。そして、例えば、2値画像(2)の各画素に対してラベリングが行われ、Watershedアルゴリズムを適用することにより、領域Aと領域Bとの境界が明確になる。すなわち、領域Aと領域Bとが分割された分割後画像が生成される。
次に、実施形態における画像変換処理の比較対象である関連技術について説明する。なお、以下に説明する関連技術は、図3に示す画像変換のうち、2値画像(1)から距離画像への画像変換に関する技術である。
図4は、第1の関連技術における画像変換装置1を示す図である。画像変換装置1は、第1行Forwardスキャン部11と、第1行Backwardスキャン部12と、第1列Forwardスキャン部13と、第1列Backwardスキャン部14とを含む。なお、以下の説明において、画像の左端から右端への方向をForwardとし、画像の右端から左端への方向をBackwardとする。
第1行Forwardスキャン部11は、入力画像(2値画像)の各行に対してForwardスキャンを行い、スキャンの対象画素から最も近い0画素への距離を、その対象画素の画素値とした距離画像を生成する。そして、第1行Forwardスキャン部11は、距離画像を第1行Backwardスキャン部12に出力する。
第1行Backwardスキャン部12は、第1行Forwardスキャン部11から取得した距離画像の各行に対してBackwardスキャンを行う。そして、第1行Backwardスキャン部12は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と第1行Forwardスキャン部11から取得した距離画像の画素値とのうち小さい値を、新たな距離画像の画素値として格納する。そして、第1行Backwardスキャン部12は、新たな距離画像を第1列Forwardスキャン部13に出力する。
第1行Forwardスキャン部11および第1行Backwardスキャン部12は、各行の処理を並列で実行する。
第1列Forwardスキャン部13は、第1行Backwardスキャン部12から取得した距離画像の各列に対してForwardスキャンを行う。第1列Forwardスキャン部13は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と、第1行Backwardスキャン部12から取得した距離画像の画素値とのうち小さい値を、新たな距離画像の画素値として格納する。そして、第1列Forwardスキャン部13は、新たな距離画像を第1列Backwardスキャン部14に出力する。
第1列Backwardスキャン部14は、第1列Forwardスキャン部13から取得した距離画像の各列に対してBackwardスキャンを行う。第1列Backwardスキャン部14は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と、第1列Forwardスキャン部13から取得した距離画像の画素値とのうち小さい値を、新たな距離画像の画素値として格納する。そして、第1列Backwardスキャン部14は、新たな距離画像を、入力画像に基づく距離画像として出力する。
第1列Forwardスキャン部13および第1列Backwardスキャン部14は、各列の処理を並列に実行する。
図5は、第1行Forwardスキャン部11の処理の一例を示す図である。第1行Forwardスキャン部11は、入力画像の各行に対してForwardスキャンを行い、各画素から最も近い0画素への距離を画素値とした距離画像を生成する。第1行Forwardスキャン部11は、入力画像の左端から1画素ずつスキャンを行う。図5では、入力画像の所定の行を距離画像に変換する例を示している。
第1行Forwardスキャン部11は、所定の行の列番号0において、前の列が存在しないため、距離画像の画素値として不定値(∞)を設定する。第1行Forwardスキャン部11は、所定の行の列番号1において、入力画像のスキャン対象画素の画素値が0であるため、距離画像の画素値として0を格納する。第1行Forwardスキャン部11は、所定の行の列番号2において、入力画像のスキャン対象画素の画素値が1(0以外)であるため、第1列に存在する0画素からの距離である1を距離画像の画素値として格納する。第1行Forwardスキャン部11は、所定の行の列番号3において、入力画像のスキャン対象画素の画素値が1(0以外)であるため、第1列に存在する0画素からの距離である2を距離画像の画素値として設定する。
第1行Forwardスキャン部11は、同様の処理を最終列まで続け、全ての行に対して同様の処理を行うことにより、入力画像を距離画像に変換する。
図6は、第1行Backwardスキャン部12の処理の一例を示す図である。第1行Backwardスキャン部12は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と第1行Forwardスキャン部11から取得した距離画像の画素値とのうち小さい値を、新たな距離画像の画素値として格納する。第1行Backwardスキャン部12は、入力画像の右端から1画素ずつスキャンを行う。
第1行Backwardスキャン部12は、列番号7において、スキャン対象画素の直前の画素が存在しないため、距離画像の画素値を変更しない。第1行Backwardスキャン部12は、列番号5において、距離画像(更新前)の画素値(4)と、スキャン対象画素の直前の画素値(0)に1を加算した値(1)とのうち小さい値である1を、距離画像(更新後)に格納する。第1行Backwardスキャン部12は、列番号4において、距離画像(更新前)の画素値(3)と、スキャン対象画素の直前の画素値(1)に1を加算した値(2)とのうち小さい値である2を、距離画像(更新後)に格納する。
第1行Backwardスキャン部12は、同様の処理を最終列まで続けることにより、距離画像のうち所定の行の画素値を更新する。第1行Backwardスキャン部12は、全ての行に対して同様の処理を行うことにより、距離画像を更新する。
なお、第1列Forwardスキャン部13および第1列Backwardスキャン部14の処理は、第1行Backwardスキャン部12の処理と同様であるため、詳細な説明を省略する。
以上の処理により、画像変換装置1は、入力画像(2値画像)を、距離画像に変換する。距離画像は、図2の例に示すように、対象画素から最も近い0画素への距離をその対象画素の画素値とした画像である。
第1の関連技術では、第1行Forwardスキャン部11および第1行Backwardスキャン部12における並列処理数は、入力画像の行数である。第1列Forwardスキャン部13および第1列Backwardスキャン部14の並列処理数は、入力画像の列数である。よって、第1の関連技術による画像変換処理では、並列可能数が大きいGPUを用いた場合に、並列処理数がGPUの並列可能数より少なくなり、並列可能数を有効に使えない可能性がある。
図7は、第2の関連技術における画像変換装置2を示す図である。画像変換装置2は、第2行Forwardスキャン部21と、第2行Backwardスキャン部22と、第2列Forwardスキャン部23と、第2列Backwardスキャン部24とを含む。画像変換装置2の処理は、画素毎にスレッドを割り当ててスキャンを行う点で第1の関連技術における処理と異なる。
第2行Forwardスキャン部21は、入力画像を行毎にシェアードメモリにコピーし、画素毎にForwardスキャンを行う。第2行Forwardスキャン部21は、所定画素からスキャンして最初の0画素が見つかった場合、移動数をその所定画素の画素値として格納する。第2行Forwardスキャン部21は、入力画像の全ての画素に対応する画素値を距離画像に格納した場合、距離画像を第2行Backwardスキャン部22に出力する。
第2行Backwardスキャン部22は、第2行Forwardスキャン部21から取得した距離画像を行毎にシェアードメモリにコピーし、画素毎にBackwardスキャンを行う。第2行Backwardスキャン部22は、所定画素からスキャンして最初の0画素が見つかった場合、その所定画素からの移動数と第2行Forwardスキャン部21から取得した距離画像の画素値とのうち小さい値を更新後の距離画像の画素値として格納する。第2行Backwardスキャン部22は、取得した距離画像の全ての画素を更新した場合、更新後の距離画像を第2列Forwardスキャン部23に出力する。
第2列Forwardスキャン部23および第2列Backwardスキャン部24の処理は、第2行Forwardスキャン部21および第2行Backwardスキャン部22の処理と同様である。
図8は、第2の関連技術における画像変換処理の概要を示す図である。第2行Forwardスキャン部21は、グローバルメモリに記憶されている入力画像を行毎にシェアードメモリにコピーし、画素毎にForwardスキャンを行う。図8に示すように、第2行Forwardスキャン部21は、列数のスレッド(スレッドth0、th1・・・thM-1)の並列処理を行う。同様に、第2行Backwardスキャン部22は、第2行Forwardスキャン部21が出力した距離画像を行毎にシェアードメモリにコピーし、画素毎にBackwardスキャンを行う。図8に示すように、第2行Backwardスキャン部22は、列数のスレッド(スレッドth0、th1・・・thM-1)の並列処理を行う。
第2列Forwardスキャン部23および第2列Backwardスキャン部24も同様に、距離画像を列毎にシェアードメモリにコピーに、画素毎にスキャンを行う。
第2の関連技術では、画素毎にスレッドが割り当てられ並列処理が行われるため、並列数が多く、GPUの並列可能数を有効に利用することができる。しかし、図8に示すように、一つの画素に対して、複数のスレッドでスキャンが行われる可能性があり、第1の関連技術と比べて、演算量と画素アクセス数が多い。
図9は、第1の関連技術および第2の関連技術における並列数を示す図である。図9は、第1の関連技術および第2の関連技術を用いて、4K(3840×2160)、FullHigh Definition(HD)(1920×1080)、HD(1280×720)の画像を変換した場合の行方向の処理と列方向の処理の並列数を示している。第1の関連技術における行方向の処理の並列数は、入力画像の行数であり、列方向の並列数は入力画像の列数である。第2の関連技術における行方向および列方向の並列数は、入力画像の行数×列数である。
例えば、使用するGPUのコア数が3584である場合、並列可能数は3584となる。この場合、第1の関連技術では、4Kの列方向の処理以外、並列可能数を有効に利用しないことになる。一方、第2の関連技術では、使用するGPUの並列可能数を有効に利用するが、上述のように、第1の関連技術と比べて、演算量および画素アクセス数が多い。
以下、図面を参照して、実施形態について説明する。図10は、実施形態における画像変換装置3の機能構成の一例を示す図である。画像変換装置3は、割り当て部31と、行方向スキャン部32と、行方向リダクション部35と、行方向合算部36と、列方向スキャン部37と、列方向リダクション部40と、列方向合算部41と、第1記憶部42と第2記憶部43とを含む。画像変換装置3は、コンピュータの一例である。画像変換装置3のプロセッサとしてGPUが用いられるとする。
割り当て部31は、入力画像内の行単位の画素値を複数の区間に分割し、各行の区間毎に、プロセッサが並列実行可能なスレッドを割り当てる。割り当て部31は、第1割り当て部および第2割り当て部の一例である。
行方向スキャン部32は、行Forwardスキャン部33と、行Backwardスキャン部34とを含む。行方向スキャン部32は、各行で割り当てられたスレッド毎に、入力画像の所定数値の画素からの距離を各行の区間において算出し、距離を示す値を格納した距離画像Bを生成する。また、行方向スキャン部32は、他の区間の所定数値の画素からの距離を示す境界値を算出する。なお、本実施形態では、所定数値の画素として0画素を用いる。行方向スキャン部32は、第1生成部の一例である。距離画像Bは、第1距離画像の一例である。
行Forwardスキャン部33は、入力画像に対して区間毎にForwardスキャンを行い入力画像内の0画素からの距離を区間毎に算出し、算出結果を距離画像Aの画素値として格納する。そして、行Forwardスキャン部33は、各区間の右端の画素値に1を加算した値をその区間の右境界値として格納する。行Forwardスキャン部33は、距離画像Aを行Backwardスキャン部34に出力し、右境界値を行方向リダクション部35に出力する。
行Backwardスキャン部34は、行Forwardスキャン部33から取得した距離画像Aの各区間内の画素に対してBackwardスキャンを行う。行Backwardスキャン部34は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Aとの画素値とのうち小さい値を、新たな距離画像Bの画素値として格納する。そして、行Backwardスキャン部34は、各区間の左端の画素値に1を加算した値をその区間の左境界値として格納する。行Backwardスキャン部34は、左境界値を行方向リダクション部35に出力し、距離画像Bを行方向合算部36に出力する。
行方向リダクション部35は、各行で割り当てられたスレッド毎に、各行の他の区間の0画素からの距離を示す第1境界値を、各行の他の区間における第1境界値の算出結果を用いて算出する。行方向リダクション部35は、例えば、各行の他の区間の第1境界値に他の区間から行内の所定区間までの距離を加算した値の最小値と、区間内の第1境界値とのうち小さい値を、行内の所定区間の新たな第1境界値として格納する。区間の第1境界値は、行内の所定区間の端の画素値に1を加算した値である。第1境界値は、例えば、右境界値または左境界値である。
具体的には、行方向リダクション部35は、例えば、他の区間(所定区間より左側の区間)の右境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の右境界値とのうち小さい値を、所定区間の新たな右境界値として格納する。また、行方向リダクション部35は、例えば、他の区間(所定区間より右側の区間)の左境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の左境界値とのうち小さい値を、所定区間の新たな左境界値として格納する。行方向リダクション部35は、第1算出部の一例である。
行方向合算部36は、各行で割り当てられたスレッド毎に、行Backwardスキャン部34から取得した距離画像内の値と、境界値(右境界値および左境界値)に基づいて算出した行全体をスコープとした0画素からの距離を示す値とのうち小さい値でその距離画像内の値を更新する。そして、行方向合算部36は、更新後の距離画像Eを出力する。行方向合算部36は、第1更新部の一例である。距離画像Eは、第2距離画像の一例である。
割り当て部31は、行方向合算部36が出力した距離画像E内の列単位の画素値を複数区間に分割し、各列の区間毎に、プロセッサが並列実行可能なスレッドを割り当てる。
列方向スキャン部37は、列Forwardスキャン部38と、列Backwardスキャン部39とを含む。列方向スキャン部37は、行方向合算部36が出力した距離画像Eを取得し、前記各列で割り当てられたスレッド毎に、距離画像Eにおける画素値に基づいて、所定数値の画素からの距離を示す値を各列の区間において算出し、算出した値を格納した距離画像Gを生成する。列方向スキャン部37は、第2生成部の一例である。距離画像Gは、第3距離画像の一例である。
列Forwardスキャン部38は、行方向合算部36から取得した距離画像Eの各区間内の画素に対してForwardスキャンを行う。列Forwardスキャン部38は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Eとの画素値とのうち小さい値を、新たな距離画像Fの画素値として格納する。そして、列Forwardスキャン部38は、各区間の下端の画素値に1を加算した値をその区間の下境界値として格納する。列Forwardスキャン部38は、距離画像Fを列Backwardスキャン部39に出力し、下境界値を列方向リダクション部40に出力する。
列Backwardスキャン部39は、列Forwardスキャン部38から取得した距離画像Fの各区間内の画素に対してBackwardスキャンを行う。列Backwardスキャン部39は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Fとの画素値とのうち小さい値を、新たな距離画像Gの画素値として格納する。そして、列Backwardスキャン部39は、各区間の上端の画素値に1を加算した値をその区間の上境界値として格納する。列Backwardスキャン部39は、距離画像Gを列方向合算部41に出力し、上境界値を列方向リダクション部40に出力する。
列方向リダクション部40は、各列で割り当てられたスレッド毎に、各列の他の区間の0画素からの距離を示す第2境界値を、各列の他の区間における第2境界値の算出結果を用いて算出する。列方向リダクション部40は、例えば、各列の他の区間の第2境界値に他の区間から列内の所定区間までの距離を加算した値の最小値と、区間内の第2境界値とのうち小さい値を、列内の所定区間の新たな第2境界値として格納する。この区間内の第2境界値は、列内の所定区間の端の画素値に1を加算した値である。第2境界値は、例えば、下境界値または上境界値である。
具体的には、列方向リダクション部40は、例えば、他の区間(所定区間より上側の区間)の下境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の下境界値とのうち小さい値を、所定区間の新たな下境界値として格納する。また、列方向リダクション部40は、例えば、他の区間(所定区間より下側の区間)の上境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の上境界値とのうち小さい値を、所定区間の新たな上境界値として格納する。列方向リダクション部40は、第2算出部の一例である。
列方向合算部41は、各列で割り当てられたスレッド毎に、列Backwardスキャン部39から取得した距離画像内の値と、境界値(下境界値および上境界値)に基づいて算出した0画素からの距離を示す値とのうち小さい値でその距離画像内の値を更新した距離画像Hを出力する。列方向合算部41は、例えば、画像変換装置3に接続された他の情報処理装置等に距離画像Hを送信してもよいし、表示装置に距離画像Hを送信して距離画像Hを表示してもよい。列方向合算部41は、第2更新部の一例である。
第1記憶部42は、例えば、GPU内のレジスタである。行方向リダクション部35および列方向リダクション部40の処理に用いられる各種データの記憶、スレッド間のデータの受け渡しには、第1記憶部42が用いられる。
第2記憶部43は、例えば、GPU内のシェアードメモリ、グローバルメモリ等、およびGPUの外部のメモリを含む。行方向リダクション部35および列方向リダクション部40以外の構成の処理に関する各種データ(距離画像、境界値等)の記憶、スレッド間のデータの受け渡しには、第2記憶部43が用いられる。
図11は、行方向スキャン処理の一例を示す図である。割り当て部31は、入力画像内の行単位の画素値を複数の区間に分割し、各行の区間毎にスレッドを割り当る。本実施形態では、割り当て部31は、入力画像の画素を32区間に分割する。ただし、区間数およびスレッド数は32でなくてもよい。図11では、区間xから区間x+5に関して実行される処理を示している。例えば、区間xに関する算出処理をスレッドxが実行する。また、各スレッドの処理は並列で行われる。
行Forwardスキャン部33は、入力画像に対して区間毎にForwardスキャンを行い入力画像内の0画素からの距離を区間毎に算出し、算出結果を距離画像の画素値として格納する。行Forwardスキャン部33は、入力画像においてスキャン対象画素よりも前に0画素が存在しない場合、不定値(∞)を距離画像Aの画素値として格納する。
例えば、行Forwardスキャン部33は、列番号0において、スキャン対象画素よりも前に0画素が存在しないため、∞を距離画像Aの画素値として格納する。行Forwardスキャン部33は、列番号1および2において、入力画像内が0画素であるため、距離画像Aの画素値として0を格納する。行Forwardスキャン部33は、列番号3において、入力画像内の0画素からの距離が1であるため、距離画像の画素値として1を格納する。すなわち、行Forwardスキャン部33は、第1の関連技術における第1行Forwardスキャン部11と同様の処理を区間毎に行う。
行Forwardスキャン部33は、同様に、区間毎にForwardスキャンを行い、距離画像Aの画素値を格納する。そして、行Forwardスキャン部33は、各区間の右端の画素値に1を加算した値をその区間の右境界値として格納する。
なお、行Forwardスキャン部33は、入力画像を読み込む際に、図8で示した例と同様に、入力画像を行単位でシェアードメモリに読み込み、シェアードメモリ上でスキャンを行ってもよい。
行Backwardスキャン部34は、行Forwardスキャン部33から取得した距離画像Aの各区間内の画素に対してBackwardスキャンを行う。行Backwardスキャン部34は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Aとの画素値とのうち小さい値を、新たな距離画像Bの画素値として格納する。すなわち、行Backwardスキャン部34は、第1の関連技術における第1行Backwardスキャン部12と同様の処理を区間毎に行う。
例えば、行Backwardスキャン部34は、列番号23において、スキャンの対象画素の直前にスキャンした画素の画素値が存在しないため、距離画像Aの画素値を新たな距離画像Bの画素値として格納する。行Backwardスキャン部34は、列番号22において、スキャンの対象画素の直前にスキャンした画素の画素値(2)に1を加算した値(3)と距離画像Aの画素値(1)とのうち小さい値である1を新たな距離画像Bの画素値として格納する。行Backwardスキャン部34は、列番号21において、スキャンの対象画素の直前にスキャンした画素の画素値(1)に1を加算した値(2)と距離画像Aの画素値(0)とのうち小さい値である0を新たな距離画像Bの画素値として格納する。
行Backwardスキャン部34は、列番号20において、スキャンの対象画素の直前にスキャンした画素の画素値(0)に1を加算した値(1)と距離画像Aの画素値(∞)とのうち小さい値である1を新たな距離画像の画素値として格納する。
行Backwardスキャン部34は、同様に、区間毎にBackwardスキャンを行い、距離画像Bの画素値を格納する。そして、行Backwardスキャン部34は、各区間の左端の画素値に1を加算した値をその区間の左境界値として格納する。
図12は、行方向リダクション部35における右境界値の算出例を示す図である。行方向リダクション部35は、他の区間(所定区間より左側の区間)の右境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の右境界値とのうち小さい値を、所定区間の新たな右境界値として格納する。
例えば、区間x+1に関して、行方向リダクション部35は、区間xの右境界値である2に距離4を加算した値である6と、現在の右境界値∞のうち小さい値である6を新たな右境界値として格納する。
図12に示す例では、行方向リダクション部35は、区間x+1の右境界値のみ更新しているが、他の区間に関しても同様の処理により右境界値を更新する。
図13は、行方向リダクション部35における左境界値の算出例を示す図である。行方向リダクション部35は、他の区間(所定区間より右側の区間)の左境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の左境界値とのうち小さい値を、所定区間の新たな左境界値として格納する。
例えば、区間x+1に関して、行方向リダクション部35は、区間x+2から区間x+31までの各左境界値に区間x+1までの距離を加算した値の最小値と、区間x+1の現在の左境界値とのうち小さい方を区間x+1の新たな左境界値とする。図13に示す例では、例えば、区間x+2の左境界値3に区間x+1までの距離4を加算した値「7」が、区間x+1における新たな左境界値として格納される。
図13では、区間x+1の左境界値の算出について示しているが、同様の処理が全区間に関して行われる。
図12および図13に示した処理について、各スレッドは、他の区間における境界値の算出結果を用いて、処理対象区間の境界値を算出することにより、計算回数を削減することができる。例えば、図13に示すように、区間x+1の左境界値の更新のために区間x+1から区間x+31までの30区間について「左境界値+距離」という計算が行われるが、一つのスレッドで30回の計算を行わなくてもよい。この計算回数の削減について、詳細は後述する。
図14および図15は、行方向リダクション部35の処理の一例を示す図である。図14および図15に示すように区間IDとスレッドIDに同一の数値が付与される。また、区間内の画素数をEとし、区間内の右境界値をR(n)(n:区間ID)とする。
行方向リダクション部35は、各スレッドにおいて、D(n)を∞で初期化する。なお、初期化に用いる値は、∞でなくてもよく、距離画像の要素として存在しない十分に大きい値であるとする。また、行方向リダクション部35は、各スレッドにおいて、右境界値R(n-1)+EをD(n)に代入する。以下、スレッド17の演算処理に関して詳細に説明する。
行方向リダクション部35は、演算処理1において、D17をmin(D17,D15+E×2)で更新する。よって、演算処理1の時点でD17の算出に区間16および区間14の算出結果が用いられている。
そして、行方向リダクション部35は、演算処理2において、D17をmin(D17,D13+E×4)で更新する。このD13は、スレッド13の演算処理1におけるmin(D13,D11+E×2)の算出結果である。このD13の算出結果には、区間12および10の算出結果が用いられている。よって、演算処理2の終了時点で、D17の算出に区間16,14,12,10の算出結果が用いられている。
そして、行方向リダクション部35は、演算処理3において、D17をmin(D17,D9+E×8)で更新する。このD9は、スレッド9の演算処理2におけるmin(D9,D5+E×4)の算出結果である。このD9の算出結果には、区間8,6,4,2の境界値が用いられている。よって、演算処理3の終了時点で、D17の算出に区間16,14,12,10,8,6,4,2の境界値が用いられている。
そして、行方向リダクション部35は、演算処理4において、D17をmin(D17,D1+E×16)で更新する。このD1は、スレッド1の演算処理3までの処理結果である。ただし、スレッド1において、演算処理1~3は行われていないが、初期設定においてD1にR0+Eが代入されている。よって、演算処理4の終了時点で、D17の算出に区間16,14,12,10,8,6,4,2,0の境界値が用いられている。
そして、行方向リダクション部35は、演算処理5において、D17をmin(D17,D16+E)-Eで更新する。このD16は、スレッド16の演算処理4までの処理結果である。このD16の算出結果には、区間15,13,11,9,7,5,3,1の境界値が用いられている。よって、演算処理5の終了時点で、D17の算出に区間16~0の境界値が用いられている。
なお、演算処理5において、図14、15に示すように演算処理5において「-E」を演算している。初期設定でR(n-1)+EをD(n)に代入しており、最後に「-E」を演算することで、演算処理5の算出結果であるD(n)は、更新後のR(n-1)に相当する。
演算処理1~5により、D17は、min(D16,D15+E,D14+E×2,D13+E×3,D12+E×4,...,D0+E×16)となる。すなわち、行全体をスコープとした右境界値であるD(n)が算出される。スレッド17の処理について説明したが、他のスレッドに関しても同様のアルゴリズムにより右境界値が算出される。
以上のように、行方向リダクション部35は、他の区間の右境界値に所定区間から他の区間までの距離を加算した値の最小値を用いて、所定区間の右境界値を更新する。図14および16に示すように、区間が32である場合、スレッド毎の演算処理は計5回となる。従って、行方向リダクション部35は、境界値を算出する際に、他の区間における境界値の算出結果を用いて算出することにより、少ない演算処理で境界値を算出することができる。なお、行方向リダクション部35の右境界値の更新について説明したが、左境界値に関しても同様に行われる。
なお、区間数およびスレッド数は32でなくてもよい。例えば、区間数をnとした場合演算回数はLog2(n)となる。
例えば、画像変換装置3のプロセッサにおいて、同じグループ内の複数スレッドが同一プログラムカウンタを共有可能であり、1グループ内に所定数のスレッドが割り当て可能であるとする。その場合、割り当て部31は、入力画像内の行単位の画素値を、その所定数の区間に分割し、区間毎にスレッドを割り当てる。また、割り当て部31は、距離画像E内の列単位の画素値をその所定数の区間に分割し、区間毎にスレッドを割り当てる。これにより、行方向リダクション部35および列方向リダクション部40は、スレッド間の同期処理をしなくてもよい。
画像変換装置3のプロセッサにおいて、スレッドが同じグループ内の他のスレッドの変数をレジスタ経由で参照可能であり、1グループ内に所定数のスレッドが割り当て可能であるとする。この場合、割り当て部31は、入力画像内の行単位の画素値を、その所定数の区間に分割し、各行の区間毎にスレッドを割り当てる。また、割り当て部31は、距離画像E内の列単位の画素値を、その所定数の区間に分割し、区間毎にスレッドを割り当てる。これにより、行方向リダクション部35および列方向リダクション部40は、高速に処理を行うことができる。
以下、行方向リダクション部35および列方向リダクション部40の処理について、さらに詳細に説明する。上述のように、割り当て部31は、入力した画像の行または列を抜き出し、その行または列を32区間に分ける。区間数は対象のCPUやGPUに応じて変更可能とする。1区間あたりの要素数はEとする。割り当て部31は、32区間に対して32スレッド割り当て、各区間が並列で動作する。各区間では、E個のForwardスキャン(左から右方向へ)、E個のBackwardスキャン(右から左方向へ)により、それぞれ右境界値、左境界値が確定する。これは区間内の右端要素からゼロ値を持つ要素への距離、区間内の左端要素からゼロ値を持つ要素への距離と等しい。各区間の右境界値をR(0)、R(1)、R(2)、…、R(31)とする。各区間の左境界値をL(0)、L(1)、L(2)、…、L(31)とする。
以下、行方向リダクション部35の基本の形について説明するが、列方向リダクション部40の処理も同様であるとする。行方向リダクション部35は、各区間の右境界値を使って、自区間を基準に左側の区間の中からゼロ値持つ区間を探し、その最短距離を確定する。同様に、各区間の左境界値を使って、自区間を基準に右側の区間の中からゼロ値を持つ区間を探し、その最短距離を確定する。例えば、区間31を自区間とした場合、L(0)、L(1)、L(2)、…、L(30)の中からゼロ値持つ区間を探し、区間31から最も近い距離のL(x)を求める。このとき、区間31からL(0)はE*30、L(1)はE*29、…L(30)はE*1離れているので、それを足した距離で最短距離を求める。
行方向リダクション部35は、32区間に対して32スレッド割り当て、各区間が並列で動作する。短い処理時間で求めるため、各スレッドのデータを共有しながら処理する。各区間の左側区間の最短距離を探す場合は、各スレッドがそれぞれ区間0、区間1、区間2、…、区間31を自区間として担当する。ここでは各スレッドで自区間をnとおき、次のように動作する。
図14、15に示した初期設定について説明する。行方向リダクション部35は、自区間nの1つ隣のR(n-1)を取得し、R(n-1)+EをD(n)へ代入する。Eを足すのは、自区間nと基準とした場合に1個隣の区間はE離れているためである。行方向リダクション部35は、以下の計算を並列で実行する。
D(0)=∞
D(1)=R(0)+E
D(2)=R(1)+E
(省略)
D(31)=R(30)+E
すなわち、行方向リダクション部35は、以下の式(3-1)を各スレッドで実行する。
D(n)=R(n-1)+E (3-1)
図14、15に示した演算処理1について説明する。行方向リダクション部35は、自区間nの2つ隣のD(n-2)を取得し、D(n-2)+E*2とD(n)のうち、最小値を選び、D(n)へ代入する。式(3-1)より、他スレッドが計算したD(n-2)には、R(n-3)+Eが入っている。自区間nからの距離に直すため、D(n-2)+E*2とする。
式(1)より、D(n)には、R(n-1)+Eが入っている。したがって、行方向リダクション部35は、以下の式(3-2)を各スレッドで実行する。
D(n)=Min[D(n-2)+E*2、D(n)]
=Min[R(n-3)+E*3、R(n-1)+E] (3-2)
図14、15に示した演算処理2について説明する。行方向リダクション部35は、自区間nの4個隣のD(n-4)を取得し、D(n-4)+E*4とD(n)のうち、最小値を選び、D(n)へ代入する。例えば、式(3-2)より、他スレッドが計算したD(n-4)には、Min[R(n-7)+E*3、R(n-5)+E]が入っている。行方向リダクション部35は、自区間nからの距離に直すため、比較対象をD(n-4)+E*4とする。
式(2-2)より、D(n)には、Min[R(n-3)+E*3、R(n-1)+E]が入っている。したがって、行方向リダクション部35は、以下の式(3-3)を各スレッドで実行する。
D(n)=Min[D(n-4)+E*4、D(n)]
=Min[Min[R(n-7)+E*7、R(n-5)+E*5]、Min[R(n-3)+E*3、R(n-1)+E]]
=Min[R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E] (3-3)
図14、15に示した演算処理3について説明する。行方向リダクション部35は、自区間nの8個隣のD(n-8)を取得し、D(n-8)+E*8とD(n)のうち、最小値を選び、D(n)へ代入する。式(3-3)より、他スレッドが計算したD(n-8)には、Min[R(n-15)+E*7、R(n-13)+E*5、R(n-11)+E*3、R(n-9)+E]が入っている。行方向リダクション部35は、自区間nからの距離に直すため、比較対象をD(n-8)+E*8とする。
式(3-3)より、D(n)には、Min[R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E]が入っている。したがって、行方向リダクション部35は、以下の式(3-4)を各スレッドで実行する。
D(n)=Min[D(n-8)+E*8、D(n)]
=Min[Min[R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9]、Min[R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E]]
=Min[R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9、R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E] 式(3-4)
図14、15に示した演算処理4について説明する。行方向リダクション部35は、自区間nの16個隣のD(n-16)を取得し、D(n-16)+E*16とD(n)のうち、最小値を選び、D(n)へ代入する。式(3-4)より、他スレッドが計算したD(n-16)には、Min[R(n-31)+E*15、R(n-29)+E*13、R(n-27)+E*11、R(n-25)+E*9、R(n-23)+E*7、R(n-21)+E*5、R(n-19)+E*3、R(n-17)+E]が入っている。自区間nからの距離に直すため、比較対象をD(n-16)+E*16とする。
式(3-4)より、D(n)には、Min[R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9、R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E]が入っている。したがって、したがって、行方向リダクション部35は、以下の式(3-5)を各スレッドで実行する。
D(n)=Min[D(n-16)+E*16、D(n)]
=Min[Min[R(n-31)+E*31、R(n-29)+E*29、R(n-27)+E*27、R(n-25)+E*25、R(n-23)+E*23、R(n-21)+E*21、R(n-19)+E*19、R(n-17)+E*17]、Min[R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9、R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E]]
=Min[R(n-31)+E*31、R(n-29)+E*29、R(n-27)+E*27、R(n-25)+E*25、R(n-23)+E*23、R(n-21)+E*21、R(n-19)+E*19、R(n-17)+E*17、R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9、R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E] (3-5)
図14、15に示した演算処理5について説明する。偶数区間の距離を考慮するため、行方向リダクション部35は、D(n-1)を取得し、D(n-1)+EとD(n)のうち、最小値を選び、D(n)へ代入する。式(3-5)より、D(n-1)には、Min[R(n-30)+E*29、R(n-28)+E*27、R(n-26)+E*25、R(n-24)+E*23、R(n-22)+E*21、R(n-20)+E*19、R(n-18)+E*17、R(n-16)+E*15、R(n-14)+E*13、R(n-12)+E*11、R(n-10)+E*9、R(n-8)+E*7、R(n-6)+E*5、R(n-4)+E*3、R(n-2)+E]が入っている。自区間nからの距離に直すため、比較対象をD(n-1)+E*1とする。
式(3-5)より、D(n)には、Min[R(n-31)+E*31、R(n-29)+E*29、R(n-27)+E*27、R(n-25)+E*25、R(n-23)+E*23、R(n-21)+E*21、R(n-19)+E*19、R(n-17)+E*17、R(n-15)+E*15、R(n-13)+E*13、R(n-11)+E*11、R(n-9)+E*9、R(n-7)+E*7、R(n-5)+E*5、R(n-3)+E*3、R(n-1)+E]
したがって、行方向リダクション部35は、以下の式(3-6)を各スレッドで実行する。D(n)=Min[D(n-1)+E、D(n)]-E
=Min[R(n-31)+E*31、R(n-30)+E*30、R(n-29)+E*29、R(n-28)+E*28、R(n-27)+E*27、R(n-26)+E*26、R(n-25)+E*25、R(n-24)+E*24、R(n-23)+E*23、R(n-22)+E*22、R(n-21)+E*21、R(n-20)+E*20、R(n-19)+E*19、R(n-18)+E*18、R(n-17)+E*17、R(n-16)+E*16、R(n-15)+E*15、R(n-14)+E*14、R(n-13)+E*13、R(n-12)+E*12、R(n-11)+E*11、R(n-10)+E*10、R(n-9)+E*9、R(n-8)+E*8、R(n-7)+E*7、R(n-6)+E*6、R(n-5)+E*5、R(n-4)+E*4、R(n-3)+E*3、R(n-2)+E*2、R(n-1)+E]-E (3-6)
演算処理4までは、隣の区間を基準とした演算であったため、最後に-Eをすることにより、自区間nの左端を基準とした値にする。
図16は、行方向合算部36の処理の一例を示す図である。図16における入力画像、距離画像Bは、図11に示す内容と同じである。右境界値は、図12に示す内容と同じであり、左境界値は、図13に示す内容と同じである。
行方向合算部36は、右境界値に基づいて、他の区間の0画素からの距離を示す距離画像Cを生成する。行方向合算部36は、所定区間の右境界値を、所定区間の右の区間の左端の画素に格納し、左端の数値から連続した値を各画素に格納する。図16に示すように、例えば、距離画像Cの区間x+1の画素は、(区間xの右境界値、区間xの右境界値+1、区間xの右境界値+2、区間xの右境界値+3)となる。
同様に、行方向合算部36は、左境界値に基づいて、他の区間の0画素からの距離を示す距離画像Dを生成する。行方向合算部36は、所定区間の左境界値を、所定区間の左の区間の右端の画素に格納し、左端の数値から連続した値を各画素に格納する。図16に示すように、例えば、区間xの画素は、(区間x+1の左境界値+3、区間x+1の左境界値+2、区間x+1の左境界値+1、区間x+1の左境界値)となる。
行方向合算部36は、距離画像B,C,Dの各画素の最小値を更新後の距離画像Eとして出力する。
図17は、列Forwardスキャン処理の一例を示す図である。列Forwardスキャン部38は、行方向合算部36から出力された距離画像Eを取得し、列Forwardスキャンを行い、距離画像Eを更新する。
列Forwardスキャン部38は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と、距離画像Eの画素値とのうち小さい値を、新たな距離画像の画素値として格納する。例えば、行番号0において、列Forwardスキャン部38は、直前にスキャンした画素が存在しないため、距離画像Eの画素値を、そのまま新たな距離画像Fの画素値として格納する。行番号1において、列Forwardスキャン部38は、直前にスキャンした画素の画素値(1)に1を加算した値(2)と距離画像Eの画素値(0)のうち、小さいほうの値(0)を新たな距離画像Fの画素値として格納する。
行番号2において、列Forwardスキャン部38は、直前にスキャンした画素の画素値(0)に1を加算した値(1)と距離画像Eの画素値(4)のうち、小さいほうの値(1)を新たな距離画像Fの画素値として格納する。行番号3において、列Forwardスキャン部38は、直前にスキャンした画素の画素値(1)に1を加算した値(2)と距離画像Eの画素値(3)とのうち小さい値である2を新たな距離画像の画素値として格納する。
列Forwardスキャン部38は、各区間において同様の処理を行い、距離画像Eを更新し、更新後の距離画像Fを出力する。そして、列Forwardスキャン部38は、各区間の下端の画素値に1を加算した値をその区間の下境界値として格納する。
図18は、列Backwardスキャン処理の一例を示す図である。列Backwardスキャン部39は、列Forwardスキャン部38が出力した距離画像Fを取得し、列Backwardスキャンを行い、距離画像Fを更新する。
列Backwardスキャン部39は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と、距離画像Fの画素値とのうち小さい値を、新たな距離画像Gの画素値として格納する。行番号127において、列Backwardスキャン部39は、直前にスキャンした画素が存在しないため、距離画像Fの画素値を、そのまま新たな距離画像Gの画素値として格納する。行番号126において、列Backwardスキャン部39は、直前にスキャンした画素の画素値(1)に1を加算した値(2)と距離画像Fの画素値(0)のうち、小さいほうの値(0)を新たな距離画像Gの画素値として格納する。
行番号125において、列Backwardスキャン部39は、直前にスキャンした画素の画素値(0)に1を加算した値(1)と距離画像Fの画素値(4)のうち、小さいほうの値(1)を新たな距離画像Gの画素値として格納する。行番号124において、列Backwardスキャン部39は、直前にスキャンした画素の画素値(1)に1を加算した値(2)と距離画像Fの画素値(3)とのうち小さい値である2を新たな距離画像の画素値として格納する。
列Backwardスキャン部39は、各区間において同様の処理を行い、列Forwardスキャン部38が出力した距離画像Fを更新し、更新後の距離画像Gを出力する。そして、列Backwardスキャン部39は、各区間の上端の画素値に1を加算した値をその区間の上境界値として格納する。
列方向リダクション部40は、列Forwardスキャン部38から下境界値を取得する。そして、列方向リダクション部40は、他の区間(所定区間より上側の区間)の下境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の下境界値とのうち小さい値を、所定区間の新たな下境界値として格納する。
また、列方向リダクション部40は、列Backwardスキャン部39から上境界値を取得する。そして、列方向リダクション部40は、他の区間(所定区間より下側の区間)の上境界値に他の区間から所定区間までの距離を加算した値の最小値と、所定区間の現在の上境界値とのうち小さい値を、所定区間の新たな上境界値として格納する。列方向リダクション部40の処理は、図14および図15に示した行方向リダクション部35の処理と方向が異なる以外は同様である。
なお、列Forwardスキャン部38および列Backwardスキャン部39は、スキャンを行う前に、距離画像の行と列を入れ替える転置処理を行ってからスキャン処理を行ってもよい。プロセッサは、処理対象の画素がアドレス順に並んでいた場合に、高速に処理を行うことができる。そのため、アドレスが行方向に連続して付与されている場合、列Forwardスキャン部38および列Backwardスキャン部39は、距離画像を転置してからスキャン処理を行うことにより、処理を高速に行うことができる。例えば、行方向合算部36が、列方向スキャン部37に距離画像Eを出力する前に距離画像Eを転置してもよい。
図19は、実施形態の行方向の処理の一例を示すフローチャートである。図19に示すように、画像変換装置3は、ステップS101の処理を、行毎に並列で実行する。また、ステップS102~S107の処理に関して、各行の各区間にスレッドが割り当てられ、各スレッドが並列で実行する。すなわち、ステップS102~S107について、行数M×区間数32のスレッドが並列で動作する。
割り当て部31は、入力画像のx行目を読み込み、入力画像内の行単位の画素値を32区間に分割し、区間毎にスレッドを割り当てる(ステップS101)。
行Forwardスキャン部33は、入力画像に対して区間毎にForwardスキャンを行い入力画像内の0画素からの距離を区間毎に算出し、算出結果を格納した距離画像Aを生成する(ステップS102)。そして、行Forwardスキャン部33は、区間iの右端の画素値に1を加算した値を区間iの右境界値として格納する(ステップS103)。
行Backwardスキャン部34は、距離画像Aに行Backwardスキャンを行う。そして、行Backwardスキャン部34は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Aとの画素値とのうち小さい値で距離画像Aを距離画像Bに更新する(ステップS104)。そして、行Backwardスキャン部34は、区間iの左端の画素値に1を加算した値を区間iの左境界値として格納する(ステップS105)。
行方向リダクション部35は、他の区間の0画素からの距離を示す右境界値および左境界値を、他の区間における右境界値および左境界値の算出結果を用いて算出し、更新する(ステップS106)。
行方向合算部36は、行Backwardスキャン部34から取得した距離画像B内の値と、境界値(右境界値および左境界値)に基づいて算出した0画素からの距離のうち小さい値で距離画像B内の値を更新した距離画像Eを出力する(ステップS107)。
図20は、実施形態の列方向の処理の一例を示すフローチャートである。図20に示すように、画像変換装置3は、ステップS201の処理を、列毎に並列で実行する。また、ステップS202~S207の処理に関して、各列の各区間にスレッドが割り当てられ、各スレッドが並列で実行する。すなわち、ステップS202~S207について、列数N×区間数32のスレッドが並列で動作する。
割り当て部31は、入力画像のy列目を読み込み、入力画像内の列単位の画素値を32区間に分割し、区間毎にスレッドを割り当てる(ステップS201)。
列Forwardスキャン部38は、行方向合算部36が出力した距離画像Eに対して区間毎にForwardスキャンを行い、距離画像を更新する(ステップS202)。列Forwardスキャン部38は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Eとの画素値とのうち小さい値を、新たな距離画像Fの画素値として格納する。
そして、列Forwardスキャン部38は、区間iの下端の画素値に1を加算した値を区間iの下境界値として格納する(ステップS203)。
列Backwardスキャン部39は、距離画像Fに列Backwardスキャンを行う。そして、列Backwardスキャン部39は、スキャンの対象画素の直前にスキャンした画素の画素値に1を加算した値と距離画像Fとの画素値とのうち小さい値で距離画像Fを距離画像Gに更新する(ステップS204)。そして、列Backwardスキャン部39は、区間iの上端の画素値に1を加算した値を区間iの上境界値として格納する(ステップS205)。
列方向リダクション部40は、他の区間の0画素からの距離を示す下境界値および上境界値を、他の区間における下境界値および上境界値の算出結果を用いて算出し、更新する(ステップS206)。
列方向合算部41は、列Backwardスキャン部39から取得した距離画像G内の値と、境界値(下境界値および上境界値)に基づいて算出した0画素からの距離のうち小さい値で距離画像G内の値を更新した距離画像Hを出力する(ステップS207)。
図21は、第1の関連技術、第2の関連技術および実施形態における並列数を示す図である。図21は、第1の関連技術、第2の関連技術および実施形態の処理を用いて、4K(3840×2160)、FullHD(1920×1080)、HD(1280×720)の画像を変換した場合の行方向の処理と列方向の処理の並列数を示している。
例えば、実施形態の行方向処理を実行する場合、図19に示したように、行毎に32スレッドで並列処理が行われるため、行数×32が並列数となる。また、実施形態の列方向処理を実行する場合、図20に示したように、列毎に32スレッドで並列処理が行われるため、列数×32が並列数となる。
図21に示すように実施形態の処理を用いた場合、関連技術1よりも並列数が多い。また、上述のようにスレッドと区間が対応しており、一つの画素に対して複数のスレッドでアクセスを行うことがない。よって、関連技術2と比べて画素アクセス量、演算量が少ない。従って、画像変換装置3は、少ないアクセス量で並列可能数を有効に使用した画像変換を実行することができる。
次に、画像変換装置3のハードウェア構成の一例を説明する。図22は、画像変換装置3のハードウェア構成の一例を示す図である。図22の例に示すように、画像変換装置3において、バス100に、プロセッサ111とメモリ112と補助記憶装置113と通信インタフェース114と媒体接続部115と入力装置116と出力装置117とが接続される。
プロセッサ111は、メモリ112に展開されたプログラムを実行する。実行されるプログラムには、実施形態における処理を行う画像変換プログラムが適用されてもよい。プロセッサ111は、例えば、複数のコアを有するGPUまたはCPUである。図10の第1記憶部42は、例えば、プロセッサ111内のレジスタが適用される。第2記憶部43は、例えば、プロセッサ111内のシェアードメモリ、グローバルメモリ等が適用される。
メモリ112は、例えば、Random Access Memory(RAM)である。補助記憶装置113は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。補助記憶装置113に実施形態の処理を行う画像変換プログラムが記憶されていてもよい。
通信インタフェース114は、Local Area Network(LAN)、Wide Area Network(WAN)等の通信ネットワークに接続され、通信に伴うデータ変換等を行う。
媒体接続部115は、可搬型記録媒体118が接続可能なインタフェースである。可搬型記録媒体118には、光学式ディスク(例えば、Compact Disc(CD)またはDigital Versatile Disc(DVD))、半導体メモリ等が適用されてもよい。可搬型記録媒体118に実施形態の処理を行う画像変換プログラムが記録されていてもよい。
入力装置116は、例えば、キーボード、ポインティングデバイス等であり、ユーザからの指示及び情報等の入力を受け付ける。
出力装置117は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザへの問い合わせ又は指示、及び処理結果等を出力する。出力装置117は、例えば、列方向合算部41が出力する距離画像Hを表示する。
図10に示す第2記憶部43は、メモリ112、補助記憶装置113または可搬型記録媒体118等により実現されてもよい。図10に示す割り当て部31、行方向スキャン部32、行方向リダクション部35、行方向合算部36、列方向スキャン部37、列方向リダクション部40、列方向合算部41は、メモリ112に展開された画像変換プログラムをプロセッサ111が実行することにより実現されてもよい。
メモリ112、補助記憶装置113および可搬型記録媒体118は、コンピュータが読み取り可能であって非一時的な有形の記憶媒体であり、信号搬送波のような一時的な媒体ではない。
なお、画像変換装置3が図22に示す全ての構成要素を含んでいなくてもよく、一部の構成要素が省略されていてもよい。また、一部の構成要素が画像変換装置3の外部装置に存在し、画像変換装置3が外部装置に接続して、外部装置内の構成要素を利用してもよい。
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で様々な変更、追加、省略が適用可能である。
1,2,3 画像変換装置
11 第1行Forwardスキャン部
12 第1行Backwardスキャン部
13 第1列Forwardスキャン部
14 第1列Backwardスキャン部
21 第2行Forwardスキャン部
22 第2行Backwardスキャン部
23 第2列Forwardスキャン部
24 第2列Backwardスキャン部
31 割り当て部
32 行方向スキャン部
33 行Forwardスキャン部
34 行Backwardスキャン部
35 行方向リダクション部
36 行方向合算部
37 列方向スキャン部
38 列Forwardスキャン部
39 列Backwardスキャン部
40 列方向リダクション部
41 列方向合算部
42 第1記憶部
43 第2記憶部
100 バス
111 プロセッサ
112 メモリ
113 補助記憶装置
114 通信インタフェース
115 媒体接続部
116 入力装置
117 出力装置
118 可搬型記録媒体

Claims (6)

  1. 入力画像内の行単位の画素値を複数の区間に分割し、各行の前記区間毎に、プロセッサが並列実行可能なスレッドを割り当てる第1割り当て部と、
    前記各行で割り当てられたスレッド毎に、前記区間内の所定数値の画素からの距離のうち最小の距離を前記各行の区間において算出し、前記最小の距離を示す値を格納した第1距離画像を生成する第1生成部と、
    前記各行で割り当てられたスレッド毎に、前記各行の所定区間より左側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記左側の区間における前記境界値の算出結果を用いて算出し、前記各行の所定区間より右側の区間の所定数値の画素からの距離のうち最小の距離を示す左境界値を、前記右側の区間における前記左境界値の算出結果を用いて算出する第1算出部と、
    前記各行で割り当てられたスレッド毎に、前記第1距離画像内の値と、前記境界値及び前記左境界値に基づいて算出した行全体をスコープとした所定数値の画素からの距離を示す値とのうち小さい値で前記第1距離画像内の値を更新した第2距離画像を出力する第1更新部と、
    前記第2距離画像内の列単位の画素値を複数区間に分割し、各列の前記区間毎に前記プロセッサが並列実行可能なスレッドを割り当てる第2割り当て部と、
    前記各列で割り当てられたスレッド毎に、前記第2距離画像における画素値に基づいて、各列の前記区間内の所定数値の画素からの距離のうち最小の距離を示す値を前記各列の区間において算出し、算出した値を格納した第3距離画像を生成する第2生成部と、
    前記各列で割り当てられたスレッド毎に、前記各列の所定区間より上側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記上側の区間における前記境界値の算出結果を用いて算出し、前記各列の所定区間より下側の区間の所定数値の画素からの距離のうち最小の距離を示す上境界値を、前記下側の区間における前記上境界値の算出結果を用いて算出する第2算出部と、
    前記各列で割り当てられたスレッド毎に、前記第3距離画像内の値と、前記境界値及び前記上境界値に基づいて算出した所定数値の画素からの距離を示す値とのうち小さい値で前記第3距離画像内の値を更新する第2更新部と、
    を備えることを特徴とする画像変換装置。
  2. 前記第1算出部は、前記左側の区間における右境界値に前記左側の区間から行内の所定区間までの距離を加算した値の最小値と、前記行内の所定区間の端の画素値に1を加算した値とのうち小さい値を、前記所定区間の境界値として格納し、前記右側の区間における左境界値に前記右側の区間から行内の所定区間までの距離を加算した値の最小値と、前記行内の所定区間の左端の画素値に1を加算した値とのうち小さい値を、前記所定区間の左境界値として格納し、
    前記第2算出部は、前記上側の区間における下境界値に前記上側の区間から列内の所定区間までの距離を加算した値の最小値と、前記列内の所定区間の端の画素値に1を加算した値とのうち小さい値を、前記列内の所定区間の新たな境界値として格納し、前記下側の区間における上境界値に前記下側の区間から列内の所定区間までの距離を加算した値の最小値と、前記列内の所定区間の上端の画素値に1を加算した値とのうち小さい値を、前記列内の所定区間の新たな上境界値として格納する、
    ことを特徴とする請求項1記載の画像変換装置。
  3. 前記画像変換装置のプロセッサにおいて、同じグループ内の複数のスレッドが同一カウンタを共有可能であり、1グループ内に所定数のスレッドが割り当て可能であり、
    前記第1割り当て部は、前記入力画像内の行単位の画素値を、前記所定数の区間に分割し、前記各行の区間毎にスレッドを割り当て、
    前記第2割り当て部は、前記第2距離画像内の列単位の画素値を前記所定数の区間に分割し、前記各列の区間毎にスレッドを割り当てる
    ことを特徴とする請求項1または請求項2記載の画像変換装置。
  4. 前記画像変換装置のプロセッサにおいて、スレッドが同じグループ内の他のスレッドの変数をレジスタ経由で参照可能であり、1グループ内に所定数のスレッドが割り当て可能であり、
    前記第1割り当て部は、前記入力画像内の行単位の画素値を、前記所定数の区間に分割し、前記各行の区間毎にスレッドを割り当て、
    前記第2割り当て部は、前記第2距離画像内の列単位の画素値を前記所定数の区間に分割し、前記各行の区間毎にスレッドを割り当てる
    ことを特徴とする請求項1または請求項2記載の画像変換装置。
  5. 入力画像内の行単位の画素値を複数の区間に分割し、各行の前記区間毎に、プロセッサが並列実行可能なスレッドを割り当て、
    前記各行で割り当てられたスレッド毎に、前記区間内の所定数値の画素からの距離のうち最小の距離を前記各行の区間において算出し、前記最小の距離を示す値を格納した第1距離画像を生成し、
    前記各行で割り当てられたスレッド毎に、前記各行の所定区間より左側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記左側の区間における前記境界値の算出結果を用いて算出し、前記各行の所定区間より右側の区間の所定数値の画素からの距離のうち最小の距離を示す左境界値を、前記右側の区間における前記左境界値の算出結果を用いて算出し、
    前記各行で割り当てられたスレッド毎に、前記第1距離画像内の値と、前記境界値及び前記左境界値に基づいて算出した行全体をスコープとした所定数値の画素からの距離を示す値とのうち小さい値で前記第1距離画像内の値を更新した第2距離画像を出力し、
    前記第2距離画像内の列単位の画素値を複数区間に分割し、各列の前記区間毎に前記プロセッサが並列実行可能なスレッドを割り当て、
    前記各列で割り当てられたスレッド毎に、前記第2距離画像における画素値に基づいて、各列の前記区間内の所定数値の画素からの距離のうち最小の距離を示す値を前記各列の区間において算出し、算出した値を格納した第3距離画像を生成し、
    前記各列で割り当てられたスレッド毎に、前記各列の所定区間より上側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記上側の区間における前記境界値の算出結果を用いて算出し、前記各列の所定区間より下側の区間の所定数値の画素からの距離のうち最小の距離を示す上境界値を、前記下側の区間における前記上境界値の算出結果を用いて算出し、
    前記各列で割り当てられたスレッド毎に、前記第3距離画像内の値と、前記境界値及び前記上境界値に基づいて算出した所定数値の画素からの距離を示す値とのうち小さい値で前記第3距離画像内の値を更新する
    処理をコンピュータに実行させるための画像変換プログラム。
  6. コンピュータが、
    入力画像内の行単位の画素値を複数の区間に分割し、各行の前記区間毎に、プロセッサが並列実行可能なスレッドを割り当て、
    前記各行で割り当てられたスレッド毎に、前記区間内の所定数値の画素からの距離のうち最小の距離を前記各行の区間において算出し、前記最小の距離を示す値を格納した第1距離画像を生成し、
    前記各行で割り当てられたスレッド毎に、前記各行の所定区間より左側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記左側の区間における前記境界値の算出結果を用いて算出し、前記各行の所定区間より右側の区間の所定数値の画素からの距離のうち最小の距離を示す左境界値を、前記右側の区間における前記左境界値の算出結果を用いて算出し、
    前記各行で割り当てられたスレッド毎に、前記第1距離画像内の値と、前記境界値及び前記左境界値に基づいて算出した行全体をスコープとした所定数値の画素からの距離を示す値とのうち小さい値で前記第1距離画像内の値を更新した第2距離画像を出力し、
    前記第2距離画像内の列単位の画素値を複数区間に分割し、各列の前記区間毎に前記プロセッサが並列実行可能なスレッドを割り当て、
    前記各列で割り当てられたスレッド毎に、前記第2距離画像における画素値に基づいて、各列の前記区間内の所定数値の画素からの距離のうち最小の距離を示す値を前記各列の区間において算出し、算出した値を格納した第3距離画像を生成し、
    前記各列で割り当てられたスレッド毎に、前記各列の所定区間より上側の区間の所定数値の画素からの距離のうち最小の距離を示す境界値を、前記上側の区間における前記境界値の算出結果を用いて算出し、前記各列の所定区間より下側の区間の所定数値の画素からの距離のうち最小の距離を示す上境界値を、前記下側の区間における前記上境界値の算出結果を用いて算出し、
    前記各列で割り当てられたスレッド毎に、前記第3距離画像内の値と、前記境界値及び前記上境界値に基づいて算出した所定数値の画素からの距離を示す値とのうち小さい値で前記第3距離画像内の値を更新する
    処理を実行することを特徴とする画像変換方法。
JP2018230109A 2018-12-07 2018-12-07 画像変換装置、画像変換プログラム、および画像変換方法 Active JP7138032B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018230109A JP7138032B2 (ja) 2018-12-07 2018-12-07 画像変換装置、画像変換プログラム、および画像変換方法
US16/693,443 US11222393B2 (en) 2018-12-07 2019-11-25 Information processing apparatus, computer-readable recording medium recording image conversion program, and image conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018230109A JP7138032B2 (ja) 2018-12-07 2018-12-07 画像変換装置、画像変換プログラム、および画像変換方法

Publications (2)

Publication Number Publication Date
JP2020091799A JP2020091799A (ja) 2020-06-11
JP7138032B2 true JP7138032B2 (ja) 2022-09-15

Family

ID=70970980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018230109A Active JP7138032B2 (ja) 2018-12-07 2018-12-07 画像変換装置、画像変換プログラム、および画像変換方法

Country Status (2)

Country Link
US (1) US11222393B2 (ja)
JP (1) JP7138032B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115223031B (zh) * 2022-09-20 2022-12-20 凌度(广东)智能科技发展有限公司 一种单目边框测距方法、装置、介质及幕墙机器人

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110141121A1 (en) 2009-12-11 2011-06-16 Microsoft Corporation Parallel Processing for Distance Transforms
JP2015111353A (ja) 2013-12-06 2015-06-18 ヤマハ株式会社 画像処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5120926B2 (ja) 2007-07-27 2013-01-16 有限会社テクノドリーム二十一 画像処理装置、画像処理方法およびプログラム
JP5505164B2 (ja) * 2010-07-23 2014-05-28 ソニー株式会社 画像処理装置および方法、並びにプログラム
JP6118699B2 (ja) 2013-09-30 2017-04-19 株式会社Ihi 画像解析装置及びプログラム
CN110473139B (zh) * 2018-05-11 2022-10-28 台达电子工业股份有限公司 利用双向扫描的影像距离转换装置及其方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110141121A1 (en) 2009-12-11 2011-06-16 Microsoft Corporation Parallel Processing for Distance Transforms
JP2015111353A (ja) 2013-12-06 2015-06-18 ヤマハ株式会社 画像処理装置

Also Published As

Publication number Publication date
JP2020091799A (ja) 2020-06-11
US11222393B2 (en) 2022-01-11
US20200184593A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
JP5183392B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP4747219B2 (ja) 画像処理装置、画像処理方法
JP2015197702A (ja) 情報処理装置、情報処理方法
CN114037063A (zh) 网络模型处理方法、装置、设备、存储介质
JP7138032B2 (ja) 画像変換装置、画像変換プログラム、および画像変換方法
WO2019053835A1 (ja) 演算回路、演算方法、およびプログラム
JPWO2017163441A1 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP2009169925A (ja) 画像検索装置および画像検索方法
JP2006157252A (ja) データ分類方法、多次元補間装置、多次元補間方法、及びコンピュータプログラム
JP4975651B2 (ja) 色変換装置
JP6210953B2 (ja) 画像処理装置および画像処理方法
JP2017182480A (ja) 画像処理装置および画像処理方法
JP2008259177A (ja) 色変換装置、色変換方法、色変換プログラム
US20220188382A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
JP2007293863A (ja) データレベル並行性を使用する四面体補間計算のための方法
CN111881916B (zh) 一种文字定位方法、装置及设备
US11393068B2 (en) Methods and apparatus for efficient interpolation
KR101418524B1 (ko) 하드웨어 장치 및 적분 이미지 생성 방법
JP6361195B2 (ja) 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体
JP5267147B2 (ja) 画像処理装置、画像処理方法、及び、コンピュータプログラム
JP4810615B2 (ja) 多次元補間装置、多次元補間方法、及びコンピュータプログラム
WO2023166958A1 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JPWO2019082283A1 (ja) 画像解析装置
CN112258543B (zh) 基于neqr表达的量子图像自适应分割方法
JP2009122841A (ja) 画像一覧イメージ構築装置、記録媒体及び画像形成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220805

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220805

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220905

R150 Certificate of patent or registration of utility model

Ref document number: 7138032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150