#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 トップページ