重映射

作者: 大龙10 | 来源:发表于2021-10-09 14:14 被阅读0次

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第5章 几何变换

5.5 重映射

1)定义

  把一幅图像内的像素点放置到另外一幅图像内的指定位置,这个过程称为重映射。OpenCV提供了多种重映射方式,但是我们有时会希望使用自定义的方式来完成重映射。

2)函数

  OpenCV内的重映射函数cv2.remap()提供了更方便、更自由的映射方式,其语法格式如下:

dst = cv2.remap( src, map1, map2, interpolation[, borderMode[, borderValue]] )

式中:

  • dst代表目标图像,
    它和src具有相同的大小和类型。
  • src代表原始图像。
  • map1参数有两种可能的值:
    表示(x, y)点的一个映射。
    表示CV_16SC2 , CV_32FC1, CV_32FC2类型(x, y)点的x值。
  • map2参数同样有两种可能的值:
    当map1表示(x, y)时,该值为空。
    当map1表示(x, y)点的x值时,该值是CV_16UC1, CV_32FC1类型(x, y)点的y值。
  • Interpolation代表插值方式,这里不支持INTER_AREA方法。具体值参见表5-1。
  • borderMode代表边界模式。
    当该值为BORDER_TRANSPARENT时,表示目标图像内的对应源图像内奇异点(outliers)的像素不会被修改。
  • borderValue代表边界值,
    该值默认为0。

5.5.1 映射参数的理解

  重映射通过修改像素点的位置得到一幅新图像。
  在构建新图像时,需要确定新图像中每个像素点在原始图像中的位置。因此,映射函数的作用是查找新图像像素在原始图像内的位置。该过程是将新图像像素映射到原始图像的过程,因此被称为反向映射。在函数cv2.remap()中,参数map1和参数map2用来说明反向映射,map1针对的是坐标x, map2针对的是坐标y。

  • 需要说明的是,map1和map2的值都是浮点数。
    因此,目标图像可以映射回一个非整数的值,这意味着目标图像可以“反向映射”到原始图像中两个像素点之间的位置(当然,该位置是不存在像素值的)。这时,可以采用不同的方法实现插值,函数中的interpolation参数可以控制插值方式。正是由于参数map1和参数map2的值是浮点数,所以通过函数cv2.remamp()所能实现的映射关系变得更加随意,可以通过自定义映射参数实现不同形式的映射。
  • 需要注意的是,函数cv2.remap()中参数map1指代的是像素点所在位置的列号,参数map2指代的是像素点所在位置的行号。
    例如,我们想将目标图像(映射结果图像)中某个点A映射为原始图像内处于第0行第3列上的像素点B,那么需要将A点所对应的参数map1对应位置上的值设为3,参数map2对应位置上的值设为0。所以,通常情况下,我们将map1写为mapx,并且将map2写成mapy,以方便理解。
  • 同样,如果想将目标图像(映射结果图像)中所有像素点都映射为原始图像内处于第0行第3列上的像素点B,那么需要将参数map1内的值均设为3,将参数map2内的值均设为0。

相关文章

  • java基础系列07--集合(3)

    JAVA集合三 Map集合 java.util 下的接口Map,将键映射到值的对象。一个映射不能包含重...

  • 直耸云间

    直耸云间观不同, 青山环视佛在胸。 普光映射河宴好, 事顺国安遂愿重。

  • JavaScript中数组的常用操作

    数组的遍历 数组的映射 数组的简化 数组的连接 获取数组的片段 数组的拷贝 查找数组 数组去重

  • nginx 映射路径

    映射盘符 映射路径 访问/evaluate 会被映射到 localhost:8080/evaluate 映射路径 ...

  • 开发指南

    显示界面层设计模式 对象-对象映射 简单属性映射 复杂类型映射 双向映射 隐式和显示映射 递归和集合映射 依赖注入...

  • 映射、函数

    1、映射 映射将键映射到值。映射的零值为nil。nil映射既没有键,也不能添加键。make函数会返回给定类型的映射...

  • spring-mvc-2-常用注解

    使用@RequestMapping 注解映射请求 映射类 映射方法Paste_Image.png 映射请求参数,请...

  • 集合框架--map

    map在java中表示一个键值对的映射集合,常用的实现类有HashMap和HashTable 在Map中键值不能重...

  • 08 | 映射

    映射是无序集合,无序的原因是映射的实现使用来散列表 声明 空映射与nil映射 映射是引用类型在函数间传递映射并不会...

  • Myabtis入门(二)之映射

    映射分为输出映射和出入映射 输入映射(参数映射)简单类型:String和8种基本类型pojo类型:我们自己封装po...

网友评论

      本文标题:重映射

      本文链接:https://www.haomeiwen.com/subject/rglinltx.html