接缝裁剪

✍ dations ◷ 2025-11-17 14:26:24 #图像处理

接缝裁剪(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后,放大图片。

相关

  • 科罗拉多州科罗拉多州(英语:State of Colorado),简称科州,是美国西部的一州,此州最著名的是拥有洛矶山脉的最高峰,地形从东侧的平原陡然升高为西侧峻岭,地理景观十分壮丽。该州首府兼最大城为
  • A04A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码A04(镇吐药和止呕药)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Coll
  • 遗传算法遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传
  • 太阳历阳历(又称太阳历,英语:Solar Calendar),起源于6000多年前的古埃及。为据地球围绕太阳公转轨道位置,或地球上所呈现出太阳直射点的周期性变化,所制定的历法;不据月亮的月相周期,岁实为
  • ω−3脂肪酸ω−3脂肪酸(Omega-3 fatty acids)又称n−3脂肪酸,是一类不饱和脂肪酸,其中最重要的3种为:ALA(存在于植物中的油),EPA和DHA(这二种发现存在于海洋动植物油中)。从脂肪酸分子中距离羧基
  • 卡卡杜国家公园卡卡杜国家公园位于澳大利亚的北领地达尔文市以东171公里,安利格特河(en:Alligator Rivers)范围内,覆盖了大约19804平方公里,南北间距大概200千米,东西约100千米的土地。大小相当
  • 明度明度(英语:Brightness)指颜色的亮度,不同的颜色具有不同的明度,例如黄色就比蓝色的明度高,在一个画面中如何安排不同明度的色块也可以帮助表达画作的感情,如果天空比地面明度低,就会
  • 注释注释可以指:
  • 周打蚬汤蛤肉汤(英语:Clam chowder)是一种巧达浓汤,主要材料为蚬,配料为马铃薯、洋葱等。蛤肉汤主要分为“新英格兰蛤肉汤”及“曼哈顿蛤肉汤”,前者以鲜奶油为汤底,后者则以番茄为汤底。
  • 人体肌肉列表这里是所有人体的肌肉列表,正常人体大约有650条骨骼肌。然而正确的肌肉数目是很难肯定的,因为不同来源的肌肉会分别被聚集成不同的肌肉束。 头和颈部的肌肉在人体的肌肉中发挥