图像接缝剪裁SeamCarving的实现

源码 https://github.com/Gaobx/SeamCarving

@Author : ydk & gaojx

内容

  1. 使用seam-carving实现图像resize
  2. 使用seam-carving实现带保护protect的resize
  3. 使用seam-carving实现物体remove
  4. 人脸识别,进而对人脸进行保护
  5. 研究不同能量函数完成的seam-carving效果

原理

  1. 使用事先定义好的能量函数,针对图像上每个像素点计算其对应能力值,然后使用动态规划算法寻找当前图片中能量最小的一条线,根据所需要实现功能的不同进行不同操作。
  2. 采用了两个不同的能量函数,一种是论文使用的基于灰度扫描计算梯度的E1-Error。另一种是RGB-Error,即对R,G,B三个色彩通道分别计算梯度,求和作为能量。

步骤

  1. resize的删除部分
  2. resize的拉伸部分
  3. remove 标记(mask)

功能及结果

  1. 缩放效果图
  2. Remove效果图
  3. seams show
    • 我们通过记录seams_index,可以多次重放resize及remove的操作,并显示算法找到的能量线。
  4. face detection
  5. 指定区域保护(mask protect)
  6. 指定区域擦除(mask remove)
    • 根据mask图想的标记部分对指定图像进行remove
    • 指定矩形框内的部分进行remove
  7. 软件截图

参考文献

\[1\] Daniel Vaquero, et al. "A survey of image retargeting techniques," Proc. SPIE 7798, Applications of Digital Image Processing XXXIII, 779814 (7 September 2010).

源码参考

  1. https://github.com/vivianhylee/seam-carving