// UnSharp.v  アンシャープマスクプログラム

#define C_SIZE 1 // キャッシュ半径

module UnSharp(in:input,out:output)
int in on pixel cache C_SIZE;
int out on pixel;
{
    parallel{
	int sum;
	// 入力画像のラプラシアンをとったものを入力画像から引く
	sum = -in[-C_SIZE][-C_SIZE] -in[-C_SIZE][] -in[-C_SIZE][+C_SIZE]
	      -in[][-C_SIZE]        +in[][]*9      -in[][+C_SIZE]
              -in[+C_SIZE][-C_SIZE] -in[+C_SIZE][] -in[+C_SIZE][+C_SIZE];
	
	if(sum < 0) sum = -sum;

	out[][] = sum;
    }
}

フィルタリングメインフローへ戻る

VIOS トップページ