概要前週の課題2.4では処理を簡単にするため、x、y方向の値の平均を出力値としました。しかし、各方向の値は、それ成分とするベクトルの大きさと考えられるので、Gxをx方向の値、Gyをy方向の値とすると以下の式のように計算するほうが自然です。 しかし、ハードウェア上で平方根の計算を行うのは大変です。そのため今回は、Gx^2 + Gy^2の値からそれの平方根の値を参照することができるテーブルを使用します。 以下の表とグラフは、深さ8のテーブル例です。Gx^2 + Gy^2の代表的な値をテーブルの値としています。テーブルの深さが256でなくともよい理由は、Sobelフィルタはエッジ検出フィルタであり、小さい画素の変化を必要としないためです。 hash(Gx^2 + Gy^2) | sqrt(Gx^2 + Gy^2) | 0 | 0 | 1 | 110 | 2 | 142 | 3 | 168 | 4 | 191 | 5 | 211 | 6 | 229 | 7 | 255 |
 平方根のテーブルを実装するためにBlock RAMを使用して下さい。あらかじめ、平方根の値をBlock RAMの初期値として与えます。(Gx ^ 2 + Gy ^ 2)/2の値から適切なアドレスを生成し、Block RAMの値を取得する事で、平方根の計算を行います。 下図は、回路の具体例です。
課題3.1上記に記したようなsobelフィルタ処理回路を実装してください。テーブルの深さは16以上にしてください。
課題3.2(自由課題)4週目以降は各自空間フィルタを作成してもらいます。その下準備として、どのような空間フィルタがあり、どのようなオペレータを用いるか、調べてください。
|