使用Python进行分形图像缩放

5 投票
3 回答
4713 浏览
提问于 2025-04-15 16:06

我现在的情况是,手头有一些分辨率比较低的图片(通过一个API获取,没法得到更高分辨率的图片),而我需要生成高分辨率的图片。

我看过PIL,这个工具在很多方面都很好用……但在放大图片方面就不太行。

它提供了一些常见的缩放算法,包括:

  • 最近邻算法
  • 双线性插值
  • 双立方插值
  • 抗锯齿

我想使用分形缩放(参考Jeff在Coding Horror上的文章),但可惜的是,PIL并不支持这种缩放方式。

我进一步在谷歌上搜索,也没有找到其他库可以提供分形图像缩放。

这种东西真的存在吗?还是我真的得下定决心自己写一个分形缩放算法?

我不是专家,但从我现在的角度来看,这看起来学习起来难度挺大的 :(

如果没有这样的库,或许你能给我一些建议,告诉我在哪里可以学习分形压缩算法?

3 个回答

1

看看这个使用残差密集网络的解决方案:https://github.com/idealo/image-super-resolution

这个项目的文档写得很好,比较容易上手。他们还提供了docker构建和google colab的笔记本。可以查看一下这个文档

2

基于分形的图像缩放现在还比较少见,大家还没有统一认可的最佳算法。我担心你在常见的图像处理库里找不到这个方法。

而且,这种方法并不总是比双三次插值要好。它可能会产生一些不太好的效果,这对于某些类型的图像来说是不可接受的。就我个人而言,Jeff给出的示例图像在鼻子的右侧等尖锐边缘看起来有点奇怪和不自然。虽然在某些情况下可能会更好,但我不会把它随便应用到我所有的图像上。

(其他一些“高级”的放大技术也是这样,包括更为人知和广泛使用的Lanczos/Sinc方法。)

9

这里有一些算法,而这些算法在Python中是找不到的。首先,你可以看看这篇论文

作者是Daniel Glasner、Shai Bagon和Michal Irani,标题是“从单张图像中获取超分辨率”,发表在2009年的IEEE国际计算机视觉会议上,地点是日本京都。

这篇论文的内容非常先进,技术含量高,效果也很不错。如果你能把它实现成Python代码,请一定要分享给大家哦 :)

撰写回答