今日はB4向けにScilabを使った画像処理の講習会を行っていた。
主に画像処理用のツールボックス、SIVPの使い方を説明していたのだが、
それとともに教えないといけないのがディジタル画像処理のことだった。
授業で画像処理のことってやらないんですかね。
聞いてみたらやってないと返ってきたし、そういうカリキュラムなんかな。
僕は高専の時、授業で確かにやったんだけど、そういや選択科目だったか。
そんなもんですかね?
1次元のデータのディジタル信号処理の方法は授業で勉強していたのかな?
しかし以前、1次元のデータ、具体的には音声の信号処理をScilabでやってたときも怪しかった気がするな。
Scilabを使えばFFTはすぐできるけど、FFT結果と周波数の対応を付けるにはそれはそれで知識がいるわけだし、
FIRフィルタもIIRフィルタもパラメータを入れたら設計してくれるしし、設計したデータを適用するのも一発だけど、
具体的にどんなことをやってるかというイメージがないとそれはいかんわけだし。
Scilabの使い方の話とは言え、そういう知識を補完しながら進めて行かんとならんなぁと思うところ。
画像処理も1次元へのディジタル信号処理と基本的にはやってること一緒だからわかるよねというのはやや乱暴な気はする。
確かに、線形フィルタもFFTも、1次元でやってることを2次元に拡張してるなんだけどね。
とはいえ、2次元FFTの結果を見ても、具体的になにを表してるのか、知らんとさっぱりなわけだし、
そこは適宜教えながら進んでいかんとならんのかなと。
今回は移動平均フィルタ、ラプラシアンフィルタをやって、それでラプラシアンフィルタの結果からゼロクロス点の検出をやってもらって、
二次元FFTを使ってフィルタ前後の比較をやってもらった。
これで基本的なところは抑えられたかなと思っている。
線形フィルタは他にもいろいろあるから、そこは用途に応じて変えてもらえばいいわけですし。
フィルタカーネルを変えれば平滑化も輪郭検出もできますよというところがわかってもらえばいいのだけど。
そんなことを思いながら教材を作っていたのだけど、ちゃんとわかってもらいながら進められたかなと思っている。
もっとも、実際にやってたらいろいろミスが浮かび上がってきたので、そこは修正しないとならんが。