今まで画像情報処理研究の授業で行ってきたこと
・濃淡画像を中心に実習を行ってきた。 ・画像の濃度ヒストグラムを作る ・線形平滑化 ・誤差拡散法 ・エッジ抽出 ・ ・アフィン変換 (1)最近隣内挿法 (2)共一次内挿法 Report:(1)、(2)の比較 P.43 画像情報処理 ◎画像のフーリエ変換 リンク:フーリエとラプラス変換 フーリエ変換とは何をするものか? 円柱でも、見方によって長方形に見えたり、円に見えたり、楕円に見えたりする。 一つのものでも見方により変化する フーリエ変換は、実際の物理現象と密接に関わる ◎考え方 ・どんな信号でも、いろいろな波で組み合わさってできている。(Text:pp44) 急に電源を切ると高い音が出る。 ファイル名:FFT2fltr.c をEUC、LFで上書き保存 ttsshを起動 sanuki、ユーザー名、パスワードを入力 <ここで、Setup-Terminalをクリックし、KanjiをEUCに変更> sanuki% tcsh > cd miho > gcc -o FFT2fltr FFT2fltr.c -lm←数学関数を利用するとき・・・・・コンパイル > ./ -l FFT2fltr・・・・・・実行。 画像がぼけた。 (高い周波数成分がなくなった、ということ) この画像に縞模様等を足してみる。 ・プログラムの29-47行目 --------------------------------------------------------------------- void filtering_frequency( ) /* 周波数領域に対するフィルタリングを行う */ /* 例:低域通過フィルタ */ { int i, j, max; printf("\nFFT後の係数に対するフィルタリングを行います.\n"); max = num_of_data / 8; for ( i = 0; i < num_of_data; i ++ ){ for ( j = 0; j < num_of_data; j ++ ){ if ( ( max < i ) && ( i < ( num_of_data - max ) ) || ( max < j ) && ( j < ( num_of_data - max ) ) ){ data[i][j] = 0.0; jdata[i][j] = 0.0; } } } } --------------------------------------------------------------------- このプログラムは、データの一部を0にしている。 ◎複素数表記が便利 周期の波は、0からずれている。振幅もずれている。これで一つの波を表す。 つまり、周波数の波は、振幅とずれ量の2つの値が必要となる。 よって、複素数の考えが必要となる。 <数直線を拡張すればいいのではないか?→実数部と虚数部に拡張> (高校の数学などでは、x^2=-1という定義から複素数にはいるが、これはまずいのではないか、とのことであった。) 加法定理 オイラーの公式 41行目に } else { を追加 --------------------------------------------------------------------- } else { ・・・・追加 data[i][j] = 0.0; jdata[i][j] = 0.0; --------------------------------------------------------------------- 結果 つまり、画像のデータのほとんどは中心に集まっていることがわかる。 今度は36行目を、max=num_of_data/8(つまり32)の8を128にする(max=2)。これによって、濃度の0-2、253-255までのみ0にする。 --------------------------------------------------------------------- max = num_of_data / 128; --------------------------------------------------------------------- 結果 画像が暗くなっていることがわかる。(真っ黒な部分もなくなってはいるが、わからない)白がいかに印象が強いか、ということがわかる。 実習:縞模様を画像につける。 --------------------------------------------------------------------- void filtering_frequency( ) /* 周波数領域に対するフィルタリングを行う */ /* 例:低域通過フィルタ */ { /*int i, j, max;*/ int i, j; int ax, ay; double t; ax = 2; ay = 3; /*ax=0-10, t=10.0-20.0*/ t=10.0; printf("\nFFT後の係数に対するフィルタリングを行います.\n"); /* for ( i = 0; i < num_of_data; i ++ ){ for ( j = 0; j < num_of_data; j ++ ){*/ data[ ax][ ay] *=t; jdata[ ax][ ay] *=t; data[num_of_data - ax][ ay] *=t; jdata[num_of_data - ax][ ay] *=t; data[ ax][num_of_data - ay] *=t; jdata[ ax][num_of_data - ay] *=t; data[num_of_data - ax][num_of_data - ay] *=t; jdata[num_of_data - ax][num_of_data - ay] *=t; } --------------------------------------------------------------------- 結果 つまらないミスで苦労したが、なんとか時間内に動いた!よかった。。。。
by viewtleaf
| 2004-12-16 13:17
| 画像処理
|
検索
カテゴリ
全体Diary 学校での取り組み全般 バレーボール 修論 Linux Network Security Software 総合関係 Medical treatment JAVAプログラミング 研究会等 特別支援 Fishing 流体力学 機械工学 画像処理 電気工学 情報工学 木材加工 異文化間教育 ビデオ編集 イギリスの学校 書評 リンク 金属加工 学ぶ・わかる Bowling Hardware 麺類 Piano English パズル 卓球 未分類 フォロー中のブログ
異能者集団のチームワーキング私たちにもできる!国際協力 ジャストジャンプ3@フレ... その他のジャンル
記事ランキング
ブログジャンル
画像一覧
| ||||||||||||||||||||||||||||||||||||||||||||||||||
ファン申請 |
||