问题标签 [seam-carving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
487 浏览

python - Seam Caving - 在 Python 中去除接缝

我正在用python实现接缝雕刻。到目前为止,我已经设法找到能量最低的接缝,但我不知道如何实施删除它。有人可以用伪代码解释一下吗?谢谢!

0 投票
2 回答
2337 浏览

java - 将大矩阵表示为一维数组是否比二维数组更有效?

语境

我正在实现一个接缝雕刻算法。

我将图片中的像素表示为一维数组

每个int代表像素的RGB。

要访问像素,我使用辅助方法,例如:

另一种方法是存储在二维数组中:

接缝雕刻算法有两个部分。

首先,它进行一些图像处理,找到能量最低的水平或垂直连接接缝。在这里,像素访问在行之间跳跃了一下。

其次,它去除了这个连接的接缝。

对于垂直接缝,我标记要删除的像素-1并创建一个新的图片数组,跳过删除的像素,如下所示:

对于水平接缝,给定特定列,我将该列的已删除像素之后的所有像素向上移动一行,如下所示:

问题

显然,由于每个子数组的开销,一维数组使用较少的物理内存,但考虑到我迭代矩阵的方式,二维数组是否会更有效地被 CPU 缓存,从而更高效?

这些阵列在加载到 CPU 缓存和 RAM 中的方式有​​何不同?一维数组的一部分会进入一级缓存吗?一维和二维数组如何加载到内存中?它会取决于数组的大小吗?

0 投票
3 回答
1453 浏览

java - 旋转 BufferedImage 会改变它的颜色

我正在尝试编写一个类来缝合 x 和 y 方向的雕刻图像。x 方向有效,为了减少 y 方向,我想简单地将图像旋转 90°,并在已经重新缩放的图像上运行相同的代码(仅在 x 方向上),然后将其旋转回其初始状态。

我找到了一些东西AffineTransform并尝试了它。它实际上产生了一个旋转的图像,但是弄乱了颜色,我不知道为什么。

这是所有代码:

}

只需更改文件名
BufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));并尝试它。

执行后,您将获得 4 张图像:一张热图、一张带有接缝的图像和一张重新缩放的图像。最后一张图片是一个测试,看看旋转是否有效,它应该显示一个旋转的图像,但颜色失真......

帮助将不胜感激!

编辑:

在此处输入图像描述

0 投票
1 回答
113 浏览

matlab - 在 Matlab 中删除 RGB 图像中的指定像素

接缝雕刻的一部分涉及在找到接缝后将其移除。如果我有接缝的索引,我将如何从图像的每一行中删除它

图像(我,删除)= [];

不起作用,因为它的尺寸错误。重建图像本身的唯一方法是什么?

0 投票
1 回答
101 浏览

python - Seam Carving 在 python 中的一个循环中计算成本

如何在一个循环中遍历python的行来计算Seam Carving的能量成本? Seam Carving Wiki 就像 wiki 中的动态编程一样,我需要最后一行的 min_cost 来表示可能的三个单元格,并存储成本和路径。

而且,使用两个循环非常慢,所以有人知道如何提高效率吗?

0 投票
1 回答
618 浏览

python - 接缝插入坐标 - 接缝雕刻

我在理解使用 Seam Carving 放大图像的接缝插入时遇到了一些麻烦。AFIK 将图像放大 k 个像素,有必要删除 k 个接缝,记录它们的坐标并使用它们向后重现该过程,即重新添加已删除的接缝但复制它们并对相邻接缝应用某种平均值(我是不关心这个,因为它应该是容易的部分)。我的困惑来自记录坐标的正确性:它们是从其中移除接缝的图像的本地位置,因此通过“恢复”第一个接缝,每个其他记录的接缝坐标都变得无效。我是否应该更正这些坐标,检查是否每个剩余的要添加接缝的像素坐标都在先前添加的接缝之后?这看起来相当繁琐且效率极低,

我不确定我是否正确地传达了我的疑问。让我知道是否不是这种情况,尽管我试图尽可能清楚。