画像処理プログラム②トーンカーブ加工(2値化)
今日は2値化によるトーンカーブ加工をやっていきます。
これに2値化のプログラムで加工します。
わかりやすく説明すると、画素値が0から127の濃い色は黒(0)に、128から255の明るい色は白(255)にするプログラムです。
#include <stdio.h>
#include <math.h>
#define SIZE 256
int main(void){
int i, j;
double ave;
unsigned char img[SIZE][SIZE]; //入力画像を保持するための配列
unsigned char img2[SIZE][SIZE]; //出力画像を保持するための配列
FILE *fp;
fp = fopen("poppo.raw", "rb"); //入力画像ファイルのオープン
fread(img, 1, SIZE*SIZE, fp); //画像データの読み込み
fclose(fp); //画像ファイルのクローズ
/* 画像を白か黒かの2値化して表示する */
for (j = 0; j < SIZE; j++) {
for (i = 0; i < SIZE; i++)
{
img2[i][j] = img[i][j];
if (img2[i][j] < 127)
{
img2[i][j] = 0;
}
else
{
img2[i][j] = 255;
}
printf("%d ", img2[i][j]);
}
}
fp = fopen("poppo2.raw", "wb"); //画像出力ファイルのオープン
fwrite(img2, 1, SIZE*SIZE, fp); //画像データの書き込み
fclose(fp); //画像ファイルのクローズ
return 0;
}
このプログラムで出力すると次の画像が抽出できる。
よって2値化に成功した。
次に前回扱った平均化フィルタの7×7バージョンをやっていく。
#include <stdio.h>
#include <math.h>
#define SIZE 256
int main(void){
int i, j;
double ave;
unsigned char img[SIZE][SIZE]; //入力画像を保持するための配列
unsigned char img2[SIZE][SIZE]; //出力画像を保持するための配列
FILE *fp;
fp = fopen("poppo.raw", "rb"); //入力画像ファイルのオープン
fread(img, 1, SIZE*SIZE, fp); //画像データの読み込み
fclose(fp); //画像ファイルのクローズ
/* 7×7のマトリックスの平均値を算出する */
for(i=3; i< SIZE-3; i++){
for(j=3; j< SIZE-3; j++){
img2[i][j] = (img[i][j-2]+img[i][j-1]+img[i][j]+img[i][j+1]+img[i][j+2]+img[i][j+3]+img[i][j-3]
+img[i-2][j-2]+img[i-2][j-1]+img[i-2][j]+img[i-2][j+1]+img[i-2][j+2]+img[i-2][j+3]+img[i-2][j-3]
+img[i-1][j-2]+img[i-1][j-1]+img[i-1][j]+img[i-1][j+1]+img[i-1][j+2]+img[i-1][j+3]+img[i-1][j-3]
+img[i-3][j-2]+img[i-3][j-1]+img[i-3][j]+img[i-3][j+1]+img[i-3][j+2]+img[i-3][j+3]+img[i-3][j-3]
+img[i+1][j-2]+img[i+1][j-1]+img[i+1][j]+img[i+1][j+1]+img[i+1][j+2]+img[i+1][j+3]+img[i+1][j-3]
+img[i+2][j-2]+img[i+2][j-1]+img[i+2][j]+img[i+2][j+1]+img[i+2][j+2]+img[i+2][j+3]+img[i+2][j-3]
+img[i+3][j-2]+img[i+3][j-1]+img[i+3][j]+img[i+3][j+1]+img[i+3][j+2]+img[i+3][j+3]+img[i+3][j-3])/49;
printf("%d ", img2[i][j]);
}
}
このプログラムから出力します。
前回の3×3や5×5よりもかなり強いぼかしになりました。
今日はここまでにします。次回は画像処理とは違うプログラムを組んでみたいと思います。
この記事が気に入ったらサポートをしてみませんか?