接缝裁剪

✍ dations ◷ 2024-12-23 00:30:59 #图像处理

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

相关

  • 布加综合征布加综合征(Budd-Chiari syndrome,BCS),根据翻译不同也被称为巴德-吉亚利综合征,是由于各种原因引起的肝静脉和/或其开口上段下腔静脉部分或完全梗阻性病变引起的肝静脉—下腔静
  • 珍妮特·罗利珍妮特·戴维森·罗利(英语:Janet Davison Rowley,1925年4月5日-2013年12月17日),美国生物学家和医学家,美国芝加哥大学的血液学家和教授。她于1946年在芝加哥大学获学士学位,2年后
  • 巴伐利亚夺权巴伐利亚苏维埃共和国(德语:Bayerische Räterepublik)是德国十一月革命期间在巴伐利亚短暂出现的 一个国家。1919年4月6日由德国独立社会民主党、无政府主义者和巴伐利亚农民
  • 美国国土安全部美国国土安全部(英语:United States Department of Homeland Security,缩写:DHS)是美国联邦政府于2003年1月24日成立的联邦行政部门,是目前美国最新的联邦内阁部门以及职员人数第
  • Paramedian中线旁桥脑网状系统(Paramedian Pontine Reticular Formation),简称PPRF或外旋旁核(Paraabducens nucleus)属于桥脑网状结构的一部分。PPRF与眼球动作(英语:Eye movement)的调控有关
  • 财阀解体财阀解体(日语:財閥解体/ざいばつかいたい)指的是1945年到1951年7月10日期间的盟军统治时期,同盟国最高司令官总司令部(GHQ)的对日本占领政策之一。其主要目的是拆解被视为“侵略战
  • 大通片赣语大通片,赣语九个方言片之一。其通行于湖北的大冶、咸安、嘉鱼、赤壁、崇阳、通城、通山、阳新、监利(部分),和湖南的临湘(部分)、岳阳(部分)、华容等地。大通片共有六个声调。古
  • 米酒(막걸리)马格利(韩语:막걸리),又称农酒,是朝鲜半岛一种用米发酵而制成的浊米酒(醪醴)。马格利酒精含量6-8%,带有甜味。在梨花盛开季节生产的马格利,加有梨花的味道,因此称为“梨花酒”。韩国人
  • 鹦鹉螺科鹦鹉螺科(学名:Nautilidae)为头足纲鹦鹉螺目的一科,海洋软体动物,仅存于印度洋和太平洋海区,北至日本南方,南至大堡礁,西至安达曼海,东至斐济等地区均有发现。位于鹦鹉螺主要产地的法
  • 克罗库斯平原战役克罗库斯平原战役(Battle of Crocus Field),又可被称为沃洛战役(Battle of Volo)。发生在古希腊第三次神圣战争期间的一场重要战役,一方是奥诺马尔库斯(Onomarchus)所率领的福基斯军