FC2カウンター FPGAの部屋 2009年11月11日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

画像のエッジ検出6(3X3での方式の検討)

3X3でエッジを検出する場合の方式の検討をする。
画像のエッジ検出4(実機でテスト)”で書いた方式は”ディジタル信号処理講座”によると”ラプラシアンによるエッジ検出”と呼ばれている。
後はSobelフィルタ、Robertsフィルタなどがあるようだ。これらは、X方向とY方向のフィルタがあって、その絶対値同士の和を取り飽和演算する方法とXの2乗とYの2乗のルートを取る方法があるようだ。FPGAなどのハードウェア実装されているのが多いのが前者で、ソフトウェア実装は後者になっているようだ。
とりあえず、ラプラシアンとSobelフィルタ、Robertsフィルタ両方に対応するために、|フィルタ1|+|フィルタ2|の飽和演算として、ラプラシアンの場合はフィルタ2を0にすることにする。Sobelフィルタ、Robertsフィルタの場合は|フィルタX|+|フィルタY|の飽和演算とすることにする。(参考文献、”画像処理IP とFPGA 実装法の研究開発”)
下に3X3演算をする場合のBRAMやFFの構成を下に示す。
edge_detect_11_091111.png

Xn-1Yn-1... Xn+1Yn+1 の9つの輝度データから、3X3の演算を2つ行い、絶対値を取って加算する。最初の2行の輝度データXn-1Yn-1, XnYn-1, Xn+1Yn-1, Xn-1Yn, XnYn, Xn+1Yn に輝度データが入るのはVSYNCがアクティブになってから3つ目のHREFの時なので、最初の2水平ラインはブランクとする。横方向もXn-1, Xn までがないと演算できないので、最初の2ドットはブランクとする。

ラプラシアンはいろいろな係数があるみたいだが、とりあえず前回の下の演算子でやってみる。
-------------
| -1| -1| -1|
-------------
| -1| 8| -1|
-------------
| -1| -1| -1|
-------------


Sobel フィルタの演算子を下に示す。
------------      -------------
| -1| 0| 1|     | -1| -2| -1|
------------     -------------
| -2| 0| 2|     | 0| 0| 0|
------------     -------------
| -1| 0| 1|     | 1| 2| 1|
------------     -------------

X方向           Y方向

(参考URL: ”1次微分(差分)によるエッジ検出”、”2次微分(差分)によるエッジ検出”、”基本的な画像処理手法について”)
  1. 2009年11月11日 05:03 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:0