Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 有提高图像分辨率的算法吗?_Algorithm_Image_Resolution_Image Scaling - Fatal编程技术网

Algorithm 有提高图像分辨率的算法吗?

Algorithm 有提高图像分辨率的算法吗?,algorithm,image,resolution,image-scaling,Algorithm,Image,Resolution,Image Scaling,除了使图像中的每个像素变大一点的简单缩放之外,还有什么算法或工具可以提高图像的分辨率吗 我意识到这样一种算法必须发明原始图像中不存在的像素,但我认为可能有某种算法可以智能地计算出要向图像添加哪些像素以提高其分辨率。插值: 放大图像是有风险的。超过某一点,放大图像是傻瓜的差事;你不能凭空神奇地合成无限多的新像素。而且插值像素永远不如真实像素好。这就是为什么将512x512 Lena图像放大500%的原因。找到一个更高分辨率的扫描或者你需要的图片,比在软件中升级要聪明得多 大多数像样的图像编辑器都有

除了使图像中的每个像素变大一点的简单缩放之外,还有什么算法或工具可以提高图像的分辨率吗

我意识到这样一种算法必须发明原始图像中不存在的像素,但我认为可能有某种算法可以智能地计算出要向图像添加哪些像素以提高其分辨率。

插值:

放大图像是有风险的。超过某一点,放大图像是傻瓜的差事;你不能凭空神奇地合成无限多的新像素。而且插值像素永远不如真实像素好。这就是为什么将512x512 Lena图像放大500%的原因。找到一个更高分辨率的扫描或者你需要的图片,比在软件中升级要聪明得多


大多数像样的图像编辑器都有平滑/插值过滤器来进行这种大小调整/重采样,例如,这为插值过滤器提供了多个选项。看见ImageMagick的convert程序也允许您执行此操作,在指定一个

后,如果您需要通过算法执行此操作,请查看Draemon建议的链接。您将在哪个平台上进行这些插值?大多数图形库将实现多种方法,允许您平衡速度和质量

如果您只需要调整一些图像的大小,我建议。它可以以多种方式调整图像大小,其中至少有一种方式在任何情况下都会产生出色的效果


正如其他人所指出的,你不能期望一种缩放方法发明原始图像中没有的信息。因此,你不能指望它会像《犯罪现场调查》中的那些时刻那样,他们“放大并增强”看到车牌上的号码,而这些号码在原始图像中已经模糊得无可救药。

有关实际算法,请查看

对你的问题的简单回答是:“是的,有算法,但没有一个是很好的。”正如你在问题中提到的,限制因素是需要发明像素,以便将分辨率提高到很小的程度。(这就是为什么你不能像《犯罪现场调查:迈阿密》(CSI:Miami)中那样,从闭路电视安全摄像头拍摄的照片中,从某人眼镜的反光中读出车牌号码。)


如果您只想创建一个更大的图像(用于壁挂等),那么您可以使用将使用现有信息平滑像素之间的过渡的。它不能创建新的像素,但它可以摆脱那种四四方方、像素化的外观。

先前答案的补充:请注意,您的问题的答案在很大程度上取决于您所说的分辨率——显示设备、捕获设备或查看设备(即人眼)的分辨率我假设您谈论的是光栅图像(矢量图像不存在这个问题)


您必须接受,与以较低分辨率拍摄的同一场景的图片相比,以较高分辨率拍摄的图片将包含更多的图像信息(即细节)。没有办法凭空添加这些信息。缩放算法基于离散光栅图像元素之间的连续性假设合成一些信息。该“新”信息实际上不是新的,而是从预先存在的图片信息派生出来的,因此不能认为它具有100%匹配原始场景的概率。更好的算法可能会产生更好的概率,但其结果的匹配概率始终小于1。

您可以尝试使用autotrace或potrace等工具对图像进行矢量化,并以您喜欢的任何分辨率使用它。但是它在计算上非常昂贵,因此最终得到的图像颜色/特征很少,如果需要快速处理整个图像,甚至更少。

在某些情况下,超分辨率算法可能会有所帮助。 我不知道所有涉及的内容(需要软/硬件和初始图像),但如果您感兴趣,这里有一些链接:

(似乎Almalence的PhotoAcute是本文测试的产品中价格最好的——30美元或150美元)。他们的网址是:www.photoacute.com

SR的马尔可夫随机场–一个自由软件包(麻省理工学院和微软项目)

提高分辨率的一种方法是进行多次曝光,将其放大到4倍面积(双向2倍线性),然后使用堆叠软件合并图像。最终的图像将比任何原作都好。

但是……但是……但是……他们一直在拍电影!是的,在所有的CSI系列中,他们在一秒钟内就做到了!问题是当你在2000年用数码相机拍照时,它们的分辨率是640x480,现在看起来很可怕!当然,我可以在稀薄的空气中合成无限多的新像素。我有随机数发生器!它只能在一些图像上给出很好的结果——大部分是由矢量描述生成的图像。现实生活中物体的照片矢量化非常差。