fpgaによる画像処理におけるmatlabの利用...fpgaによる画像処理におけるmatlabの利用...
TRANSCRIPT
FPGAによる画像処理におけるMATLABの利用
東京理科大学・基礎工学部・電子応用工学科教授 相川 直幸
略歴
• 1985年 山梨大学工学部電気工学科卒業
• 1987年 東京都立大学大学院電気工学専攻修士課程修了
• 同年 同大助手
• 1992年 博士(工学)・東京都立大学
• 1998年 東京工科大学工学部電子工学科講師・助教授
• 2001年 日本大学工学部電気電子工学科助教授
• 2008年 東京理科大学基礎工学部電子応用工学科准教授・教授
現在に至る
MATLAB EXPO 2015 2
電子応用工学科のカリキュラム
MATLAB EXPO 2015 3
MATLABの学習
• 大学の授業でC言語を習得
• MATLAB®の最も基本的な文法を先輩より教授
ー MATLABオンサイトトレーニングなど各種講座で代替可能
• 参考書にて画像処理の基礎知識の習得
・ディジタル画像処理編集委員会編、『ディジタル画像処理』
・高井信勝著、工学社、『MATLAB画像処理入門』
MATLABでの基本的なプログラミングが可能に
C言語と文法が似ているので記述が容易
MATLAB EXPO 2015 4
MATLABの学習
• プログラミング中に、求める処理を提供する関数をその都度
検索
ー ウインドウ内から簡単に検索可能
• MATLABより提供される多くの関数により、効率的に処理の
検討と作成が可能
• 関数の詳細は、MATLABドキュメンテーションを読むことで理
解
MATLABでコードを記述しながらその都度学習
数か月ー1年でシステム開発が可能に
MATLAB EXPO 2015 5
タオル・おしぼりの再利用の現状
6
• 特に毛髪の発見が困難
• 大量のタオルについて、人が目視で検品
タオルに付着した毛髪に対する自動検出
アルゴリズムの開発
開発背景
MATLAB EXPO 2015
システム(開発当初)
MATLAB EXPO 2015 7
開発手順
• はじめはMATLABを使ってPCで検証
ー エッジ検出アルゴリズム・線を認識するアルゴリズムなどをいろいろ試す
• でも、実時間にはほど遠い。C言語やGPUでの実現も考えたが…
FPGAでやらなければ
MATLAB EXPO 2015 8
アルゴリズム作成・検討
MATLABR2015b
アルゴリズム評価
要求仕様
システム(FPGAに)
MATLAB EXPO 2015 9
開発工程
アルゴリズム作成・検討
MATLAB2015b
アルゴリズム評価
HDLコード作成 Simulink
実装
実機試験
要求仕様
Xilinx ISE Design
Suite 13.4
MATLAB EXPO 2015 10
実際のシステム(1/3)
FPGA
Xilinx Virtex-6 FPGA ML605
EVALUATION KIT(XC6VLX240T)
Linear Sensor Camera
Baslar raL4096-80km
Lens
Nikon Micro-Nikkor 55mm f/2.8
MATLAB EXPO 2015 10
実際のシステム(2/3)
MATLAB R2015b - R2014b
Development Environment
PC
Windows 7 Professional
Intel Core i7-4930K CPU
16GB RAM
MATLAB EXPO 2015 11
1.撮影
2.画像処理
Camera
FPGA PC
3.結果提示
毛髪有無
座標情報
設定パラメータ
処理画像(CameraLink)
(RS232C)
実際のシステム(3/3)
MATLAB EXPO 2015 13
開発
Top Module
Image Processing Module
SerialCommu-nicationModule
DVI Output Module
Camera Link
Module
• FPGA上での画像処理モジュールの開発
• IO関連(カメラからの画像の取り込み、座標情報の送信、パ
ラメータ値の受信など)のプログラミングは一部外部委託
MATLAB EXPO 2015 14
15
MATLABの開発画面
記述中コード
各変数の一覧
変数内容コマンド・警告・エラー
• コード中の各変数が一覧表示され、デバッグなどの作業が効
率的に可能
MATLAB EXPO 2015
Simulinkの開発画面
• HDLに対応したブロック一覧から必要なものを選んで図を組む
MATLAB EXPO 2015 16
Simulinkの学習
• MathWorks開催のHDL Coder™ワークショップに参加
• Simulinkの基本的な記述方法はSimulinkのヘルプや各ブ
ロックのヘルプを読むことで学習
• FPGAの基礎知識、Simulink内の画像処理に関しては大学
講義「論理回路」の教科書や関係する参考書を参考
・宮田武雄著、コロナ社、『速解 論理回路』
・松村謙、坂巻佳壽美著、オーム社、『VHDLによるFPGA設計&デバッグ』
簡単な画像処理モジュールをSimulinkにて記述可能に
MATLAB EXPO 2015 17
• 配置できる各ブロックの詳細は、MATLABドキュメンテーショ
ンを読むことで理解
• MathWorksへの問い合わせによって細かい仕様の確認
• VHDLの文法に詳しくなくてもコードの生成が可能
MATLABでコードを記述しながらその都度学習
Simulinkの学習
1年程度からシステム開発が可能に
MATLAB EXPO 2015 18
Simulink
• ブロック線図を組むことで、これを自動的にHDLコードに変換
MATLAB EXPO 2015 19
Simulink
• ブロック線図を組むことで、これを自動的にHDLコードに変換
MATLAB EXPO 2015 20
開発
HDLコード生成完了 一部外部委託
Top Module
Image Processing Module
SerialCommu-nicationModule
DVI Output Module
Camera Link
Module
Simulink
MATLAB EXPO 2015 21
FPGAへの実装
• Xilinx ISE Design Suite 13.4
MATLAB EXPO 2015 22
FPGAへの実装
各モジュールのHDLコードを読込み
MATLAB EXPO 2015 23
FPGAへの実装
FPGA実装
MATLAB EXPO 2015 24
FPGAへの実装
実装構成ファイル選択
MATLAB EXPO 2015 25
FPGAへの実装
実装
MATLAB EXPO 2015 26
FPGAへの実装
実装完了
MATLAB EXPO 2015 27
長さ 7mm までの毛髪を 100% 検出可能
Table. Detection Accuracy for Pieces of Hair
毛髪以外の誤検出を0となるよう各パラメータを設定
29
Length of Hair [mm]
Number of Samples
Detected UndetectedDetection
Rate
10 20 20 0 100 %
7 20 20 0 100 %
5 20 19 1 95 %
4 20 19 1 95 %
3 20 9 11 45 %
処理精度
MATLAB EXPO 2015
30
最後に(学生の感想)
MATLAB EXPO 2015
• Camera Link Moduleを作成いただいた会社の方との3日間の議論が非常に参考になった
• MathWorksの方たちのサポートでSimulinkでのFPGA実装方法を理解することができた
• 専用パッケージ(Image Acquisition Toolbox™等)のヘルプやSimulinkブロックのヘルプが参考になった
• 論理回路や画像処理の教科書も参考になったが、画像処理を用いたFPGAに関連した内容を紹介しているサイトも大いに参考になった
• 企業との共同開発のため、納期があることが刺激になった