51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2075|回复: 7
收起左侧

[资料] 简单拼接图像的tile_images和tile_images_offset算子

[复制链接]
  • TA的每日心情
    害羞
    2018-8-3 08:11
  • 签到天数: 20 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    4

    主题

    16

    帖子

    474

    积分

    Rank: 2Rank: 2

    积分
    474
    发表于 2017-8-6 09:39:41 | 显示全部楼层 |阅读模式

    正式员工 |主题 4|帖子 16|积分 474

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    有时候通常需要简单的拼图,不涉及图像融合之类的,仅仅是简单的平移将多张图拼接成一张图。tile_images和tile_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. get_image_size (Image2, Width, Height)
    6. gen_empty_obj (imgs)
    7. concat_obj (imgs, Image1, imgs)
    8. concat_obj (imgs, Image2, imgs)
    9. concat_obj (imgs, Image3, imgs)
    10. concat_obj (imgs, Image4, imgs)

    11. *如果是垂直的排列顺序,那么先把垂直方向排满,一列一列地排
    12. *如果是水平的排列顺序,那么先把水平方向排满,一行一行地排
    13. tile_images (imgs, TiledImage,3 , 'vertical')
    14. get_image_size (TiledImage, Width1, Height1)
    复制代码

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    害羞
    2018-8-3 08:11
  • 签到天数: 20 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    4

    主题

    16

    帖子

    474

    积分

    Rank: 2Rank: 2

    积分
    474
     楼主| 发表于 2017-8-6 09:41:57 | 显示全部楼层

    正式员工 |主题 4|帖子 16|积分 474

    RE: 简单拼接图像的tile_images和tile_images_offset算子

    为什么图像是这样的呢?
    因为一共有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. tile_images_offset (imgs, TiledImage, [0, Height], [0,0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], Width, Height *2)
    9. 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算子。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    萌萌
    2019-2-1 18:33
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    38

    帖子

    132

    积分

    Rank: 1

    积分
    132

    切换助手验证会员

    发表于 2017-11-27 09:46:11 | 显示全部楼层

    试用员工 |主题 0|帖子 38|积分 132

    辛苦,辛苦了

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    该用户从未签到

    0

    主题

    0

    帖子

    216

    积分

    Rank: 2Rank: 2

    积分
    216
    发表于 2018-2-26 10:07:15 | 显示全部楼层

    正式员工 |主题 0|帖子 0|积分 216


    辛苦,辛苦了

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    该用户从未签到

    0

    主题

    0

    帖子

    216

    积分

    Rank: 2Rank: 2

    积分
    216
    发表于 2018-2-26 10:07:31 | 显示全部楼层

    正式员工 |主题 0|帖子 0|积分 216


    辛苦,辛苦了

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    该用户从未签到

    0

    主题

    4

    帖子

    94

    积分

    Rank: 1

    积分
    94

    切换助手验证会员

    发表于 2018-9-6 23:43:05 | 显示全部楼层

    试用员工 |主题 0|帖子 4|积分 94

    学习学习

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 82 天

    连续签到: 1 天

    [LV.6]常住居民II

    8

    主题

    75

    帖子

    227

    积分

    Rank: 2Rank: 2

    积分
    227

    热心会员

    发表于 2018-10-17 14:24:43 | 显示全部楼层

    正式员工 |主题 8|帖子 75|积分 227

    讲的很详细,非常赞啊,虽然是基础,但是一般的拼接是够用了

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用反馈 | 51Halcon论坛管理团队论坛管理团队

    申请友链| 小黑屋| 手机版| Archiver|  

    粤ICP备15095995号-2 粤公网安备44030602000670号

    Powered by 51Halcon机器视觉 X3.4 Licensed© 2015-2019 Comsenz Inc.

    快速回复 返回顶部 返回列表