人気ブログランキング | 話題のタグを見る
画像情報処理研究 第9回
 今まで画像情報処理研究の授業で行ってきたこと

・濃淡画像を中心に実習を行ってきた。
・画像の濃度ヒストグラムを作る
・線形平滑化
・誤差拡散法
・エッジ抽出



・アフィン変換
(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・・・・・・実行。
画像がぼけた。
画像情報処理研究 第9回_a0014712_1335318.jpg

(高い周波数成分がなくなった、ということ)
 この画像に縞模様等を足してみる。

・プログラムの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;
---------------------------------------------------------------------
結果
画像情報処理研究 第9回_a0014712_14102593.jpg

 つまり、画像のデータのほとんどは中心に集まっていることがわかる。
今度は36行目を、max=num_of_data/8(つまり32)の8を128にする(max=2)。これによって、濃度の0-2、253-255までのみ0にする。
---------------------------------------------------------------------
max = num_of_data / 128;
---------------------------------------------------------------------
結果
画像情報処理研究 第9回_a0014712_14152476.jpg

 画像が暗くなっていることがわかる。(真っ黒な部分もなくなってはいるが、わからない)白がいかに印象が強いか、ということがわかる。

実習:縞模様を画像につける。
---------------------------------------------------------------------
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;
}
---------------------------------------------------------------------
結果
画像情報処理研究 第9回_a0014712_14464244.jpg

 つまらないミスで苦労したが、なんとか時間内に動いた!よかった。。。。
by viewtleaf | 2004-12-16 13:17 | 画像処理
<< 大失態 ビデオ編集の基本 >>



毎日起こった出来事を記入し、「振り返り」に活用したいと思います。写真は我が子の作品。
by viewtleaf
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31