《计算机视觉之PyTorch数字图像处理》----解读PyTorch与图像处理的关系
[复制链接]
在《计算机视觉之PyTorch数字图像处理》这本书中,PyTorch是一种至关重要的设计工具,也是实现图像处理的重要手段。
在许多年以前,曾讲授过以photoshop为核心的图像处理课,其主要任务就是利用photoshop所提供的各种选取工具对提取的图片内容进行各种拼接、变换及特效处理来完成作品设计。其应用的反向主要涉及课件界面的制作、网页素材的加工制作、装帧封面的设计、海报设计及旅游景点的广告设计等。
尽管可以用photoshop完成各种作品的效果设计与制作,但对photoshop是如何来实现这些处理的却是一头雾水,也无从去寻找答案。
后来在设计中又遇到了色差分析问题,才了解到针对色彩空间有多种色彩模式标准并可在不同的色彩模式间进行转换。例如RGB模式就可以转换为相应的Lab模式。 色差分析仪就是以Lab模式进行判别的,并通过分析样本与标准样本的比对来给出色差状况及分析结论的可信度。
在实践中发现,要想得到一个理想的色彩模块变换公式是十分困难的,要想得到一个与photoshop一致的变换结果更是可望而不可及,只能获得一个与之变化趋势相近的结果。
通过阅读这本书,终于揭开了这方面的一些端倪。原来在以PyTorch为实践工具的情况下,它是沿着这样一条途径来进行图像处理,即图像中的数据是以张量的方式来存储和处理的,这里所说的张量可视为通常所说的数组。
这样在进行数据处理时就可以快速进行定位的需要,而所谓的数据处理可视为为了达到某种图像处理效果的数据变换。
那么图像数据又是如何获取和保存的呢?
原来PyTorch不但提供进行数据处理的各种运算功能,还提供了打开图像文件并将数据存入数组(张量)的功能及将变换处理后的数据保存到图像文件的功能,这样就确保了它对图像处理的可靠支持。也就是说PyTorch与图像处理是紧密相关的,两者是属于一种不可或缺的关系。
我们知道图像是用来表现二维空间的,需由二维数组来存储其数据,此时其表现的图像是灰度等级的。要表现彩色的图像,通常需要三维数组来实现。
有人会说那不对呀,在单片机或ARM上存储彩色的图像不是用二维数组不就可以吗?
其实这是因为它采用了压缩存储的方式,即把RGB的3种色彩数据放到了2个或3个字节数据中。对于3字节方式,每个字节对应一种色彩;对于2字节方式,则是以565的占比来分配2个字节,即红色占用5位,绿色占用6位,蓝色占用5位,共计16位2个字节。
在photoshop中,使用渐变效果可制作各种立体效果,那在PyTorch是如何来实现的呢?
以线性渐变为例,它是对某一行的数据进行由小到大或有大到小的变换处理。
其实现的程序为:
d=[i for i in range(256)]*100 #产生图像数据
imgd=bytes(d) #转化为字节串
img=Image.frombytes('L',(256,100),imgd) #根据图像数据,生成宽256高100的渐变灰度图像
img.save('gb.png') #保存图像为gb.png
图1 灰度渐变效果
在photoshop中,蒙版是一种使遮挡层下的图层呈现显示状态的工具,其实现的方式如图2所示。
图2 蒙版处理
此外,使用PyTorch可实现多种色彩空间的模式变换,涉及的有灰度空间、HSI色彩空间、HSV色彩空间、XYZ空间及Lab空间等。
在数据处理方面,则涉及图像的旋转/翻转、缩放、裁剪等。
通过本书的阅读,终于圆了多年以来想了解photoshop如何进行图像处理的奥秘。
|