接缝裁剪

✍ dations ◷ 2025-09-08 04:43:14 #图像处理

接缝裁剪(Seam carving),是一个可以针对图像内容做正确缩放的算法(由Shai Avidan和Ariel Shamir所发表)。概念上,算法会找出一系列的接缝(seam)(接缝是在图像中最不重要的一连串像素),接着利用接缝对图像做缩放。如果是要缩小图像,则移除这些接缝,若是放大,则在这些接缝的位置上,插入一些像素。接缝裁剪可以人工定义一些不会被修改的像素区域,也可以从图像中移除整个物体。

接缝裁剪算法的主要目的是图像重定向(image retargeting),将图像无失真的显示在各种大小的萤幕或位置上,比如说,手机、投影幕等等。

接缝有两种形式,水平或垂直的。接缝本身是一条由像素构成的路径,水平的接缝连接图像的左侧和右侧,路径中的像素个数和图像的列数一致。垂直接缝则类似,连接图像的顶部和底部,像素个数和图像的行数一致。接缝上每个像素都有存在一个称为重要性或者能量的指标,这个指标的值是根据像素的邻接像素计算得到的。一个像素和周边像素的相似度越高,则其重要性或者说能量就越低。

1. 首先,我们拿到一张需要缩小的照片(这里以缩小举例)

2. 接着我们计算照片中每一个像素的强度(energy),这一步可以由很多算法完成,这里以gradient magnitude为例。

3. 有了每一个pixel的强度后,我们可以利用一些算法,像是dynamic programming等等,找到图中数条强度较低的seams。

Seams 在gradient magnitude图中的样子:

Seams 在原始图片中的样子:

(从seams在原始图中的样子,我们可以看到所谓强度低的seam,基本上就可以表达照片中相对不重要的部分)

4. 接着我们把这些seams拿掉,就可以拿到一张缩小后的照片。

5. 若是我们需要放大图片,则我们可以在这些我们找到的seam的旁边,增加pixel,而pixel的value可以简单的取附近的pixel的平均。

在这个算法中,我们每次要找出一条照片中能量最小的seam,这里的能量可以想成是频率低,或者是照片中较为不重要的pixel。而找出seam的方法有很多种,我们可以利用dynamic programming或者其他算法完成。

以下为matlab的ref code,示范的是找出水平的seam后,放大图片。

相关

  • 重症肌无力重症肌无力(英语:Myasthenia Gravis,简写MG),是慢性的神经肌肉疾病(英语:Neuromuscular disease),会造成不同程度的肌肉无力(英语:Muscle weakness)。最常影响眼部、脸部(英语:Facial musc
  • 热力学平衡热力学平衡,简称热平衡,指一个热力学系统在没有外界影响的条件下,系统各部分的宏观属性(如物质的量、能量、体积等)在长时间内不发生任何变化的状态。热平衡是热力学中的一个基本
  • 深度昏迷昏迷(英语:coma)语出希腊语κῶμα(“沉睡”的意思),是一种深度失去意识的状态。处于这个状态的病人无法被唤醒,对光和声音没有反应,没有睡眠-惊醒周期,也不能随意活动。昏迷有多种
  • 血管收缩素I1N9U, 1N9V, 2JP8, 2WXW, 2X0B· hormone activity · hormone activity · protein binding · growth factor activity · acetyltransferase activator activity ·
  • 魁北克独立魁北克主权运动(法语:Mouvement souverainiste du Québec,英语:Quebec sovereignty movement)指的是追求加拿大魁北克省实现独立建国或拥有更多自治权的政治运动。魁北克在历史
  • 角足龙类角足龙类(学名:Cerapoda)是鸟臀目的一个演化支或亚目。它们是颌齿类里,装甲类的姐妹分类单元。角足龙类的特征是下颌牙齿有一层厚珐琅质。它们的牙齿咀嚼时磨损不平均,并发展出锐
  • 坪顶古圳七星墩圳今又另称或包含坪顶古圳、双溪圳及登峰玔,为台湾大台北地区史载最早开发的人工水圳。该水圳初建于1725年(清朝雍正年间),开垦者为台湾举人王锡棋。七星墩圳之名源自该圳
  • 黄桃益黄桃益(1966年-)湖南邵东人,中国人民解放军少将。黄桃益曾长期在中国人民解放军驻澳门部队服役,曾任该部队参谋长、副司令员。2016年,出任中国人民解放军陆军第四十一集团军副军长
  • 美国的北欧主义北欧人种,是二十世纪前半叶时对欧洲白色人种分类中的一支的表述。分布于斯堪的纳维亚诸国、波罗的海沿岸诸国、波罗的海三国、冰岛、德国北部、英国、荷兰及波兰北部,也曾经分
  • 三都水族自治县三都水族自治县是中华人民共和国贵州省黔南布依族苗族自治州下属的一个自治县。面积2384平方公里,2012年人口32万。邮政编码558100,县政府驻三合街道。是全国唯一的水族自治县