在当今数位时代,图片的显示格式不断演变,从手机到大屏幕,每一种媒介都需要适合的图片比例。然而,如何在不影响图片质量的情况下,灵活地改变图片的尺寸却成了一个大挑战。为了解决这一问题,Shai Avidan 和 Ariel Shamir 在 2007 年发明的 seam carving
技术显示了其独特的智慧与魅力。
Seam carving 是一种内容感知图像缩放的演算法,透过建立图像中的“缝”(无形的路径),自动移除或插入这些缝以调整大小。
这项技术的核心在于其如何评估图像中的每个像素重要性。通过计算每个像素的能量值(重要性),seam carving 能够决定哪些像素应被移除,以保持图片的整体结构和重要细节。值得一提的是,seams 既可以是垂直的,也可以是水平的,这取决于最终希望达到的效果。
在计算缝的过程中,演算法寻找一条从图片一端到另一端的最小能量路径。这项工作可以通过许多计算方法实现,例如 Dijkstra 算法、动态规划或贪婪算法等。这里,我们将重点介绍动态规划的应用。
动态规划是一种通过存储子计算结果来简化复杂结果计算的编程方法。
在计算纵向缝的过程中,对于每一行的每个像素,将其能量与三个上方像素的能量进行比较。这样的计算不仅能够有效地得出最佳缝,还能透过多线程实现高效的并行处理。
尽管 seam carving 有着众多优点,但也存在着一定的挑战。某些情况下,算法需要用户提供的资讯以减少错误。例如,用户可以标记需要保存的区域,特别是在涉及人脸的图片时,更是可以利用人脸检测技术来实现更好的效果。
算法在移除低能量缝时,可能会导致新的高能量缝的出现。为了解决这个问题,需模拟缝的移除,然后检查能量变化。
Adobe 在其 Photoshop CS4 中引入了这项技术,将其称为“内容感知缩放”。由于这个技术的授权为非独占性,因此其他许多图形应用程序也开始实施此项技术,包括 GIMP、ImageMagick 等。这些实现不仅推动了图像处理技术的进步,也使得普通用户能够轻易使用这项先进的技术。
该演算法的改进和扩展包括更好的能量函数、对视频的应用,以及通过神经变形场来扩展到 3D 场景。
回顾来看,seam carving 作为一项重要的图像重定向技术,尽管在某些评比中排名较低,但却能成为高排名算法中的一部分,显示出它在多操作结合上的潜力。
如今,seam carving 不仅在静态图像处理中发挥著作用,也被逐渐应用于视频处理及甚至是 3D 场景的改进之中。而在未来,我们又将如何应用这些无形的“缝”,来重新定义我们对图像的理解和使用呢?