モジュール

			
/**************************************************
  average.cc
  平均値フィルター処理
***************************************************/

vs_module
average(iImage data)
{
    // テンポラリ変数
    iImage shadow(data);

    // 径1の外周(全領域中での)は処理からはずす
    vsSetBoundary2D(1);

    // 並列処理開始(弱一貫性モデル)

    parallel(x,y) {
	shadow[][] = (data[-1][] + data[][-1] + \
		      data[+1][] + data[][+1]) / 4;
    }
    // 大域変数にコピー
    ImgCopy(data,shadow);

}


実行フロープログラム


/****************************************
  filter.vpe
  フィルター処理起動用スクリプト
 ****************************************/

// 通信処理初期化 -------------

#pragma host_name	host1
#pragma host_name	host2
#pragma host_name	host3
#pragma host_name	host4

// データの初期化 -------------
imgLoad("./toy.pgm", data);
set(data, CACHE, 1);

module("average", data);


// 保存するためにデータを回収
gather(data);
imgSave("result.pgm", data);




実行方法

  1. 入力画像の用意
  2. モジュールのコンパイル
    % vs_makemodule average.cc
  3. プログラムの実行
    % vios_run < filter.vpe


実行フロー設定項目


モジュールプログラム説明

実行結果・プログラム説明

このプログラムを実行すると、入力した画像がすこしぼやけた出力画像が獲られる。