Interface2017年05月号新画像処理101を読む

4-2 ひずみ補正等に使える並行四辺形変換「スキュー変換(水平)」

アファイン変換で平行移動していない場合

#http://imagingsolution.blog107.fc2.com/blog-entry-284.html

import math as m

img_src = cv2.imread("data/img_4-2.bmp")
eight,width,ch = img_src.shape
"""
warpAffine
画像のアフィン変換を行います.

パラメタ:
src – 入力画像
M – 2×3 の変換行列
dsize – 出力画像のサイズ
flags – 補間手法( resize() を参照してください)と, M が逆変換( dst  \rightarrow src )であることを意味するオプションフラグ WARP_INVERSE_MAP の組み合わせ
borderMode – ピクセル外挿手法. borderInterpolate() を参照してください. borderMode = BORDER_TRANSPARENT の場合,入力画像中の「はずれ値」に対応する出力画像中のピクセルが,この関数では変更されないことを意味します
borderValue – 定数境界モードで利用されるピクセル値.デフォルトでは 0 です
"""
mat = np.float32(
[[1,-m.tan(m.pi/6),0],
[0,1,0]])

img_dst = cv2.warpAffine(img_src,mat,(width,eight))
#描画する
cv2.imshow("img_src",img_src)
cv2.imshow("img_dst",img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

f:id:bitop:20180218082829p:plain

f:id:bitop:20180218083027p:plain