博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单拼接图像的tile_images和tile_images_offset算子
阅读量:4968 次
发布时间:2019-06-12

本文共 2129 字,大约阅读时间需要 7 分钟。

 

有时候通常需要简单的拼图,不涉及图像融合之类的,仅仅是简单的平移将多张图拼接成一张图。tile_imagestile_images_offset就是用于简单拼图的2个算子。

 

谈到拼图,肯定有以下问题要明确:

1、将多少张图拼起来?由于是多张图,这需要一个元组来存储多张图片的集合。

2、是横向拼图,还是纵向拼图?这涉及拼图的方向。

3、是一张挨着一张无缝拼接吗?能不能做“有缝”的自由拼接?这涉及拼接偏移量。

 

我有这样四张图(分辨率300 * 150):

 

 

一、tile_images算子拼图

 

算子签名:

tile_images(Images : TiledImage : NumColumns, TileOrder : )

其中:NumColumns指最终拼成的图有多少TileOrder指子图片排列的顺序——垂直方向还是水平方向

 

1 read_image (Image1, '01.jpg') 2 read_image (Image2, '02.jpg') 3 read_image (Image3, '03.jpg') 4 read_image (Image4, '04.jpg') 5  6 get_image_size (Image2, Width, Height) 7 gen_empty_obj (imgs) 8 concat_obj (imgs, Image1, imgs) 9 concat_obj (imgs, Image2, imgs)10 concat_obj (imgs, Image3, imgs)11 concat_obj (imgs, Image4, imgs)12 13 *如果是垂直的排列顺序,那么先把垂直方向排满,一列一列地排14 *如果是水平的排列顺序,那么先把水平方向排满,一行一行地排15 tile_images (imgs, TiledImage,3 , 'vertical')16 get_image_size (TiledImage, Width1, Height1)

 

为什么图像是这样的呢?

因为一共有4张图,然后要求有3列,1行肯定装不下,那么至少需要2行。由于是垂直方向排列,那么就需要先把垂直方向排满,一列一列地排。

 

如果把'vertical'改成'horizontal'结果会怎样呢?

结果发现,它会先把每一行先排满,排不下了再往后排

 

 

二、tile_images_offset算子拼图

 

算子签名:

tile_images_offset(Images : TiledImage : OffsetRow, OffsetCol, Row1, Col1, Row2, Col2, Width, Height : )

 

签名看不懂没关系,看看例子就懂了。

1 read_image (Image1, '01.jpg') 2 read_image (Image2, '02.jpg') 3 get_image_size (Image2, Width, Height) 4 gen_empty_obj (imgs) 5 concat_obj (imgs, Image1, imgs) 6 concat_obj (imgs, Image2, imgs) 7  8  9 *第一、二、三、四……张图的左上角顶点的位置10 tile_images_offset (imgs, TiledImage, [0, Height], [0,0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], Width, Height *2)11 get_image_size (TiledImage, Width1, Height1)

 

为什么拼图结果是这样的呢?

我们看看代码:

tile_images_offset (imgs, TiledImage, [0, Height], [0,0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], Width, Height *2)

 

① 上面这行代码中有很多二维元组,实际上,有几张图元组就有几维

② [0, Height], [0,0]指第一张图的左上角行列坐标是(0, 0),第二张图左上角行列坐标是(Height, 0),也就说第二张图在垂直方向上紧挨着第一张图。

③ 之后的四个参数Row1, Col1, Row2, Col2大家感兴趣可以自己去看帮助文档,一般保持默认值就行。

④  Width, Height *2指的是最终拼接图的宽度是 Width, 高度是Height *2。

 

我们将第10行代码改成:

tile_images_offset (imgs, TiledImage, [0, Height], [0,100], [-1,-1], [-1,-1], [-1,-1], [-1,-1], Width, Height *3)

 

结果如下:

 

更高级的图像拼接方法可以研究gen_projective_mosaic算子。

 

转载于:https://www.cnblogs.com/xh6300/p/6648978.html

你可能感兴趣的文章
转 js+cookie 购物车
查看>>
C++之运算符重载(一元)
查看>>
文件中seek的用法补充
查看>>
UPC OJ 一道水题 STL
查看>>
【转】Linxu学习---top实践
查看>>
课堂练习之《找水王》
查看>>
poj3255
查看>>
for循环
查看>>
iptables 设置肯限制流量
查看>>
cscope usage
查看>>
今天又是新的一周,把考勤做一下吧。
查看>>
特殊篮子问题——C语言暴力破解
查看>>
java环境变量的设置
查看>>
Spring 4 : 整合 SSH
查看>>
MongoDB学习笔记Day1
查看>>
[.NET] - EventSource类的使用
查看>>
过滤URL
查看>>
[Educational Round 59][Codeforces 1107G. Vasya and Maximum Profit]
查看>>
SaltStack配置管理--状态间的关系(六)
查看>>
Hexo搭建Github静态博客
查看>>