2004年10月21日(木) 画像情報処理演習
◎濃淡画像処理




a0014712_13391159.jpg


ttsshを起動
sanuki、ユーザー名、パスワードを入力
<ここで、Setup-Terminalをクリックし、KanjiをEUCに変更>
sanuki% tcsh
> cd miho
> gcc -o histgram histgram.c -lm←数学関数を利用するとき
> ls -l histgram
> ls -l *.pgm
-rw-r--r-- 1 ******** gr04-u 65574 Oct 21 13:20 LENNA.pgm
> ./histgram
-----------------------------------------------------
モノクロ階調画像入力ルーチン
-----------------------------------------------------
ファイル形式は pgm, バイナリ形式とします.
入力ファイル名 (*.pgm) : LENNA.pgm
横の画素数 = 256, 縦の画素数 = 256
最大階調値 = 255
データは正しく読み込まれました.
-----------------------------------------------------
今,原画像のヒストグラムを求めています.
頻度の最大値 = 1173
-----------------------------------------------------
モノクロ階調画像(pgm形式)出力ルーチン
-----------------------------------------------------
出力ファイル名 (*.pgm) :LENNA.pgm
-----------------------------------------------------
モノクロ階調画像入力ルーチン
-----------------------------------------------------
ファイル形式は pgm, バイナリ形式とします.
入力ファイル名 (*.pgm) : LENNA.pgm
横の画素数 = 256, 縦の画素数 = 256
最大階調値 = 255
データは正しく読み込まれました.
-----------------------------------------------------
今,原画像のヒストグラムを求めています.
頻度の最大値 = 1173
-----------------------------------------------------
モノクロ階調画像(pgm形式)出力ルーチン
-----------------------------------------------------
出力ファイル名 (*.pgm) : LENNA2.pgm
データは正しく出力されました.
-----------------------------------------------------

> gcc -o smth_hst smth_hst.c -lm
> ./smth_hst
-----------------------------------------------------
モノクロ階調画像入力ルーチン
-----------------------------------------------------
ファイル形式は pgm, バイナリ形式とします.
入力ファイル名 (*.pgm) : LENNA.pgm
横の画素数 = 256, 縦の画素数 = 256
最大階調値 = 255
データは正しく読み込まれました.
-----------------------------------------------------
ヒストグラムの平滑化を行います.
-----------------------------------------------------
モノクロ階調画像(pgm形式)出力ルーチン
-----------------------------------------------------
出力ファイル名 (*.pgm) : LENNA3.pgm
データは正しく出力されました.
-----------------------------------------------------
> ./histgram
-----------------------------------------------------
モノクロ階調画像入力ルーチン
-----------------------------------------------------
ファイル形式は pgm, バイナリ形式とします.
入力ファイル名 (*.pgm) : LENNA3.pgm
横の画素数 = 256, 縦の画素数 = 256
最大階調値 = 255
データは正しく読み込まれました.
-----------------------------------------------------
今,原画像のヒストグラムを求めています.
頻度の最大値 = 1321
-----------------------------------------------------
モノクロ階調画像(pgm形式)出力ルーチン
-----------------------------------------------------
出力ファイル名 (*.pgm) : LENNA4.pgm
データは正しく出力されました.
-----------------------------------------------------
>exit
exit

均一化→平滑化
a0014712_1422789.jpg


/* 画像の濃度ヒストグラムの画像を作るプログラム histgram.c */
#include
#include
#include
#include"mypgm.h"
#define IMAGESIZE 256 /* = GRAYLEVEL */

void make_histogram_image( )
/* 原画像 image1 のヒストグラムを作り画像としてimage2 に代入 */
{
long int histogram[GRAYLEVEL]; /* ヒストグラム用配列 */
long int max_frequency; /* 頻度の最大値 */
int i, j, x, y; /* 制御変数 */
int data; /* 頻度を表すグラフの長さ */

/* 原画像のヒストグラムを求める */
for ( i = 0; i < GRAYLEVEL; i ++ )
histogram[ i ] = 0;
printf("今,原画像のヒストグラムを求めています.\n");
for ( y = 0; y < y_size1; y ++ )
for ( x = 0; x < x_size1; x ++ )
histogram[ image1[x][y] ] ++;
/* 頻度の最大値を求める */
max_frequency = INT_MIN;
for ( i = 0; i < GRAYLEVEL; i ++ )
if ( histogram[i] > max_frequency )
max_frequency = histogram[i];
printf("頻度の最大値 = %d\n", max_frequency);
/* ヒストグラム画像を image2 に代入 */
x_size2 = IMAGESIZE; y_size2 = IMAGESIZE;
for ( y = 0; y < y_size2; y ++ )
for ( x = 0; x < x_size2; x ++ )
image2[y][x] = 0;
for ( i = 0; i < GRAYLEVEL; i ++ ){
data = (int)( MAX_BRIGHTNESS /
(double)max_frequency * (double)histogram[i] );
for ( j = 0; j < data; j ++ )
image2[IMAGESIZE-1-j][i] = MAX_BRIGHTNESS;
}
}

main( )
{
load_image_data( ); /* 原画像を image1 に読み込む */
make_histogram_image( ); /* ヒストグラムの画像を image2 へ */
save_image_data( ); /* image2 を保存する */
return 0;
}
[PR]
by viewtleaf | 2004-10-21 13:43 | 画像処理
<< 2004年10月21日(木) ... 人間講座でピーター・フランクル... >>



毎日起こった出来事を記入し、「振り返り」に活用したいと思います。写真は我が子の作品。
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