2025.04.02 エンジニアズコラム FPGA 画像処理
第10回 FPGAによる画像処理について

FPGAの紹介
ハードウェアによる画像処理において、FPGAは非常に重要な部品です。カメラの制御や、フィルタリング、データの判定、PCへのデータ転送、といった多くの役割を果たしています。
FPGAとは、Field Programmable Gate Arrayの略で、Field=現場でプログラム可能な集積回路のことを指します。ハードウェアといえばICや抵抗などの部品をはんだ付けして作るイメージがありますが、FPGAは“現場”で書き換え可能であることが大きな特徴です。
FPGA専用のプログラムを修正することで、処理内容を変更することが可能です。大きさも縦横20~30mm前後で、一般的なCPUと同じぐらいの大きさです。このため、FPGAでの画像処理は、ハードウェアでありながら、PC上で動くソフトウェアプログラムに似ていると言えるでしょう。
昔、FPGAについて学び始めた頃、「FPGAは100人の小学生が一緒に算数の問題を解いるのに対し、CPUは大人が一人で難問を解いている」と説明を受けたことがあります。この比喩は言い得て妙だと思います。(図-1)
FPGA上での画像処理は、良くも悪くも細かな処理を自前で設計することになります。CPU上のソフトウェアであれば、例えば c = a×b という乗算を一行でかけますが、FPGAでは同じ処理を実現するために、数十行から数百行ものコードを書く必要があります。「aやbの値を保存されているメモリから読み出し、演算回路を使って計算し、結果をcの保存用メモリに書き込む」といった処理を自前で設計する必要があるからです。
一方、ソフトウェア(CPU)での処理は、大人に仕事を依頼するように「これを解いて」と指示すれば、自分でデータを読み出し、計算を行い、結果の保存も行ってくれます。メモリアクセスは、オペレーティングシステム(OS)(参照:「オペレーティングシステム(OS)について」)がうまく行ってくれますし、難しい画像処理でもライブラリを使えば解決できます。
それでは、なぜFPGAを用いてハードウェアで処理するのでしょうか?それは、単純な処理においてFPGAでハードウェア処理が圧倒的に速いからです。ソフトウェア処理に比べFPGA上では数十分の一の時間で処理が可能になることもあります。何桁もある掛け算を1問解くのに、大人と100人の小学生では大人が10倍速く計算できるでしょう。しかし、逆に1桁の足し算を100問解くであれば、小学生たちがみんなで協力すれば、大人の10倍速く計算ができてしまいます。
FPGAの画像処理
FPGAでの高速処理の秘密は、前述の並列処理と、もう一つの要素として最適化があります。ここで簡単な画像処理の例を紹介します。それは、隣り合う画像同士で引き算をするという、まるで小学生の算数のような計算です(図-2)。当社の検査装置では、加減算や乗算を行う演算回路を多数配置することで、高速なフィルタ処理を実現しています。
図-2 画像処理の例
FPGAでの画像処理は、単に演算回路を並べるだけではありません。同じ演算を行うにも回路の組み方によって必要な回路数が変わってきます。前後のメモリへの読み書きの速度にも限界があります。いくら演算回路を並べても、結局はメモリへの読み書きで制限されることもあります。(図-3)
図-3 FPGA内部での画像処理
ソフトウェア処理の場合、メモリの読み書きはOSが自動で行ってくれますが、自分でアドレスの管理や読み出すタイミング、データのビット数まで設計します。共通データの利用で無駄なアクセスを減らす工夫をし、読み書きするデータの回数を削減します。このような「最適化」によってFPGAでの画像処理は、高速化が実現します。
使いやすい検査装置を提供するために
当社の検査装置は、幅5m以上の製品が毎分1000m以上という高速で生産される製紙市場や、0.01mm の欠陥を検出する必要のある光学フィルム市場など、幅広い市場で活用されています。
同じ業界、場合によっては同じ工場でも、生産工程が少し変わるだけで、検査装置に対する要望が変わります。これらの多様な要望に細やかにお応えするのが当社の特徴です。
FPGAハードウェアでは簡単な画像処理は得意ですが、その分複雑な処理の設計が大掛かりになります。ちょっとした変更でも、かなりの工数がかかります。そこで、大切になるのがソフトウェアやPLC(Programmable Logic Controller)など他の装置との連携です。
どの処理をハードウェア化し、何をソフトウェア処理にするか、さらにどの部分をPLCに任せるかといった分担を見極めることで、高速な処理を実現し、使い勝手の良い装置を生み出すことが可能になります。この見極めはシステム技術者としての腕の見せどころであり、大変ではありますが、同時にやりがいを感じる瞬間でもあります。これからも、より良い装置の開発に向けて日々精進していきます!