opencv-第六章-图像变换-重映射、仿射变换、透视变换

本文详细介绍了OpenCV中的图像变换,包括重映射、仿射变换和透视变换。重映射通过cvRemap函数实现,用于普通几何变换。仿射变换使用cvWarpAffine,适用于矩形到平行四边形的转换。透视变换提供更大的灵活性,如矩形转梯形,通过cvWarpPerspective函数实现。此外,还讲解了稠密和稀疏变换的区别以及如何计算变换矩阵。
摘要由CSDN通过智能技术生成

opencv-第六章-图像变换

重映射

在幕后,许多变换都有一个共同点。具体来说,它们会把一幅图像中一个位置的像素重映射到另一个位置。在这种情况下,就始终需要一些平滑的映射(我们希望实现的),但并不是总能做到像素一一对应。


cvRemap
对图像进行普通几何变换
  void cvRemap( const CvArr* src, CvArr* dst,
  const CvArr* mapx, const CvArr* mapy,
  int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
  CvScalar fillval=cvScalarAll(0) );
  src
  输入图像.
  dst
  输出图像.
  mapx
  x坐标的映射 (32fC1 image).
  mapy
  y坐标的映射 (32fC1 image).
  flags
  插值方法和以下开关选项的组合:
  CV_WARP_FILL_OUTLIERS - 填充边界外的像素. 如果输出图像的部分象素落在变换后的边界外,那么它们的值设定为 fillval。
  fillval
  用来填充边界外面的值.
  函数 cvRemap 利用下面指定的矩阵变换输入图像:
  dst(x,y)<-src(mapx(x,y),mapy(x,y))
  与其它几何变换类似,可以使用一些插值方法(由用户指定,同cvResize)来计算非整数坐标的像素值。

cvWarpAffine附加标志位的值

flags:

CV_INTER_NN              最近邻

CV_INTER_LINEAR       双线性(默认)

CV_INTER_AREA          像素区域重新采样

CV_INTER_CUBIC         双三次插值


拉伸、收缩、扭曲和旋转

这些拉伸、扭曲、旋转图像的函数叫做几何转换函数。对于平面区域。有两种方式的几何转换:一种是基于2x3矩阵进行的变换,也叫仿射变换;另一种是基于3x3矩阵的变换,又叫做透视变换或者单应性映射。可以把后一种变换当做一个三维平面被一个特定观察者感知的计算方法,而该观察者也许不是垂直观测该平面。


仿射变换可以将矩形转换成平行四边形。它可以将矩形的边压扁但必须保持边是平行的,也可以将矩形旋转或者按比例变化。透视变换提供了更大的灵活性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值