Q
var_thresholdのパラメーターの使用方法を教えてほしい。
A
var_thresholdはdyn_thresholdと同様に、閾値を動的に決定することで輝度値の変動にもロバストな2値化を実現しています。dyn_thresholdは、通常、事前に検査画像に対して平均化フィルターをかけた画像を入力に利用しますが、var_thresholdはパラメーターで指定したマスクサイズを利用して内部的に平均化して利用します。 内部のアルゴリズムとして、var_thresholdにはパラメーターMask WidthとMask Heightが用意されています。 まず、この指定したサイズのマスクで平均輝度値と標準偏差が算出されます。このとき、入力のパラメーター StdDevScaleが0以上の時には、以下の式が実行されます。AbsThresholdは別途設定するvar_thresholdのパラメーターになります。
v(x, y) = max(StdDevScale x 標準偏差、AbsThreshold)
また、StdDevScaleが0よりも小さいときには以下の式が実行されます。
v(x, y) = min(StdDevScale x 標準偏差、AbsThreshold)
上記式の算出後、パラメーター LightDarkにより、以下の計算式がおこなわれます。
LigthDark = 'light'のとき
検査入力画像(x, y) >= 平均画像(x,y) + v(x,y)
LightDark = 'dark'のとき
検査入力画像(x, y) <= 平均画像(x,y) - v(x, y)
LightDark = 'equal'のとき
平均画像(x,y) - v(x, y) <=検査入力画像(x, y) <= 平均画像(x,y) + v(x,y) LightDark = 'not_equal'のとき 検査入力画像(x, y) > 平均画像(x,y) - v(x, y)
または
検査入力画像(x, y) < 平均画像(x,y) + v(x, y)
上記の式が満たされるピクセルが領域として生成され出力されます。