BMPファイルを読み込んで2値化して保存します
サンプルコード
グレースケールのBMPファイルを読み込み、同じ画像サイズで保存します
IMG_H,IMG_Wで画像の高さ、幅を指定しています
module tb;
localparam IMG_H = 512;
localparam IMG_W = 512;
bit [7:0] bmp[54+1024]; // bmpのヘッダ情報を保持する
bit [7:0] data[IMG_H*IMG_W]; // 入力画像の画素データ
bit [7:0] dout[IMG_H*IMG_W]; // 出力画像の画素データ
int f;
initial begin
f = $fopen("mandrill.bmp", "rb"); // ファイルを開く
$fread(bmp, f, 0, 54+1024); // ヘッダ情報を取得する
$fread(data, f, 0, IMG_H*IMG_W); // 画素データを取得する
$fclose(f); // ファイルを閉じる
work(data, dout); // workというtaskで画像を2値化する
f = $fopen("result.bmp", "wb"); // 画像を保存する
foreach (bmp[i])
$fwrite(f, "%c", bmp[i]);
foreach (dout[i])
$fwrite(f, "%c", dout[i]);
$fclose(f);
end
// dinを2値化してdoutとして出力するtask
task work(
input bit [7:0] din[IMG_H*IMG_W],
output bit [7:0] dout[IMG_H*IMG_W]
);
foreach (din[i]) begin
if (din[i] > 127) begin // 128以上は白
dout[i] = 255;
end
else begin // 127以下は黒
dout[i] = 0;
end
end
endtask
endmodule
入力画像
出力画像
まとめ
BMPファイルを2値化して保存しました
コメント