#define PNUM 60 // 円周データのプロット回数
#define RADIUS 200 // 円の半径
#define C_X 256 // 円のx方向(横方向)の中心座標
#define C_Y 256 // 円のy方向(縦方向)の中心座標
#define ROOP_NUM 150 // 円周の収縮を行なう回数
main()
{
int c_x[1],c_y[1];
int Radius[1];
int Plotnum[1];
// 円周のパラメータを設定します
c_x[0] = C_X;
c_y[0] = C_Y;
Radius[0] = RADIUS;
Plotnum[0] = PNUM;
// 円周の節点の座標を格納する配列です
int circle_x[PNUM],circle_y[PNUM];
image Circle;
int data[512][512];
// 指定された大きさの画像で円周をプロットした
// 画像を作成します
MakeCircle(data,c_x,c_y,Radius,Plotnum,circle_x,circle_y); // 円周データ作成
Circle = (image)data;
disp(Circle);
image Edge,Result;
int roop_num[1];
// スネーク中で円周の収縮を行なうループ回数を決めます
roop_num[0] = ROOP_NUM;
// エッジ画像を1つ読み込みます
Edge = load("../image/Thined.pgm");
// 入力されたエッジ画像から、スネークモデルを
// 用いた輪郭抽出を行なう
Snake(Edge,Result,circle_x,circle_y,roop_num); // スネークによる輪郭抽出
disp(Result);
// 結果データと入力画像、収縮前の円画像を加算した画像を作成し
// 表示します
image C_R_Added,All_Added;
Add(Circle,Result,C_R_Added); // 画像加算
Add(Edge,C_R_Added,All_Added);
disp(All_Added);
}
VIOS トップページ