概要
OpenCV で画像にエンボス処理を行う方法について解説します。
エンボス処理
入力画像の (x,y) の画素値を src(x,y) としたとき、符号を反転させ、x,y 共に t だけ平行移動した位置の画素 −src(x+t,y+t) を足して、出力画像の画素を作成する処理をエンボス (emboss) といいます。
dst(x,y)=src+(−src(x+t,y+t))
1次元で考えると、以下のようにエッジ部分を強調する処理であると理解できます。
フィルタを使用したエンボス処理
エンボス処理はフィルタリングでも行えます。
水平方向のエンボスフィルタ
0100000−10垂直方向のエンボスフィルタ
00010−1000斜め方向のエンボスフィルタ
10000000−1,−10000000100−1000100,001000−100
OpenCV でのエンボス処理
sample.jpg
cv2.filter()
で画像にエンボスフィルタを適用できます。
演算結果は [0,255] に収まらないので、ddepth=cv2.CV_32F
を指定して、結果は float32
型の配列で受け取ります。その後、[0,255] の範囲にスケールします。
水平方向のエンボスフィルタ
垂直方向のエンボスフィルタ
斜め方向のエンボスフィルタ
エンボスをより強くする
コメント