单应性变换、仿射变换、透视变换,RANSC,opencv

参考:https://blog.csdn.net/qq_29462849/article/details/80728757
参考:https://blog.csdn.net/mogebuyi/article/details/83036369
参考:https://docs.opencv.org/4.5.2/d9/d0c/group__calib3d.html#ga59b0d57f46f8677fb5904294a23d404a

一、 仿射变换与透视变换

1、透视变换(单应性变换 Homography):

[ X Y W ] = [ m 11 m 12 m 13 m 21 m 22 m 23 m 31 m 32 m 33 ] [ x y 1 ] \begin{bmatrix} X \\ Y \\ W \\ \end{bmatrix}= \begin{bmatrix} m11 & m12 & m13 \\ m21 & m22 & m23 \\ m31 & m32 & m33 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} XYW=m11m21m31m12m22m32m13m23m33xy1

  • 长方形映射为一般四边形

2、仿射变换:

[ X Y W ] = [ m 11 m 12 m 13 m 21 m 22 m 23 0 0 1 ] [ x y 1 ] \begin{bmatrix} X \\ Y \\ W \\ \end{bmatrix}= \begin{bmatrix} m11 & m12 & m13 \\ m21 & m22 & m23 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} XYW=m11m210m12m220m13m231xy1

[ X Y ] = [ A 11 A 12 b 1 A 21 A 22 b 2 ] [ x y 1 ] \begin{bmatrix} X \\ Y \\ \end{bmatrix}= \begin{bmatrix} A_{11} & A_{12} & b_1 \\ A_{21} & A_{22} & b_2 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} [XY]=[A11A21A12A22b1b2]xy1

  • 长方形映射为平行四边形

3、平移:

[ X Y W ] = [ 1 0 m 13 0 1 m 23 0 0 1 ] [ x y 1 ] \begin{bmatrix} X \\ Y \\ W \\ \end{bmatrix}= \begin{bmatrix} 1 & 0& m13 \\ 0 & 1 & m23 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} XYW=100010m13m231xy1

  • 长方形映射为长方形

二、使用RANSAC图像配准

1、透视变换

Mat cv::findHomography	(	InputArray 	srcPoints,
														InputArray 	dstPoints,
														OutputArray 	mask,
														int 	method = 0,
														double 	ransacReprojThreshold = 3 )	
# 例子
cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)

dst = cv2.perspectiveTransform(pts, M)

2、仿射变换

cv::Mat cv::estimateAffine2D	(InputArray 	from,
																InputArray 	to,
																OutputArray 	inliers = noArray(),
																int 	method = RANSAC,
																double 	ransacReprojThreshold = 3,
																size_t 	maxIters = 2000,
																double 	confidence = 0.99,
																size_t 	refineIters = 10 )		

[ x y ] = [ a 11 a 12 a 21 a 22 ] [ X Y ] + [ b 1 b 2 ] \begin{bmatrix} x\\ y\\ \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12}\\ a_{21} & a_{22}\\ \end{bmatrix} \begin{bmatrix} X\\ Y\\ \end{bmatrix} + \begin{bmatrix} b_1\\ b_2\\ \end{bmatrix} [xy]=[a11a21a12a22][XY]+[b1b2]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值