如何使用Python将图像调整到更高或更低的分辨率

您所在的位置:网站首页 python图像清晰度提升 如何使用Python将图像调整到更高或更低的分辨率

如何使用Python将图像调整到更高或更低的分辨率

2023-10-02 16:16| 来源: 网络整理| 查看: 265

如何使用Python将图像调整到更高或更低的分辨率

具有恒定分辨率的图像有时不能带出所需的信息和准确的细节。为了克服这一挑战,需要对图像的分辨率进行调整。我们将在LapSRN 的帮助下,将图像改为更高和更低的分辨率。

在本教程中,我们需要使用一些基本工具,如OpenCV,用于基于计算机视觉的任务,这是图像处理所需的主要功能。

前提条件

读者必须熟悉Python编程语言的基础知识才能跟上本教程的进度。

如何安装和使用Pillow和NumPy

使用你选择的任何文本编辑器,你将被要求运行一些代码。为了与cv2一起工作,你将被要求安装OpenCV。

为了实现这一点,在你的终端中,如果你没有预装,请运行下面的命令。

pip install OpenCV-Python

openCV安装后,它允许导入诸如cv2这样的模块。第二个要做的安装是NumPy 。

pip install numpy

这允许使用实现多维数组的包。要进行的第三次安装涉及pillow 的安装。

pip install pillow

也被称为PIL 模块,它允许对图像进行操作和处理。根据不同的版本,你可能被要求更新到最新的版本。

为了更新到最新版本,我们将使用下面的命令。

C:\Users\lizpa\PycharmProjects\jupyter\venv\Scripts\python.exe -m pip install --upgrade pip

你必须根据你的机器的目录来改变路径。

拥有固定的颜色

图像是由X和Y坐标形式的像素组成的。为了固定颜色,我们必须使用RGB颜色格式。

当RGB格式中的一种颜色被省略时就会出现这种情况。比方说,如果省略了蓝色,图像将缺乏蓝色颜料和任何痕迹,因为每个像素都被拿走了蓝色,只剩下红色和绿色成分。

下面是一个用于进一步说明的程序。

from PIL import Image pict = Image.open("sportscar.jpg") #We will have to use the .bmp extension. #This allows for other functions to be performed in the image #Storing the image using save() function pict.save('sportscar.bmp') pict = Image.open('sportscar.bmp') pict.show() #We create a loop that allows for iteration between the X and Y pixels for x in range(pict.size[0]): for y in range(pict.size[1]): r, g, b = pict.getpixel((x, y)) pict.putpixel((x, y), (r, g, 0)) #Used for displaying the executed image. pict.show()

原始图像。

Original

省略了蓝色像素的固定图像。

Fixed

实现对比度增强

对比度涉及到图像的强度、饱和度和亮度水平。我们将在PIL 模块提供的ImageFilter 功能的帮助下,对对比度进行调整。

有了上述内容,我们就可以使用你选择的图片进入编码部分了。

from PIL import Image, ImageFilter img = Image.open("cool.jpg") enc_img = img.filter(ImageFilter.DETAIL) assert isinstance(enc_img, object) enc_img.show()

接下来,我们将运行图像增强的代码,如下所示。

from PIL import Image, ImageEnhancement img = Image.open("cool.jpg") img_con = ImageEnhancement.Contrast(img) img_con.enhace(1.7).show("70% INCREASEMENT OF CONTRAST ENHANCEMENT")

为了使上述工作顺利进行,你必须把要使用的图像放在与主python文件所在的同一目录中。

拉普拉斯金字塔超级分辨率网络

在一个从粗到细的Laplacian pyramid 结构中,LapSRN对低分辨率的图片进行了超解。在给定的5个基准数据集的4x 和8x 超分辨率上,我们的技术是快速的,并取得了最先进的性能。

LapSRN 这是一个介于项目开始和结束时使用的两种放大程序之间的中间地带。它建议逐步增加规模,直到最后。它的名字来自于拉普拉斯金字塔。

其构造就像一个金字塔,较低质量的图像一直被提升到最后。为了提高速度,参数共享经常被使用。它有两个部分,提取阶段和重建阶段。

拉普拉斯金字塔是由Gaussian Pyramid 中的级别和其在金字塔中的上层的扩展版本之间的差异形成的。

让我们开始吧!

实例1 将图像缩小到较低的分辨率

我们将在高斯金字塔模型中把图像缩小到较低的分辨率。为了执行这项任务,我们将使用下面的图片。

Sean

import cv2 import numpy as np img = cv2.imread("sean.jpg")#Here we will be reading the image layer = img.copy() gp = [layer] #Declaring a variable hence creating the Gaussian Pyramid array. for j in range(10):#Providing room for iteration. layer = cv2.pyrDown(layer) gp.append(layer) cv2.imshow(str(j), layer)#This function displays the multiple images created. cv2.imshow("Original image", img)#This will have the original image displayed. cv2.waitKey(0) cv2.destroyAllWindows()

你的输出应该是如下图所示。

Low

实例2 将图像放大到更高的分辨率。

一旦你提高了已经降低了分辨率的图像的分辨率,它就不会再回到原来的形式了。这是因为降低分辨率会失去一些关于图像的信息,使用pyrDown ,因此结果看起来有点模糊。

这与放大原始图像是不同的。

import cv2 import numpy as np img = cv2.imread("sean.jpg") #We will be factoring down images using the already scaled. lwr1 = cv2.pyrDown(img) lwr2 = cv2.pyrDown(lwr1) lwr3 = cv2.pyrDown(lwr2) lwr4 = cv2.pyrDown(lwr3) # We will be Increasing the resolution of already scaled down image that is lwr4. hir1 = cv2.pyrUp(lwr3) cv2.imshow("Original image", img) cv2.imshow("First Scaled Down Image", lwr1) cv2.imshow("Second Scaled Down Image", lwr2) cv2.imshow("Third Scaled Down Image", lwr3) cv2.imshow("Fourth Scaled Down Image", lwr4) cv2.imshow("First Scaled Up Image", hir1) cv2.waitKey(0) cv2.destroyAllWindows()

你的输出应该是如下图所示。

High

实例3

为了构建拉普拉斯金字塔超级分辨率网络。我们将取高斯金字塔的顶层,也就是用循环函数生成的最后一幅图像。然后我们为拉普拉斯金字塔创建一个列表。

最后,我们创建高斯金字塔的上层的扩展版本。为了更好地理解它,我们将使用下面的代码片断。

import cv2 img = cv2.imread("sean.jpg") layer = img.copy() gp = [layer] for j in range(2): layer = cv2.pyrDown(layer) gp.append(layer) layer = gp[2] cv2.imshow("Gausian Upper level", layer) lp = [layer]#Introduce and create a list for the Laplacian pyramid. for j in range(2, 0, -1): Gausian_extended = cv2.pyrUp(gp[j])#Creating the Laplacian pyramid. laplacian = cv2.subtract(gp[j-1], Gausian_extended) cv2.imshow(str(j), laplacian) cv2.imshow("Original image", img) cv2.waitKey(0) cv2.destroyAllWindows()

用下面显示的确认。

Lapsn

拉普拉斯金字塔和高斯金字塔被应用于图像的混合和重建。

调整图像分辨率的应用范围 天文学--这是通过将图像的微小信息集中到更高的分辨率来实现的,从而带来更清晰的视野。 闭路电视--从闭路电视录像中收到的信号可以通过尽可能地解决和修复颜色来获得更清晰的图像。 医学--从扫描中收到的图像,如X射线,需要调整分辨率以提供详细和准确的信息。 总结

涵盖了本教程所需的所有细节,也就是说。

知道如何修复颜色。 实施对比度增强。 将图像缩放到较低或较高的分辨率。 拉普拉斯金字塔的推导。 调整图像分辨率的应用领域。

你现在已经具备了处理本教程相关事宜的能力。能够准确地进行图像分辨率调整工作,并产生最佳效果。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3