dirty 发表于 2024-11-29 20:17

《计算机视觉之PyTorch数字图像处理》--了解图像处理与开发环境搭建运行

本帖最后由 dirty 于 2024-11-29 20:22 编辑

<p>&nbsp; &nbsp; &nbsp; 本篇主要主要对该书第1篇 图像处理基础知识 的梳理理解,包括了环境安装和一些代码运行试验。</p>

<p><span style="font-size:16px;"><strong><span style="color:#0000ff;">计算机视觉与图像概述</span></strong></span></p>

<p>&nbsp; &nbsp; &nbsp; 人类视觉是以人眼生理结构与光学原理,对外在事物的视觉认知与感知。</p>

<p>&nbsp; &nbsp; &nbsp; 计算机视觉借助半导体技术,人类视觉得以数字化,从而可被计算机所感知和分析。在视觉感知方面,CCD(电荷耦合器件)和CMOS(互补金属氧化物半导体)将表示图像的光信号转变为电信号,使得能够被计算机存储和使用。</p>

<p>&nbsp; &nbsp; &nbsp; 目前计算机视觉研究的主要内容有:图像处理;特征提取与描述;图像分类、分割和目标检测;三维重建与立体视觉;视频分析。可以看到计算机视觉研究内容还是挺多的。</p>

<p>计算机视觉的研究中出现了许多优秀的方法包含:传统方法;机器学习方法;深度学习方法;多视图几何方法;融合方法。</p>

<p>&nbsp; &nbsp; &nbsp; 数字图像是将整个图像离散化、数字化,形成由数字组成的数组(矩阵),其表示了图像的所有信息。通常一个像素表示实际区域的大小可以称之为分辨率,像素值就是像素所在小块区域内灰度的平均值。</p>

<p>&nbsp; &nbsp; &nbsp; 数字图像类型:二值图像,灰度图像和彩色图像。下面分别是其图像样式</p>

<div style="text-align: left;">&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp; &nbsp; &nbsp; 数字图像的存储:对于数字图像,可以根据不同的需要保存为不同格式的图像文件。目前在一个名为GDAL的图像存取函数库(<a href="https://gdal.org/drivers/raster/index.html">https://gdal.org/drivers/raster/index.html</a>)里总共记录了160多种不同图像文件格式。常用的图像文件格式有BMP,JPG/JPEG,PNG,GIF等。</p>

<p>&nbsp; &nbsp; &nbsp; 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。这种处理可以将图像转换为数字形式,在计算机中进行操作,并生成新的图像或提取结构化信息。</p>

<p>&nbsp; &nbsp; &nbsp; 数字图像处理的内容:图像的点运算,图像的邻域运算,图像的全局运算,图像的基础特征,图像分类,图像分割,图像检测。</p>

<p><span style="color:#9900ff;">了解PyTorch框架与图像处理</span></p>

<p>PyTorch框架是一个由Facebook开发的张量计算框架,使用Python编程语言。</p>

<p>PyTorch框架由几个相关的库组成:</p>

<div>●torch库:是PyTorch框架的核心库,用于张量计算和构建神经网络模型。</div>

<div>●torchaudio库:提供了关于语音信号的读取和处理方法,为PyTorch在语音处理领域提供支持。</div>

<div>●torchtext库:提供了关于自然语言的读取和处理方法,为PyTorch在自然语言处理领域提供支持。</div>

<div>●torchvision库:提供了关于图像和视频的读取和处理方法,为PyTorch在视觉处理领域提供支持。</div>

<p>这些库共同构成了PyTorch框架的生态系统,为不同领域的深度学习任务提供了丰富的功能和支持。</p>

<p>&nbsp;</p>

<p>PyTorch进行图像处理主要有以下几方面的优势:</p>

<div>●数据类型丰富,特别是支持float32类型,无需担心数据范围或精度问题。</div>

<div>●数据结构与数字图像相适应,张量操作与图像处理紧密结合。</div>

<div>●灵活丰富的操作和运算方法,避免了循环遍历的繁琐。</div>

<div>●计算速度快,尤其在GPU环境下能够大幅加速。</div>

<div>●跨平台跨系统,便于程序在不同环境下运行。</div>

<div>●学习曲线平缓,基于Python易于学习。</div>

<div>●构建深度神经网络方便快捷,支持动态图机制。</div>

<div>●torchvision库提供了便捷的图像数据处理方法。</div>

<div>●提供丰富的预训练模型,促进了图像处理方法的发展。</div>
</div>

<p>&nbsp;</p>

<p><strong><span style="color:#0000ff;"><span style="font-size:16px;">开发环境搭建与运行</span></span></strong></p>

<p>&nbsp; &nbsp; &nbsp; 首先是python的安装,下载官方安装即可安装到PC,注意安装时添加到环境变量。</p>

<p>&nbsp; &nbsp; &nbsp; 图像处理跟显卡GPU存在相关,如果PC显卡为英伟达,可安装CUDA程序,使用其资源。PC飞英伟达也可其他方式,Python安装图像处理第三方库。</p>

<table style="border-collapse:collapse" width="1160">
        <colgroup>
                <col width="215" />
                <col width="384" />
                <col width="561" />
        </colgroup>
        <tbody>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>第三方库名</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>功能简介</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>官方网址及其文档</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>gdal</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>支持最广泛图像(栅格)格式,主要用于图像的存取和图像文件格式的转换。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://gdal.org/">https://gdal.org/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>pillow</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>之前称PIL库,是最常用的图像处理库,提供了常用图像格式的读取以及较丰富的图像处理功能。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://pillow-cn.readthedocs.io/">https://pillow-cn.readthedocs.io</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>opencv-python</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>opencv的python接口,提供了对opencv的完全支持,拥有强大的图像处理功能。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://github.com/skvark/opencv-python">https://github.com/skvark/opencv-python</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>simplecv</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>在易用性上较opencv好,功能与opencv类似。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="http://simplecv.org/">http://simplecv.org/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>numpy</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>提供强大的数组计算功能,可用于图像处理,提供灵活的自定义图像处理方法。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://numpy.org/">https://numpy.org/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>scipy</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>在numpy库的基础上,提供更高级的科学计算功能,提供了一些图像处理的方法。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://scipy.org/">https://scipy.org</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>matplotlib</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>基于本地的数据的可视化工具,提供了丰富的数组可视化效果,并提供了方便的图像显示功能。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://matplotlib.org/">https://matplotlib.org/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>visdom</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>基于web的数据的可视化工具,能够灵活的嵌入需要可视化的代码中。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://github.com/facebookresearch/visdom">https://github.com/facebookresearch/visdom</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>tensorflow</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>google公司开发的具有梯度反传的张量计算模型,是构建深度学习模型的主要框架之一。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://tensorflow.google.cn/">https://tensorflow.google.cn/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>torchvision</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>与PyTorch进行协同的库,提供主要用于提供图像预处理方法,图像与张量的转换,以及常用的图像处理预训练模型</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://github.com/pytorch/vision">https://github.com/pytorch/vision</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>PyTorch</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>Facebook公司开发的具有梯度反传的张量计算库,是构建深度学习模型的主要框架之一。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://pytorch.org/">https://pytorch.org/</a></u></p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>paddlepaddle</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:top; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p>百度公司开发的具有梯度反传的张量计算库,是构建深度学习模型的主要框架之一。</p>
                        </td>
                        <td style="border-bottom:1px solid white; vertical-align:middle; background-color:#f3f9fa; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white">
                        <p><u><a href="https://www.paddlepaddle.org.cn/">https://www.paddlepaddle.org.cn/</a></u></p>
                        </td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<p><span style="color:#9900ff;">PyTorch的安装</span></p>

<p>1.这里我们使用CPU版本的PyTorch安装。</p>

<pre>
<code>pip  install torch torchvision torchaudio</code></pre>

<div style="text-align: center;">
<div style="text-align: center;">
<div style="text-align: left;"></div>
</div>
</div>

<p>2.安装可视化工具Visdom</p>

<p>Visdom是一款 Facebook 开源的用于创建、组织和共享数据的可视化工具,支持Python编程语言,使用方便。Visdom专注于科学数据的可视化,可以生成散点图、拆线图、柱状图,3D视图等多种类型的图形和图像,功能强大使用方便,显示效果十分出众。Visdom通过提供Web可视化服务并能够实时更新图像处理的结果和深度学习模型训练进度。在深度学习中,Visdom与PyTorch能够进行无缝的衔接,可对网络的训练过程和特征进行多样化的可视化。</p>

<pre>
<code>pip install visdom

visdom
</code></pre>

<div style="text-align: left;"></div>

<div style="text-align: center;">
<div style="text-align: left;"></div>
</div>

<p>3.集成开发环境Spyder</p>

<p>Spyder(Scientific Python Development Environment,Python科学计算开发环境)是一款基于Qt开发的、主要用于科学计算的、并且免费开源的Python集成开发环境。</p>

<p>Spyder本身就是一个Python的第三方库,因此Spyder的安装十分简单,直接使用Python第三方库的安装方法,即使用pip命令进行安装:</p>

<pre>
<code>pip install spyder
</code></pre>

<p>启动spyder只需要在命令提示符窗口里继续输入命令:</p>

<pre>
<code>spyder3
</code></pre>

<p>&nbsp; &nbsp; &nbsp; <span style="color:#6600cc;">上面是书籍推荐,个人还是习惯Pycharm,在里面安装相关第三方库即可。</span></p>

<p>&nbsp;</p>

<p><span style="color:#9900ff;">环境运行</span></p>

<p>使用PIL模块生成灰阶图像</p>

<pre>
<code>from PIL import Image        #导入PIL模块里的Image类

d=*100        #产生图像数据
imgd=bytes(d)                        #转化为字节串
img=Image.frombytes('L',(256,100),imgd)        #根据图像数据,生成宽256高100的渐变灰度图像
img.save('gb.png')        #保存图像为gb.png
</code></pre>

<div style="text-align: left;"></div>

<p>运行生成灰度图像如下</p>

<div style="text-align: left;"></div>

<p>&nbsp;</p>

<p>&nbsp; &nbsp; &nbsp; 此篇对图像处理有了入门认识,搭建好了开发环境,并运行成功了灰度图像生成保存,后面继续探索与学习分享。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
页: [1]
查看完整版本: 《计算机视觉之PyTorch数字图像处理》--了解图像处理与开发环境搭建运行