OpenCV4.5.5学习笔记(十四):重映射remap(),仿射变换warpAffine()和直方图均衡化equalizeHist()

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

笔者本科时候有幸接触了OpenCV3.2.0版本的学习,后因考研压力不得不暂时停下学习的脚步,现在考研任务结束了,未来的导师也是从事的该方向,笔者又开始了新一轮的学习。回来发现OpenCV已经出到了4.5.5版本,遂重新下载新版本并决定记录这一学习历程。由于笔者水平有限,可能有错误之处还请诸位大佬多多包涵并烦请指出,让我们一起学习,共同进步。
首先需要说明的是:我是按着毛星云前辈编写的OpenCV3编程入门进行学习的,我会尽力把星云前辈的程序转成符合OpenCV4.5.5版本的。毛星云前辈于2021年12月11日不幸过世,他是我非常敬仰的一位业内大佬,我也是看他的书才开始接触OpenCV。


一、重映射remap()

这是从图像中的一个位置获取像素并将它们定位到新图像中的另一个位置的过程。
为了完成映射过程,可能需要对非整数像素位置进行一些插值,因为源图像和目标图像之间并不总是存在一对一的像素对应关系。
我们可以将每个像素位置( x , y)的重映射表示为:
在这里插入图片描述
在这里G( )是重新映射的图像,f( )是源图像和h(x,y),h (x , y)是作用于(x , y)的映射方法函数。
比如使得一个图像反转,就是一个简单重映射
我们常用的是remap()函数
在OpenCV官方文档中是这么写的:
void cv::remap (
InputArray src,
OutputArray dst,
InputArray map1,
InputArray map2,
int interpolation,
int borderMode = BORDER_CONSTANT,
const Scalar & borderValue = Scalar()
)
第一个参数是源图像,
第二个参数是目标图像。它的大小与 map1 相同,类型与 src 相同,
第三个参数是(x,y) 点或仅 x 值的第一个映射,
第四个参数是y 值的第二个映射分别具有 CV_16UC1、CV_32FC1 或无类型,
第五个参数是插值方法,
第六个参数是像素外推法,
第七个函数是在恒定边框的情况下使用的值。默认为 0


二、仿射变换warpAffine()

可以用矩阵乘法(线性变换)后跟向量加法(平移)的形式表示的变换。
综上所述,我们可以使用仿射变换来表达:

  1. 旋转(线性变换)
  2. 平移(向量加法)
  3. 缩放(线性变换)

仿射变换表示两个图像之间的关系:
在这里插入图片描述
在这里插入图片描述
我们常用的是warpAffine()函数
在OpenCV官方文档中是这么写的:
void cv::warpAffine (
InputArray src,
OutputArray dst,
InputArray M,
Size dsize,
int flags = INTER_LINEAR,
int borderMode = BORDER_CONSTANT,
const Scalar & borderValue = Scalar()
)
第一个参数是源图像,
第二个参数是目标图像。它的大小与 map1 相同,类型与 src 相同,
第三个参数是2×3变换矩阵
第四个参数是输出图像的大小,
第五个参数是插值方法,
第六个参数是像素外推法,
第七个函数是在恒定边框的情况下使用的值。默认为 0


三、直方图均衡化

图像直方图:它是图像强度分布的图形表示,它量化了所考虑的每个强度值的像素数。
在这里插入图片描述
直方图均衡:这是一种提高图像对比度的方法,以扩展强度范围
为了更清楚,从上图中,可以看到像素似乎聚集在可用强度范围的中间。直方图均衡所做的就是扩大这个范围。应用均衡后,我们得到一个像中心图一样的直方图。生成的图像如右图所示:
在这里插入图片描述
我们常用的是equalizeHist()函数
在OpenCV官方文档中是这么写的:
void cv::equalizeHist (
InputArray src,
OutputArray dst
)
第一个参数是源8位单通道图像,
第二个参数是与 src 大小和类型相同的目标图像

该函数使用以下算法均衡输入图像的直方图:

  1. 计算直方图H对于 src 。
  2. 标准化直方图,使直方图 bin 的总和为 255。
  3. 计算直方图的积分:
    在这里插入图片描述

总结

今天主要学习了重映射remap(),仿射变换warpAffine()和直方图均衡化equalizeHist(),星云前辈的《OpenCV3》关于这一部分讲的特别好,非常通俗易懂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力找工作的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值