之前介绍了 OpenCV 的 remap 函数,Halcon 中也有类似函数 MapImage,本文介绍 MapImage,并将 OpenCV 的 remap 转换为 MapImage。
map_image {#map-image}
- 函数使用
- 其中:
- Image: 需要被映射修改的图像
- Map: 映射矩阵
- ImageMapped: 映射结果
- 可以看到核心在于 Map 矩阵如何定义和使用。
- Map 为和原始图像一样大小的 5 通道图像,第一个通道格式为 32 bits 深度
int4
类型,表示的是每个需要被映射的图像像素位置对应的原始图像像素编号
这是一张宽度 3072 的图像的映射示例,每个像素的值表示的是原始图像的像素编号
- Map 的第2-5个通道的格式为 16 bits 的
uint2
类型,表示的是插值四个像素的占比,第一个通道指向的是四个相邻像素中左上角的一个 - 后四个通道指向的分别是四个比例:
- 用
uint2
表示比例的思路是四个数的和是 65535(可能会有1-2的误差),根据数值占 65535 的比例来决定四个像素的插值比例 - 每个通道的图像都看起来挺神奇的,这里展示一张示例图像
remap -> map_image {#remap-map-image}
- OpenCV 的 remap 需要两个 map 作为输入,可以在 C++ 中将这两个 map 转为 halcon 的 map
参考资料 {#参考资料}
文章链接:
https://www.zywvvd.com/notes/coding/halcon/halcon-mapimage/halcon-mapimage/