JP2014160516A - 画像処理装置及び画像処理方法 - Google Patents

画像処理装置及び画像処理方法 Download PDF

Info

Publication number
JP2014160516A
JP2014160516A JP2014118297A JP2014118297A JP2014160516A JP 2014160516 A JP2014160516 A JP 2014160516A JP 2014118297 A JP2014118297 A JP 2014118297A JP 2014118297 A JP2014118297 A JP 2014118297A JP 2014160516 A JP2014160516 A JP 2014160516A
Authority
JP
Japan
Prior art keywords
image processing
image
parallel
memory
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014118297A
Other languages
English (en)
Inventor
Masatoshi Ishikawa
正俊 石川
Takashi Komuro
孝 小室
Tomohiro Tabata
友啓 田畑
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.)
University of Tokyo NUC
Original Assignee
University of Tokyo NUC
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 University of Tokyo NUC filed Critical University of Tokyo NUC
Priority to JP2014118297A priority Critical patent/JP2014160516A/ja
Publication of JP2014160516A publication Critical patent/JP2014160516A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

【課題】画像処理のための特定の関数に対応する複数の画像処理部をプログラムによって指定して動作させることによって、画像処理の高速化を図る。
【解決手段】フレームメモリ21…は、処理されるべき画像データを格納する。並列メモリ121…は、フレームメモリ21…に格納された画像データの全部又は一部を受け取って、画像処理用のDMAC111…又は処理ユニット13A…のいずれかに送る。処理ユニット13A…は、画像処理のための関数に対応した機能を有している。処理ユニット13A…は、CPU3からの指令に従って、並列メモリ121…又はフレームメモリ21…から、画像データの全部又は一部を受け取り、さらに、画像データの全部又は一部に対して、画像処理のための関数に従った処理を行う。
【選択図】図1

Description

本発明は、画像の高速処理に適した装置及び方法に関するものである。
従来のマシンビジョン及びロボットビジョンの多くにおいては、人間の視覚特性を元に定められたビデオフレームレート(24〜60fps)を上限としたフレームレートが用いられてきた。それに対し、ビデオフレームレートを大幅に超える、1000fpsオーダーの高フレームレートカメラを用いたリアルタイムビジョン(以下、高速ビジョンと呼ぶ)の研究が行われている。
例えば、高速ビジョンを用いることで、安定した視覚フィードバック制御が可能となることから、高速ビジョンは、高速な動作が必要なロボットの制御に応用されている(下記非特許文献1〜5)。
また、高速ビジョンは、速い動きを計測できることから、生体観察(下記非特許文献6及び7)や、モーションキャプチャ(下記非特許文献8)、流体計測(下記非特許文献9)などにも応用されている。
このほか、トラッキング(下記非特許文献10及び11)、三次元計測(下記非特許文献12及び13)、画像合成(下記非特許文献14及び15)、オプティカルフロー推定(下記非特許文献16)など、一般的な画像処理の性能向上に高速ビジョンを利用した研究もある。
このような高いフレームレートの動画像をリアルタイムに扱うには、高い演算性能が必要となる。近年のコンピュータの飛躍的な性能向上により、PCを用いたシステムでも、ある程度までの性能を出すことはできるが、PCは安定性や信頼性に欠けるという問題がある。したがって、実用的な高速ビジョンを実現するためには、組み込みシステムを用いることが望ましいと考えられる。組み込みシステムを用いることで、ハードウェア構成を使用目的に合わせて最適化でき、システムの小型化にもつながる。
一方、通常の組み込みシステムで用いられるCPUは、PCのそれに比べて非力なため、コプロセッサによる画像処理のアクセラレーションが必須となる。これまでに開発された高速ビジョンシステムは、SIMD型の超並列プロセッサを採用したり(下記非特許文献10)、ハードウェア構成を書き換えることができるLSIであるFPGA(Field Programmable Gate Array)に専用回路を実装したり(下記非特許文献17及び18)して、演算の高速化を図っている。
SIMD型の超並列プロセッサは、多くの画素に対して均一に処理を行う場合において、きわめて高い性能が実現できる(下記非特許文献19〜22)。しかし、画像の一部に対して処理を行う場合には、必ずしもすべての処理要素(PE)を有効に活用できない。高速ビジョンを用いた多くのアプリケーションでは、画像全体に対する処理よりも、トラッキングなどの局所領域に対する処理を高速に行う必要があり、小領域の計算が中心となるため、この問題は深刻である。
また、多くの場合、PE間のデータ転送は隣接PEとの間のみ可能となっており、拡大・縮小や回転などの幾何変換を効率よく実装することが難しい。したがって、実装できるアルゴリズムが制限されてしまう。
このほか、イメージセンサの撮像面上で演算処理を行うfocal plane processorも、高フレームレート処理に向いているといえるが、回路面積に対する制約から、多くは特定の処理に特化して作られている。汎用の演算を行うものも開発されている(下記非特許文献23〜26)が、上のSIMD型の超並列プロセッサと同様の問題を抱えている。
またDSPを画像処理に利用することも考えられる。近年ではVLIW(Very Long Instruction Word)やマルチコアなどの並列処理技術を採用したDSPが登場しており、高速処理が可能となっている(下記非特許文献27及び28)。しかし、VLIWを用いたアーキテクチャにおいては、アルゴリズムの並列化が主にコンパイラによって自動的に行われるため、命令の実行に要する時間があらかじめ予測できかったり、あるいは、予期しない理由によって実行速度が低下したりすることがある。
それに対し、ASICやFPGAはアルゴリズムが持つ並列性をそのままハードウェアに実装できるので、並列化の効率が高く、処理を最適化しやすい。特にハードウェア構成を書き換え可能なLSIであるFPGAは、プロトタイプや少量生産に向いている。一方、FPGAを用いたシステムは、アルゴリズムを変更しようとする毎にHDL(Hardware Description Language)による回路設計が必要となり、開発コストが高いという問題がある。
それに対し、FPGAのリコンフィギャラビリティ(reconfigurability)を用いて、汎用CPUのインストラクションセットをカスタマイズすることができるシステムも提案されている(下記非特許文献29)。このシステムでは、CPUの持つソフトウェア開発の容易性とFPGAのリコンフィギャラビリティが両立されており、ユーザーの回路設計の負担を必要最低限にできる。しかし、このシステムでは、CPUはあらかじめ用意されたものしか利用できず、商用の開発ツールやミドルウェア、ソフトウェア資産などを最大限に活用することができない。
本発明者らの知見によれば、割り込みやマルチタスクなどによる性能低下を考えると、CPUとFPGAは極力分離し、FPGAが自律的に動作するほうが望ましい。また、画像処理に必要とされる並列処理や並列データアクセス、高速データ転送の仕組みがあらかじめ用意されていることが望ましい。
[1] A. Namiki, Y. Nakabo, I. Ishii, and M. Ishikawa, "1ms sensory-motor fusion system," IEEE Transactions on Mechatoronics, Vol. 5, No. 3, pp. 244-252, 2000. [2] Y. Nakamura, K. Kishi, and H. Kawakami, "Heartbeat synchronization for robotic cardiac surgery," Proc. IEEE International Conference on Robotics and Automation, pp. 2014-2019, 2001. [3] R. Ginhoux, J. Gangloff, M. de Mathelin, L. Soler, M. Sanchez, and J. Marescaux, "Beating heart tracking in robotic surgery using 500 Hz visual servoing, model predictive control and an adaptive observer," Proc. IEEE International Conference on Robotics and Automation, pp. 274-279, 2004. [4] T. Senoo, A. Namiki, and M. Ishikawa, "High-speed batting using a multijointed manipulator," Proc. IEEE International Conference on Robotics and Automation, pp. 1191-1196, 2004. [5] N. Furukawa, A. Namiki, T. Senoo, and M. Ishikawa, "Dynamic regrasping using a high-speed multifingered hand and a high-speed vision system,"Proc. IEEE International Conference on Robotics and Automation, pp. 181-187, 2006. [6] H. Oku, N. Ogawa, K. Hashimoto, and M. Ishikawa, "Two-dimensional tracking of a motile microorganism allowing high-resolution observation with various imaging techniques," Review of Scientific Instruments, Vol. 76, No. 3, 034301, 2005. [7] I. Ishii, Y. Nie, K. Yamamoto, K. Orito, and H. Matsuda, "Real-time and long-time quantification of behavior of laboratory mice scratching," Proc. IEEE International Conference on Automation Science and Engineering, pp. 628-633, 2007. [8] K. Yamane, T. Kuroda, and Y. Nakamura, "High-precision and high-speed motion capture combining heterogeneous cameras," Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 279-286, 2004. [9] Y. Watanabe, T. Komuro, and M. Ishikawa, "A high-speed vision system for moment-based analysis of numerous objects," Proc. IEEE International Conference on Image Processing, pp. V177-180, 2007. [10] Y. Nakabo, M. Ishikawa, H. Toyoda, and S. Mizuno, "1ms column parallel vision system and its application of high speed target tracking," Proc. IEEE International Conference on Robotics and Automation, pp. 650-655, 2000. [11] U. Muehlmann, M. Ribo, P. Lang, and A. Pinz, "A new high speed CMOS camera for real-time tracking applications," Proc. IEEE International Conference on Robotics and Automation, pp. 5195-5200, 2004. [12] Y. Watanabe, T. Komuro, and M. Ishikawa, "955-fps real-time shape measurement of a moving/deforming object using high-speed vision for numerous-point analysis," Proc. IEEE International Conference on Robotics and Automation, pp. 3192-3197, 2007. [13] I. Ishii, K. Yamamoto, K. Doi, and T. Tsuji, "High-speed 3D image acquisition using coded structured light projection," Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 925-930, 2007. [14] X. Liu and A. Gamal, "Synthesis of high dynamic range motion blur free image from multiple captures," IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications, vol. 50, No. 4, pp. 530-539, 2003. [15] T. Komuro, Y. Watanabe, M. Ishikawa, and T. Narabu, "High-S/N imaging of a moving object using a high-frame-rate camera," IEEE International Conference on Image Processing, pp. 517-520, 2008. [16] S. Lim, J. Apostolopoulos, and A. Gamal, "Optical flow estimation using temporally oversampled video," IEEE Transactions on Image Processing, vol. 14, No. 8, pp. 1074-1087, 2005. [17] I. Ishii, K. Kato, S. Kurozumi, H. Nagai, A. Numata, and K. Tajima, "Development of a mega-pixel and milli-second vision system using intelligent pixel selection," Proc. IEEE Technical Exhibition Based Conference on Robotics and Automation, pp. 9-10, 2004. [18] K. Shimizu and S. Hirai, "CMOS+FPGA vision system for visual feedback of mechanical systems," Proc. IEEE International Conference on Robotics and Automation, pp. 2060-2065, 2006. [19] W. Raab, N. Bruels, U. Hachmann, J. Harnisch, U. Ramacher, C. Sauer, and A. Techmer, "A 100-GOPS programmable processor for vehicle vision systems," IEEE Design & Test of Computers, vol. 20, No. 1, pp. 8-15, 2003. [20] H. Noda, M. Nakajima, K. Dosaka, K. Nakata, M. Higashida, O. Yamamoto, K. Mizumoto, T. Tanizaki, T. Gyohten, Y. Okuno, H. Kondo, Y. Shimazu, K. Arimoto, K. Saito, and T. Shimizu, "The design and implementation of the massively parallel processor based on the matrix architecture," Proc. IEEE Journal of Solid-State Circuits, vol. 42, No. 1, pp. 183-192, 2007. [21] A. Abbo, R. Kleihorst, V. Choudhary, L. Sevat, P. Wielage, S. Mouy, B. Vermeulen, and M. Heijligers, "Xetal-II: A 107 GOPS, 600 mW massively parallel processor for video scene analysis," IEEE Journal of Solid-State Circuits, vol. 43, No. 1, pp. 192-201, 2008. [22] S. Kyo, S. Okazaki, and T. Arai, "An integrated memory array processor architecture for embedded image recognition systems," Proc. International Symposium on Computer Architecture, pp. 134-145, 2005. [23] J. Eklund, C. Svensson, and A. A° stro¨m, "VLSI implementation of a focal plane image processor - a realization of the near-sensor image processing concept," IEEE Transactions on Very Large Scale Integrat. (VLSI) Systems, vol. 4, no. 3, pp. 322-335, 1996. [24] T. Komuro, S. Kagami, and M. Ishikawa, "A dynamically reconfigurable SIMD processor for a vision chip," IEEE Journal of Solid-State Circuits, Vol. 39, No. 1, pp. 265-268, 2004. [25] P. Dudek and P. Hicks, "A general-purpose processor-per-pixel analog SIMD vision chip," IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 52, No. 1, pp. 13-20, 2005. [26] W. Miao, Q. Lin, W. Zhang, and N. Wu, "A programmable SIMD vision chip for real-time vision applications," IEEE Journal of Solid-State Circuits, vol. 43, pp. 1470-1479 , 2008. [27] J. Tanabe, Y. Taniguchi, T. Miyamori, Y. Miyamoto, H. Takeda, M. Tarui, H. Nakayama, N. Takeda, K. Maeda, and M. Matsui, "Visconti: multi-VLIW image recognition processor based on configurable processor," Proc. IEEE Custom Integrated Circuits Conference, pp. 185-188, 2003. [28] B. Khailany, T. Williams, J. Lin, E. Long, M. Rygh, D. Tovey, and W. Dally, "A programmable 512 GOPS stream processor for signal, image, and video processing," IEEE Journal of Solid-State Circuits, vol. 43, pp. 202-213, 2008. [29] M. Wirthlin, B. Hutchings, and K. Gilson, "The nano processor: a low resource reconfigurable processor," Proc. IEEE Workshop on FPGAs for Custom Computing Machines, pp. 23-30, 1994. [30] J. Farrugia, P. Horain, E. Guehenneux, and Y. Alusse, "GPUCV: a framework for image processing acceleration with graphics processors," Proc. IEEE International Conference on Multimedia and Expo, pp. 585-588, 2006.
本発明は、以上の現状に鑑みてなされたものである。本発明の主な目的は、画像処理のための特定の関数に対応する複数の画像処理部をプログラムによって指定して動作させることによって、画像処理の高速化を図ることである。
前記した課題を解決する手段は、以下の項目のように記載できる。
(項目1)
コプロセッサと、フレームメモリと、CPUとを備えており、
前記フレームメモリは、処理されるべき画像データを格納する構成となっており、
前記コプロセッサは、複数の画像処理部と複数の並列メモリとを備えており、
前記並列メモリは、前記フレームメモリに格納された前記画像データの全部又は一部を受け取って前記画像処理部のいずれかに送る構成となっており、
前記複数の画像処理部は、いずれも、画像処理のための関数に対応した機能を有しており、
かつ、前記複数の画像処理部は、前記CPUからの指令に従って、
前記並列メモリ又は前記フレームメモリから、前記画像データの全部又は一部を受け取り、さらに、
前記画像データの全部又は一部に対して、前記画像処理のための関数に従った処理を行う構成となっている
画像処理装置。
画像処理部は、画像処理に用いられる特定の関数に対応する。画像処理を行う場合、処理に必要な関数の実行を、専用の画像処理部で行うことにより、処理を高速化できる。さらに、プログラムにおいては、CPUを介して、特定の関数あるいは画像処理部を指定して処理を実行させることができる。
(項目2)
前記コプロセッサは、再構成可能なプログラマブル・ロジック・デバイスによって構成されている
項目1に記載の画像処理装置。
再構成可能なプログラマブル・ロジック・デバイスは、通常、FPGA又はFPLAと呼ばれる集積回路である。このようなデバイスをコプロセッサとして用いることにより、画像処理部の機能を、ユーザの必要に応じて書き換えることができる。例えば、不足する関数に対応する画像処理部を追加したり、あるいは、必要な関数に対応する画像処理部を追加することができる。
(項目3)
前記複数の並列メモリは、デュアルポート・メモリである
項目1又は2に記載の画像処理装置。
デュアルポート・メモリを用いることにより、メモリへの読み込みと書き込みとを独立に行うことができる。このため、処理を一層高速化することができる。
また、デュアルポート・メモリを用いることにより、前記CPUの指令に従って、並列メモリをバッファとしたパイプライン処理を行うことができる。
(項目4)
前記画像処理部は、ダイレクト・メモリ・アクセス・コントローラと、処理ユニットとを備えており、
前記ダイレクト・メモリ・アクセス・コントローラは、前記並列メモリの動作を制御する構成となっており、
前記処理ユニットは、前記画像処理のための関数に従った処理を行う構成となっている
項目1〜3のいずれか1項に記載の画像処理装置。
(項目5)
前記コプロセッサを複数個備えている
項目1〜4のいずれか1項に記載の画像処理装置。
(項目6)
前記複数のコプロセッサは、共通のコプロセッサ・バスに接続されている
項目5に記載の画像処理装置。
(項目7)
前記コプロセッサは、ディスクリプタをさらに備えており、
前記CPUは、前記コプロセッサへの命令を前記ディスクリプタに書き込む構成となっており、
前記コプロセッサは、前記ディスクリプタに書かれている命令を読み取り、前記複数の画像処理部による処理を実行する構成となっている
項目1〜6のいずれか1項に記載の画像処理装置。
ディスクリプタを用いることにより、CPUは、コプロセッサに対して、一度に複数の処理を指示することができる。このため、コプロセッサの動作完了時におけるCPUへの割り込み回数を減らすことができるという利点がある。
(項目8)
前記複数の画像処理部は、前記CPUからの指令に従って、独立して並列に動作する構成となっている
項目1〜7のいずれか1項に記載の画像処理装置。
複数の画像処理部を並列動作可能とすることにより、CPUからの指令に従って、タスクレベルでの並列処理が可能となる。また、ディスクリプタに、処理ユニットや待ちユニットでの処理手順を書き込むことで、タスクレベルでの並列処理を効率的に行うことができる。
(項目9)
以下のステップを備える画像処理方法:
(1)フレームメモリが、処理されるべき画像データを格納するステップ;
(2)並列メモリが、前記フレームメモリに格納された前記画像データの全部又は一部を受け取るステップ;
(3)前記複数の画像処理部が、CPUからの指令に従って、前記並列メモリ又は前記フレームメモリから、前記画像データの全部又は一部を受け取るステップ;
(4)前記複数の画像処理部が、前記CPUからの指令に従って、前記画像データの全部又は一部に対して、画像処理のための関数に従った処理をそれぞれ行うステップ。
(項目10)
前記並列メモリとして、デュアルポート・メモリが用いられており、
さらに、複数の画像処理部は、前記CPUからの指令に従って、前記並列メモリをバッファとしたパイプライン処理を行うものである
項目9に記載の画像処理方法。
並列メモリをバッファとしたパイプライン処理を行うことにより、画像処理をさらに高速化することが可能になる。
(項目11)
前記複数の画像処理部は、前記CPUからの指令に従って、独立して並列に動作する構成となっており、
さらに、前記複数の画像処理部は、前記CPUからの指令に従って、タスクレベルでの並列処理を行うものである
項目9又は10に記載の画像処理方法。
タスクレベルでの並列処理を行うことにより、画像処理の高速化を図ることができる。
本発明によれば、高速な画像処理が実現可能であり、しかも、プログラム作成上の負担が過大にならない画像処理装置及び方法を提供することが可能になる。
本発明の一実施形態に係る画像処理装置の概略的なブロック図である。 図1の装置を用いた画像処理方法の概略を示すフローチャートである。 図1の装置における概略的なハードウエア構成図である。
本発明の一実施形態に係る画像処理装置を、添付の図面を参照しながら説明する。この画像処理装置は、主な要素として、P個のコプロセッサ11、12、…、1Pと、P個のフレームメモリ21、22、…、2Pと、CPU3とを備えている。さらに、この装置は、メインメモリ4と、I/Oインタフェース5と、カメラインタフェース6と、ビデオインタフェース7と、CPUバス8と、インターコプロセッサバス9とを備えている。
各フレームメモリ21…は、処理されるべき画像データを格納する構成となっている。具体的には、この実施形態では、カメラインタフェース6又はビデオインタフェース7から取り込まれた画像データを格納する構成となっている。図示されているように、各フレームメモリ21…は、各コプロセッサ11…に対応して設けられている。
コプロセッサ11…は、いずれも、複数のダイレクト・メモリ・アクセス・コントローラ(DMAC)111、112、…、11Nと、複数の並列メモリ121、122、…、12Mと、複数の処理ユニット13A、13B、…、13Xとを備えている。なお、各コプロセッサの基本的な内部構成は、この実施形態においては同様なので、コプロセッサ11の内部構成についてのみ詳しく説明する。
この実施形態では、DMAC111…と処理ユニット13A…とにより、本発明における複数の画像処理部が構成されている。なお、DMACと処理ユニットとは1対1で対応するものではない。この明細書においては、処理ユニットが複数あることをもって、画像処理部が複数あることとする。ただし、DMAC111…が画像処理機能を受け持っている場合は、DMACが複数あることをもって、画像処理部が複数あると把握することも可能である。
DMAC111…は、並列メモリ121…の動作を制御する構成となっている。ただし、この実施形態では、さらに、DMAC111が、処理ユニット13A…と分担して、画像処理の機能を実行するようになっている。
処理ユニット13A…は、画像処理のための関数に対応した構成となっている。
並列メモリ121…は、フレームメモリ21に格納された画像データの全部又は一部を受け取り、DMACを介していずれかの処理ユニット13A…に送る構成となっている。
また、本実施形態の並列メモリ121…としては、デュアルポート・メモリが用いられている。
本実施形態における複数のDMAC111…及び処理ユニット部13A…は、いずれも、画像処理のための関数に対応した機能を有している。ただし、この機能を処理ユニット13A…のみが受け持つ構成も可能である。
DMAC111…及び処理ユニット部13A…は、CPU3からの指令に従って、並列メモリ121…又はフレームメモリ21から、画像データの全部又は一部を受け取る構成となっている。さらに、DMAC111…及び処理ユニット部13A…は、画像データの全部又は一部に対して、画像処理のための関数に従った処理を行う構成となっている。
本実施形態のコプロセッサ11…は、再構成可能なプログラマブル・ロジック・デバイス、すなわち、いわゆるFPGAによって構成されている。したがって、コプロセッサ11…における並列メモリ121…の数と容量、並びに、DMAC111…及び処理ユニット13A…の数と機能は、コプロセッサ11…の書き換えによって変更可能である。
I/Oインタフェース5は、外部機器(図示せず)との間での入出力動作を制御する部分である。
カメラインタフェース6は、カメラ(図示せず)から画像を取り込むための機能を有している。
ビデオインタフェース7は、ビデオ(図示せず)から画像を取り込むための機能を有している。
CPUバス8は、CPU3と各コプロセッサ11…との間におけるデータ転送を行うためのバスである。
インターコプロセッサバス9は、各コプロセッサ11…どうしの間におけるデータ転送を行うためのバスである。
各コプロセッサ11…は、ディスクリプタ141をさらに備えている。ディスクリプタ141は、画像処理やダイレクトメモリアクセス(DMA)の内容を、CPU3からの指令に従って書き込むためのレジスタアレイである。つまり、本実施形態のCPU3は、コプロセッサ11…への命令をディスクリプタ141に書き込む構成となっている。
コプロセッサ11…は、ディスクリプタ141に書かれている命令を読み取り、DMAC111…及び処理ユニット13A…による処理(すなわち複数の画像処理部による処理)を実行する構成となっている。
(画像処理方法)
つぎに、本実施形態の画像処理装置を用いた画像処理方法を、図2を参照しながら、以下に説明する。
(図2のステップS−1)
まず、CPU3からの指示により、処理対象となる画像を、カメラインタフェース6又はビデオインタフェース7から取り込む。
(図2のステップS−2)
ついで、当該画像を処理するコプロセッサ11…に対応するフレームメモリ21…が、当該画像又はその一部を格納する。この処理も、CPU3からの指示により行われる。
一方、CPU3は、各コプロセッサ11…へのコマンドを、それぞれのディスクリプタ141に書き込む。
具体的には、CPU3は、各ディスクリプタ141に以下の情報(コマンド)を書き込む。
・使用する処理ユニット;
・使用する並列メモリ(入力用及び出力用);
・処理のためのパラメータ;
・どの処理ユニットでの処理が完了してから、処理を開始するか(すなわち待ちユニット)。
(図2のステップS−3)
ついで、各コプロセッサ11…は、ディスクリプタ141に書き込まれたコマンドを読み取る。
すなわち、各コプロセッサ11…は、ディスクリプタ141に書かれているコマンドを読み、処理を各画像処理部(DMAC及び処理ユニット)に割り当てる。それぞれのDMAC及び処理ユニットは独立して並列に動作する。たとえば、総和計算を行いながら座標変換を行う、といった事も可能である。
ディスクリプタ方式を使うと、コプロセッサに一度に複数の処理を指示できるため、コプロセッサの動作完了時におけるCPUへの割り込みの回数を減らす事ができる。
(図2のステップS−4及びステップS−5)
ついで、画像処理部が、フレームメモリ21…又は並列メモリ121…から画像の全部又は一部を受け取って処理する。この処理を以下に詳しく述べる。
ディスクリプタに書かれている処理を振り分けるモジュール(このモジュールは例えばディスクリプタ内に構築できる)は、以下のように動作する。なお、ここでの説明においては、処理ユニットはDMAC(画像処理機能を持つ場合)を含む。
1)次のディスクリプタを読む。
2)ディスクリプタが空だったら、処理を停止する。
3)使用しようとする処理ユニットと、待ちユニットの全てが使用可能となるまで待つ。
4)処理ユニットに、処理を振り分ける。
5)前記の1)へ戻る。
ここで、本実施形態においては、待ちユニットを指定しない場合、ディスクリプタに書かれた処理の内容はそれぞれの処理ユニットにすぐに送られる。待ちユニットを指定した場合、指示したユニットが空くまで(処理が完了するまで)、処理の振り分けは行われない。同じユニットを使う処理を並べた場合は、前の処理が完了してから次の処理が行われる。
本実施形態のアーキテクチャでは、アルゴリズムの実装を、通常のCPUのプログラミング環境のみを用いて行うことができる。コプロセッサ11…内に、基本的な画像処理を行う処理ユニット13A…あるいはDMAC111…があらかじめ用意されており、それらを組み合わせて用いることで、さまざまなアルゴリズムを実装できる。本実施形態では、アルゴリズムを変更しようとする毎に回路設計を行う必要がないため、ユーザーの負担が軽減される。また、本実施形態では、処理ユニット13A…あるいはDMAC111…によって特定の関数を高速に実行できるので、画像処理を高速に行うことができる。
なお、本実施形態では、プログラム中で用意されたAPI(Application Programming Interface)をコールすることで、ディスクリプタに命令を書き込むことができる。
例えば、コプロセッサ11を使って、処理ユニット13Aと処理ユニット13Bの両方が完了してから処理ユニット13Aで処理を行う場合には、以下のようにする。なお、以下の例において、UNIT_A1、UNIT_A2のような添え字は、同じ機能を持つ処理モジュールであることを示している。
Figure 2014160516
ここで、関数proc_Xは、以下のフォーマットを取る。関数名は、処理の種類を表す。cpは使用するコプロセッサ、unitは使用する処理ユニット、wunitは待ちユニットを示す。このほか、使用するメモリやアドレス、画像サイズ、演算のパラメータなども引数で指定する。
Figure 2014160516
sync()を呼ぶと、指定した処理ユニットが空くまで、ファームウェアは待ちに入る。sync()の引数には、使用するコプロセッサcp及び待ちユニットwunitを取る。
Figure 2014160516
前記したように、予め準備した関数だけでは不十分な場合、コプロセッサ11…を構成するFPGA内の論理回路を書き換えることによって、必要な関数を準備することができる。この際には回路設計が必要となってしまうが、コプロセッサ全体ではなく、ユニット単位で変更できるため、回路設計の負担は必要最低限となる。
さらに、FPGAを書き換えた場合でもプロセッサの基本構成は変わらないため、ソフトウェアの互換性を極力保つことができる。例えば、同一機能のユニットは同じ関数名、ユニット名で呼び出せるようにすることで、既存コードの変更を必要最低限にすることができる。
処理ユニット13A…は、処理毎に専用回路で実装されており、演算の同時実行やパイプラインによる並列化がなされている。加えて、並列メモリ121…から複数のデータを同時に読み出すことにより、1クロックに1画素以上の処理を行わせることができる。これらはタスク内での並列処理とみなすことができる。
すなわち、本実施形態においては、並列に動作する複数の画像処理部を用いて、CPUからの指令(つまりプログラム)に従って、タスクレベルでの並列処理を行うことができる。
一方、処理をタスクレベルで並列化するには、以下の方法がある。
1)同一コプロセッサ内で、複数のユニットを同時に使用する。
2)複数のコプロセッサを同時に使う。
同一コプロセッサ内で複数のユニットを同時に使用する場合、複数のユニットが同じメモリへの同時入力、または同時出力を行うことはできない(実行時エラーになる)。これは、FPGAの内部メモリにはアービトレーション機能が無いためである。ただし、メモリにアービトレーション機能が実装されていれば、同時アクセスが可能となる。例えば、並列メモリであるINTRAM1を入力として総和計算をしている間、スケール変換の入力としてINTRAM1を使う事はできないが、他の並列メモリであるINTRAM2を入力とする事は可能である。
また、総和計算のための処理ユニットが二つある場合において、一方の処理ユニットでINTRAM1を入力としている場合、他方の処理ユニットでINTRAM1を入力とする事もできない。
他方、PBSRAM(後述)、フレームメモリなどのように、FPGAの外部にあるメモリに関しては、一般的に、アービトレーション機能が実装されているので、同時にアクセスする事ができる。
アルゴリズムを実装する際に、並列化のために処理を分割する方法としては、
・一枚の画像を分割して、それぞれを別ユニットで実行させる方法、
・テンプレートマッチングなどのように同じ処理を複数回行う場合に、それらを別ユニットで実行させる方法、
・タスクレベルで処理をパイプライン化する方法
などがある。
一般に同一の処理を複数のユニットに振り分ける場合、リソースの競合の観点から、別々のコプロセッサに割り当てるのがよい。一方、タスク間の依存関係が強い場合は、転送コストを考えると同一コプロセッサ内で割り当てるのがよい。
ここで、本実施形態のように、並列メモリ121…をデュアルポートRAMで構成した場合は、読み込みと書き込みを独立に行うことができる。したがって、処理の出力先が次の処理の入力元になっている場合であっても、後ろの処理が前の処理を追い越さないことが保証できる場合は、処理がすべて完了する前に次の処理を開始できる。
これにより、前の処理が完了し、結果をすべてメモリに書き込むまで次の処理が実行できない場合に比べて、より短いステージでパイプラインを構成することができるため、処理の高速化に貢献できる。つまり、本実施形態では、並列メモリとしてデュアルポート・メモリを用いることによって、CPUの指令(つまりプログラム)に従って、メモリをバッファとしたパイプライン処理を行うことができ、処理を高速化することが可能になる。
処理のパイプライン化の具体例は後述する(後述の表4)。
(実施例)
上に述べたアーキテクチャに基づいて、本発明者らは、以下に示す評価用のシステムを開発した。システムのデザインと性能評価の結果を示す。
開発したシステムのブロック図を図3に示す。このシステムは2枚のサブボードが載った1枚のメインボードに実装されている。
メインボードにはFPGA、メモリ、I/Oポートなどが搭載されており、サブボードは、CPUボードとカメラインターフェースボードである。前記した実施形態の要素と実施例のハードウエアとの対応を以下に示す。
・FPGA:コプロセッサ
・DDR2DIMM:フレームメモリ
・DIO、USB、RS-232C、Ethernet(登録商標):I/Oインタフェース
・DDR-SDRAM:メインメモリ
・EXT.BUS:拡張バス。なお、この拡張バスを介して各FPGAはCPUバスに接続されている。したがって、機能上は、この拡張バスは、コプロセッサ間のバスとCPUバスとを兼ねていることになる。
なお、図3中のPBSRAMは、図1には示していないが、各FPGA用の外部メモリである。
この実施例では、開発コストを抑えるため、CPUボードは市販のCPU基板ESPT-Giga(商品名)を利用し、拡張バスを通じてメインボード内のFPGAと接続している。ESPT-Gigaは、CPUにRenesas SH7763 (SH-4A, 266MHz)、メモリには64MBのDDR-SDRAMを搭載し、入出力として、10/100/1000BASE Ethernet(登録商標)、USB1.1、RS232Cを備えている。
ここで、ESPT-Gigaは、ウェブサーバー機能を内蔵することが可能であり、PCからブラウザを通してシステムを操作したり、処理結果を表示することができる。これにより、LANによる遠隔管理が可能となり、多数のシステムを一台のPCで管理することができるようになっている。
本実施例では、FPGAとして、Altera製のEP2S60F1020C5を2個搭載している。図3中でPBSRAMとあるのは、FPGAのコンフィギュレーションデータを格納するためのフラッシュメモリ(8MBytes)であり、これは、各FPGAに搭載されている。
FPGAはそれぞれフレームメモリ(DRAM)を持っており、カメラからの入力画像は自動的にFPGA1のフレームメモリに溜められる。カメラインタフェースはFPGA1に接続されている。個別のカメラ用の物理インタフェースは、メインボード上に取り付けられるカメラインタフェース基板に実装されて使用される。本実施例の実装では、カメラ用のインタフェースは、Basler製のA504k(モノクロ)/kc(カラー)と、Microtron製のEosens MC1362(モノクロ)/1363(カラー)に対応している。これらのカメラは、最大で1280×1024画素の画像を、500fpsでリアルタイム出力することができる。また、これらのカメラでは、画像の行数を減らすことでフレームレートを上げることが可能となっており、たとえば1280×512画素であれば1000fpsで出力できる。
前記したA504k/kcおよびMC1362/1363は、Camera Link規格を独自拡張したインタフェースを採用しており、2本のCamera Link ケーブルでボードと接続される。これらのカメラは、通常のCamera Linkインタフェースのカメラと、物理層での互換性があるので、FPGA1の回路を変更することにより、他のカメラにも対応できる。さらに、本実施例では、カメラインタフェース基板を交換することで、IEEE1394やGigabit Ethernet(登録商標)などの他のカメラインターフェースにも対応できるようになっている。
また、FPGA1には、アナログVGAポートが接続されており、フレームメモリに蓄えられた画像をSXGAサイズ(1280×1024)でディスプレイに出力できるようになっている。
なお、本実施例の画像処理装置では、フレームメモリとは別に、各FPGAが、小容量のSRAMを持っている。本実施例では、このSRAMを、後述の座標変換処理における入力元として利用できる。
さらに、本実施例では、ESPT-Gigaでの外部入出力機能とは別に、32ビットのデジタルI/O(DIO)を用意しており、ロボット制御など高いリアルタイム性が要求される用途に利用できる。
本実施例における各モジュール間での動作速度は以下の通りである。
・FPGA-DRAM間:3200MB/s (200MHz, 128bit);
・FPGA-SRAM間:1333MB/s (166.6MHz, 64bit);
・FPGA-CPU間:133MB/s (66.67MHz, 16bit);
・FPGA-FPGA間:2133MB/s (133.33MHz, 128bit)。
以上述べた本実施例のボードのスペックを下記表1にまとめた。
Figure 2014160516
本実施例では、二つのFPGAのそれぞれに、前記の実施形態で説明したコプロセッサが実装されている。各コプロセッサは、以下のユニットを持つ。
・二つの並列メモリ(64kbytes) (PAR1, PAR4);
・四つの並列メモリ(16kbytes) (PAR2, PAR3, PAR5, PAR6);
・二つのDMA制御ユニット(DMA1, DMA2);
・九つの処理ユニット(後述の表2及び表3参照);
・命令ディスクリプタ。
本実施例のコプロセッサでは、1画素を16bitとして処理する。カメラから送られてくる画像は一般に8bitであることが多いが、演算の途中過程において、それ以上の精度が必要になることもあるため、16bitを標準とした。たとえば8bit画像同士を加算あるいは減算した場合の結果は9bitである。フィルタ処理など多くの画素を重み付きで足し合わせる場合には、それ以上のビット数が必要となる。
カラー画像の処理は、RGBそれぞれを3枚の独立したグレースケール画像として扱う。画像の処理ユニットで計算を行う時、16bitの入力データの扱いと出力データの扱いをそれぞれ以下のように指定する事ができる。
・入力データを、
1)0x0000〜0xffffとして解釈(符号無し);
2)-0x8000〜0x7fffとして解釈(符号付き)。
・演算結果を、
1)0x0000〜0xffffで表現;
2)-0x8000〜0x7fffで表現;
3)絶対値をとって、0x0000〜0xffffで表現。
・演算結果が16bitに収まらない場合は最大値か最小値のいずれかで飽和させる。
・二値化を行う場合、結果yがTl≦y≦Thの場合は1、それ以外は0とする。ここで、Tl及びThは、適宜に設定される閾値の上限及び下限を示す。
画像処理の係数パラメータは、16bit長または12bit長の符号付固定小数点とし、小数点の位置は各パラメータ共通で指定する。
並列メモリは、一つにつき同時に128bit(8pixel)のデータの読み書きができる。また、この並列メモリは、デュアルポートRAMで構成されており、読み込みと書き込みを独立に行うことができる。
DMA制御ユニット(DMAC)は、各メモリ間のデータの転送を行う。本実施例では、CPUとのデータ転送は、各FPGAにおいて、特定のDMAC(例えばDMA2とする)でのみ可能である。また、他方のFPGAにデータを転送できるのは、各FPGAにおいて、他の特定のDMAC(例えばDMA1とする)のみである。各メモリ間でのデータ転送は、128bit単位で行われるが、外部メモリとの間でデータ転送をするときは、外部メモリの動作速度に制限される。
データの転送範囲としては、
・(一行あたり転送バイト数)×(行数)の設定;
・ソース及びディスティネーションそれぞれの転送開始アドレスと一行あたりのアドレス増分
を指定する。これによって大画面の画像の一部切り出し、埋め込みが可能である。
本実施例のDMA制御ユニット(DMAC)には、オプションで以下のデータ操作回路(すなわち画像処理機能)を備えることができる。
シフト回路
この回路は、16バイト毎にデータを左にバイト単位でシフトした結果を出力するものである。データのsrcアドレスについては、16の倍数でなければならないという制限があるが、シフト回路を使うと、任意のアドレスのデータをsrcとすることができる。
間引き回路
この回路は、16バイト毎にデータ入力を受け付け、8→1(出力データ量1/8倍), 4→1(出力データ量1/4倍), 2→1(出力データ量1/2倍)のいずれかの間引きを行ったデータを出力する。この機能とDMA転送のアドレス増分の指定とにより、画像の縮小を行うことができる。
変換回路
この回路では、16バイト毎にデータを入力する。そして、8ビット(モノクロ)→16ビット(出力データ量は2倍)、8ビット(ベイヤー)→16ビット(R成分、G成分、B成分のいずれか)、16ビット→8ビット(出力データ量は1/2倍)のいずれかの変換を行うことができる。カメラから送られてくるデータは1画素が8ビットで構成されており、これをコプロセッサで処理するためには、1画素16ビットに変換する必要がある。カラーカメラの場合、ベイヤー変換を行い、RGBのいずれかの成分のみを出力する処理を行う。
表2に、各コプロセッサに実装されている演算ユニット(すなわち処理ユニット)を示す。
Figure 2014160516
この表における記号の意味は以下の通りである・
・SCALE:画素値を線形にスケーリングする処理;
・ARITH:二つの画像間で加減算、乗算を行う処理;
・3x3CONV:オペレータのカーネルサイズが3×3のコンボリューションフィルタ;
・SUM:指定した範囲で画素値の総和を計算する処理;
・AFFINE:画像を平面アフィン変換で変形する処理。
ここで、AFFINEは、入力をSRAMから受け取ることができる。SCALE、ARITH、SUMは、1クロックに8画素、3x3CONVは1クロックに4画素、同時に処理を行うことができる。AFFINEは1クロックに1画素だけ処理を行う。
本実施例では、画像処理のための処理ユニットとして、一般的によく用いられる画像処理アルゴリズムを実現するのに必要最低限と思われる基本機能を搭載した。他に、処理ユニットに実装することが有用な機能としては、「ルックアップ・テーブル(LUT)を用いた非線形のスケール変換」、「ルックアップ・テーブル(LUT)を用いた非線形の座標変換」及び「論理演算」などが挙げられる。
本実施例のディスクリプタは、それぞれ256Word(1Word=2bytes)まで命令を積むことができる。一つの命令は、パラメータの数により1〜3Wordで構成される。ここで、一つの命令は、前記したproc_X()関数の一つに対応し、一つのDMA制御ユニットまたは画像処理ユニットを用いて、指定した範囲の画像データに対する処理を指示することができる。なお、何もしないという命令も用意されており、これはsync()関数に対応する。
(動作周波数、回路規模などのスペック)
本実施例で用いたFPGAは、200MHzで動作し、使用リソースはFPGA1が88%、FPGA2が81%である。
表3に、本実施例のシステムが持つ基本機能を用いた処理と、基本機能を組み合わせた処理の計算時間を示す。比較のため、OpenCVを用いて同等の処理をPCに実装した場合の計算時間も示す。使用したPCは、CPUがIntel E6300 (1.86GHz×2)、RAMが3GBで、Visual Studio 2005とOpenCV 1.0を用いて実装し、Windows(登録商標) XP上で計測した。表中のEvalSysは、開発した評価システムを用いた場合の処理時間、OpenCVはPCとOpenCVを用いた場合の処理時間を示す。
Figure 2014160516
本実施例において、入力元・出力先はFPGA内部の並列メモリとし、画像の大きさは256×32とした。
一方、PCでの計測は、同じ処理を100000回繰り返し行い、実行時間の平均を用いた。実装はOpenCVのライブラリを用いて行い、画像は符号付き16ビットとした。ただし、ベイヤー変換およびアフィン変換については、OpenCVの関数が符号付き16ビットに対応していなかったので、符号なし8ビットで実装した。係数は、関数の仕様に合わせてfloatまたはdoubleを用いた。Copy、Bayer Conversion、Shrinkの三つの関数については、カメラから取り込まれた画像に対して最初に行うことが想定されるため、入力元をフレームメモリとし、PCでの計測は直前の処理におけるキャッシュの影響を排除するようにした。また、Bayer ConversionとShrinkは入力と出力で画像サイズが異なるが、出力の画像サイズを基準に算出した。
重心計算は、まず入力画像から前フレームの結果から推定される対象が存在する領域を切り出し、固定あるいは適応的に定められたしきい値で二値化する。次に、以下の式を用いて重心の計算を行う。
Figure 2014160516
(x,y)座標値での重みIx及びIyはそれぞれあらかじめ並列メモリに入れておき、二値化した入力画像をARITHにより重み付けし、SUMによる総和計算でモーメントm10及びm01を計算する。モーメントm00は重み付けなしで総和計算により求める。
これらの処理は、表4に示すような形で、タスクレベルでパイプライン化し、並列に実行する。並列メモリはデュアルポートになっているため、処理の出力先が次の処理の入力元になっている場合、処理がすべて完了する前に次の処理を開始できる。なお、本実施例における前記の処理はすべてコプロセッサ1のみで行った。
Figure 2014160516
これらの結果から、本実施例によれば、平均的にはPCを数倍上回る性能が得られていることがわかった。しかし、今回PCと比較したのは、他の一般的な手法と比較する際の基準となるからであり、PCベースのシステムを用いない理由は、安定性や信頼性を確保するためである。実際、PCを用いたシステムではディレイやフレーム落ちが頻繁に観測されており、高速ビジョンのアプリケーションにおいて支障をきたすことになる。
また、PCを用いた場合でも、マルチメディア命令やGPUの利用により高速化が可能であり、この場合、開発したシステムより高い演算性能を実現することができる。たとえば、GPUを用いた枠組みの一つであるGPUCV(非特許文献30)では、いくつかの画像処理においてPCの1.7〜18倍の処理性能が報告されている。しかし、これらはPCのプラットフォームを前提にしており、やはり上記の問題を抱えることになる。
開発したボードは12V,5Aの電源で動作し、実効的な消費電力は42W程度であった。FPGAの消費電力は比較的高いため、DSPなどを利用する場合に比べると消費電力は高くなるが、本実施形態では、組込みシステムを用いることにより、安定性と信頼性を確保できるという利点がある。
本実施例では、高速ビジョンシステムのアーキテクチャとして、組み込みマイクロプロセッサとFPGAを組み合わせることによって、ハードウェアのリコンフィギャラビリティとアルゴリズム実装の容易性を両立できるという利点がある。
半導体の集積化が指数的に進む中、並列処理を活かしたプロセッシングアーキテクチャは今後よりいっそう重要になってくる。その際に、汎用的なアーキテクチャでは、並列度を最大限に活かすことは難しい。FPGAによる再構成可能な専用回路と、CPUの容易なプログラミング環境を組み合わせることで、高い画像処理性能を発揮しつつ、ある程度の汎用性を持たせることができる。
再構成可能なプログラマブル・ロジック・デバイスは、通常、FPGAと呼ばれる集積回路である。FPGAを用いることにより、画像処理部の機能を、ユーザの必要に応じて書き換えることができる。例えば、不足する関数に対応する画像処理部を追加したり、あるいは、必要な関数に対応する画像処理部を追加することができる。
本実施例では、並列メモリとしてデュアルポート・メモリを用いることにより、メモリへの読み込みと書き込みとを独立に行うことができる。このため、処理を一層高速化することができる。
また、ディスクリプタを用いることにより、CPUは、コプロセッサに対して、一度に複数の処理を指示することができる。このため、コプロセッサの動作完了時におけるCPUへの割り込み回数を減らすことができるという利点がある。
画像処理部は、画像処理に用いられる特定の関数に対応する。画像処理を行う場合、処理に必要な関数の実行を、専用の画像処理部で行うことにより、処理を高速化できる。さらに、プログラムにおいては、特定の関数あるいは画像処理部を指定して処理を実行させることができる。
なお、前記した実施形態及び実施例の構成は、本発明の例示に過ぎず、本発明の内容を制限する趣旨のものではない。
11、12、…、1P コプロセッサ
111、112、…、11N DMAC(画像処理部)
121、122、…、12M 並列メモリ
13A、13B、…、13X 処理ユニット(画像処理部)
141 ディスクリプタ
121 並列メモリ
21、22、…、2P フレームメモリ
3 CPU
4 メインメモリ
5 I/Oインタフェース
6 カメラインタフェース
7 ビデオインタフェース
8 CPUバス
9 インターコプロセッサバス

Claims (11)

  1. コプロセッサと、フレームメモリと、CPUとを備えており、
    前記フレームメモリは、処理されるべき画像データを格納する構成となっており、
    前記コプロセッサは、複数の画像処理部と複数の並列メモリとを備えており、
    前記並列メモリは、前記フレームメモリに格納された前記画像データの全部又は一部を受け取って前記画像処理部のいずれかに送る構成となっており、
    前記複数の画像処理部は、いずれも、画像処理のための関数に対応した機能を有しており、
    かつ、前記複数の画像処理部は、前記CPUからの指令に従って、
    前記並列メモリ又は前記フレームメモリから、前記画像データの全部又は一部を受け取り、さらに、
    前記画像データの全部又は一部に対して、前記画像処理のための関数に従った処理を行う構成となっている
    画像処理装置。
  2. 前記コプロセッサは、再構成可能なプログラマブル・ロジック・デバイスによって構成されている
    請求項1に記載の画像処理装置。
  3. 前記複数の並列メモリは、デュアルポート・メモリである
    請求項1又は2に記載の画像処理装置。
  4. 前記画像処理部は、ダイレクト・メモリ・アクセス・コントローラと、処理ユニットとを備えており、
    前記ダイレクト・メモリ・アクセス・コントローラは、前記並列メモリの動作を制御する構成となっており、
    前記処理ユニットは、前記画像処理のための関数に従った処理を行う構成となっている
    請求項1〜3のいずれか1項に記載の画像処理装置。
  5. 前記コプロセッサを複数個備えている
    請求項1〜4のいずれか1項に記載の画像処理装置。
  6. 前記複数のコプロセッサは、共通のコプロセッサ・バスに接続されている
    請求項5に記載の画像処理装置。
  7. 前記コプロセッサは、ディスクリプタをさらに備えており、
    前記CPUは、前記コプロセッサへの命令を前記ディスクリプタに書き込む構成となっており、
    前記コプロセッサは、前記ディスクリプタに書かれている命令を読み取り、前記複数の画像処理部による処理を実行する構成となっている
    請求項1〜6のいずれか1項に記載の画像処理装置。
  8. 前記複数の画像処理部は、前記CPUからの指令に従って、独立して並列に動作する構成となっている
    請求項1〜7のいずれか1項に記載の画像処理装置。
  9. 以下のステップを備える画像処理方法:
    (1)フレームメモリが、処理されるべき画像データを格納するステップ;
    (2)並列メモリが、前記フレームメモリに格納された前記画像データの全部又は一部を受け取るステップ;
    (3)前記複数の画像処理部が、CPUからの指令に従って、前記並列メモリ又は前記フレームメモリから、前記画像データの全部又は一部を受け取るステップ;
    (4)前記複数の画像処理部が、前記CPUからの指令に従って、前記画像データの全部又は一部に対して、画像処理のための関数に従った処理をそれぞれ行うステップ。
  10. 前記並列メモリとして、デュアルポート・メモリが用いられており、
    さらに、複数の画像処理部は、前記CPUからの指令に従って、前記並列メモリをバッファとしたパイプライン処理を行うものである
    請求項9に記載の画像処理方法。
  11. 前記複数の画像処理部は、前記CPUからの指令に従って、独立して並列に動作する構成となっており、
    さらに、前記複数の画像処理部は、前記CPUからの指令に従って、タスクレベルでの並列処理を行うものである
    請求項9又は10に記載の画像処理方法。
JP2014118297A 2014-06-09 2014-06-09 画像処理装置及び画像処理方法 Pending JP2014160516A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014118297A JP2014160516A (ja) 2014-06-09 2014-06-09 画像処理装置及び画像処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014118297A JP2014160516A (ja) 2014-06-09 2014-06-09 画像処理装置及び画像処理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009195777A Division JP2011048579A (ja) 2009-08-26 2009-08-26 画像処理装置及び画像処理方法

Publications (1)

Publication Number Publication Date
JP2014160516A true JP2014160516A (ja) 2014-09-04

Family

ID=51612101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014118297A Pending JP2014160516A (ja) 2014-06-09 2014-06-09 画像処理装置及び画像処理方法

Country Status (1)

Country Link
JP (1) JP2014160516A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111428566A (zh) * 2020-02-26 2020-07-17 沈阳大学 一种形变目标跟踪系统及方法
CN113228095A (zh) * 2020-06-30 2021-08-06 深圳市大疆创新科技有限公司 图像处理方法、显示处理装置和计算机可读存储介质
CN113516035A (zh) * 2021-05-06 2021-10-19 佛山市南海区广工大数控装备协同创新研究院 一种多接口融合的指纹图像前处理方法
CN117893391A (zh) * 2024-03-14 2024-04-16 华中科技大学 面向小型无人机平台的多光谱图像智能处理系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573516A (ja) * 1991-09-12 1993-03-26 Sony Corp 信号処理用プロセツサ
JPH06131155A (ja) * 1991-01-29 1994-05-13 Analogic Corp 再構成可能な順次処理装置
JP2001236496A (ja) * 1999-10-04 2001-08-31 Texas Instr Inc <Ti> 絶対差分の合計および対称濾波用の再構成可能simdコプロセッサ構造
JP2006515033A (ja) * 2003-04-17 2006-05-18 コンゾルテイウム フユール エレクトロケミツシエ インヅストリー ゲゼルシヤフト ミツト ベシユレンクテル ハフツング 火炎挙動が改善されたイソシアネート不含の発泡性混合物
JP2006133839A (ja) * 2004-11-02 2006-05-25 Seiko Epson Corp 画像処理装置、印刷装置および画像処理方法
US20060239551A1 (en) * 2002-02-14 2006-10-26 Cogent Systems, Inc. Method and apparatus for two dimensional image processing
US7281093B1 (en) * 2004-12-21 2007-10-09 Xilinx, Inc. Memory apparatus for a message processing system and method of providing same

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06131155A (ja) * 1991-01-29 1994-05-13 Analogic Corp 再構成可能な順次処理装置
JPH0573516A (ja) * 1991-09-12 1993-03-26 Sony Corp 信号処理用プロセツサ
JP2001236496A (ja) * 1999-10-04 2001-08-31 Texas Instr Inc <Ti> 絶対差分の合計および対称濾波用の再構成可能simdコプロセッサ構造
US20060239551A1 (en) * 2002-02-14 2006-10-26 Cogent Systems, Inc. Method and apparatus for two dimensional image processing
JP2006515033A (ja) * 2003-04-17 2006-05-18 コンゾルテイウム フユール エレクトロケミツシエ インヅストリー ゲゼルシヤフト ミツト ベシユレンクテル ハフツング 火炎挙動が改善されたイソシアネート不含の発泡性混合物
JP2006133839A (ja) * 2004-11-02 2006-05-25 Seiko Epson Corp 画像処理装置、印刷装置および画像処理方法
US7281093B1 (en) * 2004-12-21 2007-10-09 Xilinx, Inc. Memory apparatus for a message processing system and method of providing same

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015020036; 福島  知紀、外5名: '"線虫Caenorhabdits  elegans初期胚の細胞分裂パターン計測システムのリコンフィギュ' 電子情報通信学会論文誌 Vol.J90-D, No.11, 20071101, pp.2970-2980, 社団法人電子情報通信学会 *
JPN6015020039; 渡辺  義浩、外3名: '"超並列コプロセッサIPを用いたリコンフィギャラブル高速ビジョンシステムの構築と評価"' FIT2006  第5回情報科学技術フォーラム  情報科学技術レターズ  第5巻 , 20060821, pp.25-28, 社団法人電子情報通信学会、社団法人情報処理学会 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111428566A (zh) * 2020-02-26 2020-07-17 沈阳大学 一种形变目标跟踪系统及方法
CN111428566B (zh) * 2020-02-26 2023-09-01 沈阳大学 一种形变目标跟踪系统及方法
CN113228095A (zh) * 2020-06-30 2021-08-06 深圳市大疆创新科技有限公司 图像处理方法、显示处理装置和计算机可读存储介质
CN113516035A (zh) * 2021-05-06 2021-10-19 佛山市南海区广工大数控装备协同创新研究院 一种多接口融合的指纹图像前处理方法
CN117893391A (zh) * 2024-03-14 2024-04-16 华中科技大学 面向小型无人机平台的多光谱图像智能处理系统及方法

Similar Documents

Publication Publication Date Title
WO2011024654A1 (ja) 画像処理装置及び画像処理方法
US11859973B2 (en) Large scale CNN regression based localization via two-dimensional map
JP6309620B2 (ja) 頂点シェーダのフロント・エンドとしてコンピュート・シェーダを使用すること
JP5242771B2 (ja) 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
US10504275B2 (en) Methods and apparatus for more efficient ray tracing of instanced geometry
AU747283B2 (en) Data processing system for logically adjacent data samples such as image data in a machine vision system
US10229468B2 (en) Automated conversion of GPGPU workloads to 3D pipeline workloads
WO2017107168A1 (en) Event-driven framework for gpu programming
US11194722B2 (en) Apparatus and method for improved cache utilization and efficiency on a many core processor
US10789071B2 (en) Dynamic thread splitting having multiple instruction pointers for the same thread
US20110249744A1 (en) Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
JP2014160516A (ja) 画像処理装置及び画像処理方法
US20160283549A1 (en) Value sorter
US10818067B1 (en) GPU assist using DSP pre-processor system and method
WO2016171817A1 (en) Optimized depth buffer cache apparatus and method
US10409571B1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
TW201709085A (zh) 處理需要相加數個乘法結果之指令
TW202121336A (zh) 平行解壓縮機制
US9183611B2 (en) Apparatus implementing instructions that impose pipeline interdependencies
JP6329412B2 (ja) Simdプロセッサ
TW201810026A (zh) 用於在計算環境中資料之邏輯處理的暫存器檔案之延伸
US20170032486A1 (en) Packet Processing on Graphics Processing Units Using Continuous Threads
Komuro et al. A reconfigurable embedded system for 1000 f/s real-time vision
EP3394734A1 (en) Multiple-patch simd dispatch mode for domain shaders
WO2017049583A1 (en) Gpu-cpu two-path memory copy

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140619

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140619

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150526

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151006