関数 > 画像処理 > 変換領域 > 例: フーリエ変換領域でのフィルタ
例: フーリエ変換領域でのフィルタ
funconvmatconvfuncdeconvmatdeconv関数を使用して、関数 f またはマスク E で画像をコンボリューションまたはデコンボリューションします。これは、空間周波数 (フーリエ変換領域) 内で画像と関数またはマスクを掛け合わせることによって行われます。周波数領域でフィルタすることで、選択した関数またはマスクに応じて、平滑化、エッジ検出、周期的ノイズの低減などのさまざまな処理が行われます。画像領域内でコンボリューションを使用するよりも変換領域内でフィルタを行った方が数学的に効率的であり、フィルタを容易に定義できることがよくあります。
この例の使用方法については、画像処理の例についてを参照してください。
funconv
この関数を使用して、画像 M を空間周波数内の関数によってフィルタします。実数関数 f を使用して、M と同じ大きさのマスク N を作成します。M はフーリエ変換された後、項ごとにマスクが掛け合わされます。
マスクは、fM の左上隅からの正規化距離を引数として渡すことで作成されます。この処理を繰り返すことでマスクの中心までくると、この部分を 4 つに対称に複製することでマスクが作成されます。これは左上隅が DC (周波数ゼロ) の場合の処理です。
1. 画像行列 M を定義することでマスクを作成します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. 画像行列の中心に相当するピクセルを見つけます。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 左上隅から画像の中心までの値を表す新しいレンジ変数を作成します。
クリックしてこの式をコピー
クリックしてこの式をコピー
4. 定義したレンジ変数とマスク関数を使用して、マスクの左上の象限を作成します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
(0, 0) のエントリは f(0)(r, c) のエントリは f(1) です。
マスクは、fM の左上隅からの正規化距離を引数として渡すことで作成されます。この処理を繰り返すことでマスクの中心までくると、この部分を 4 つに対称に複製することでマスクが作成されます。これは左上隅が DC (周波数ゼロ) の場合の処理です。
5. funconv を使用して、マスク行列の残りの要素を作成します。
クリックしてこの式をコピー
クリックしてこの式をコピー
コンボリューションによって画像のスケールが拡大した場合、出力行列を [0, 255] の範囲に尺度化できます。
funcdeconv
このデコンボリューション関数は、周波数領域の画像と周波数領域の関数を引数としてとり、これらをデコンボリューションします。
funcdeconve の最後の引数は微小項であり、これはルーチン中にすべての定義式の分母に追加されます。最初に、e の値として 0 を入力します。ゼロ割りのエラーメッセージが表示された場合、e には小さな値を入力します。
1. funcdeconv 関数を呼び出します。
クリックしてこの式をコピー
2. DE を計算して funcdeconv の結果を表示し、元の行列と比較します。
クリックしてこの式をコピー
クリックしてこの式をコピー
matconv
matconv 関数は funconv と同じ周波数領域の乗算と変換を行いますが、入力として関数ではなくマスクを取ります。マスクは元の画像と同じ大きさでなければなりません。マスクの左上の象限だけを指定します。
1. サンプル画像を読み込みます。
クリックしてこの式をコピー
2. 画像行列の行数と列数を求めます。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. マスクの大きさを定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
4. マスク C を定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
* 
C で次のハイパスフィルタを試すことができます。
クリックしてこの式をコピー
5. RCmatconv を適用します。
クリックしてこの式をコピー
クリックしてこの式をコピー
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
matdeconv を使用して元の画像を回復します。デコンボリューションでは輝度ゼロの要素で除算される可能性があるので、この問題を回避するため、各除算の分母に e が追加されます。
クリックしてこの式をコピー
クリックしてこの式をコピー
(matdeconv.bmp)
マスクの左上が低周波数に対応し、右下が高周波数に対応していることに注意して、その他のフィルタ関数を試すことができます。別の画像でも試してみます。
これは役に立ちましたか?