当前位置 博文首页 > 老猿Python:《数字图像处理》学习感悟:第二章数字图像基础(3)

    老猿Python:《数字图像处理》学习感悟:第二章数字图像基础(3)

    作者:[db:作者] 时间:2021-07-27 08:43

    ? ? 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ?

    一、引言

    本系列文章记录老猿自学冈萨雷斯《数字图像处理》的感悟和总结,不过估计更新会比较慢,白天要工作,都是晚上抽空学习,学习完一章再回头总结,想学的朋友可以自己下载英文原版(目前到第四版)和中文译本(目前应该到第三版)的电子版观看,如果想对照观看建议英文原版也找第三版。

    这本《数字图像处理》不愧为数字图像处理的经典教程,知识范围广、内容详尽、案例贴近实践,至少很合老猿的口味。但中译本存在两个问题:

    1. 有些翻译得不够精准或流利,对于这样的内容如果在老猿总结知识中出现,会以斜体字标记,有些关键术语老猿会附上英文原词;
    2. 中译本的图像案例很多都比原版差很多,甚至差到影响对讲述内容的理解,因此就算不看原版文字,图像案例最好还是对照原版的。

    二、知识概要:采样和量化(Sampling and Quantization)

    1. 多数传感器的输出是连续的电压波形,为了转换成数字图像,需要把连续的感知数据转换为数字形式。一幅图像的坐标和图像的幅值都可能是连续的,为了转换成数字图像,需要对坐标和幅值都进行数字化。对坐标进行数字化称为采样(Sampling),对幅值进行数字化称为量化(Quantization)。
    2. 数字图像的质量很大程度上取决于采样和量化所用的样本数(即坐标刻度数)和离散的强度级数(幅值数)。
    3. 对于一数字图像f(x,y),由该图像的坐标张成的实平面(real plane)称为空间域(spatial domain),x、y称为空间变量(spatial variables )或空间坐标(spatial coordinates)。
    4. 数字图像的原点位于图像的左上角,x轴向下、y轴向右(与老猿印象不同,也与OpenCV中的坐标系不同,OpenCV中x轴向右,y轴向下)。这样的表示是因为两个原因,一是许多图像显示器扫描都是从左上角开始,从左至右完成一行扫描,然后下移一行,二是在图像的阵列(array)表示法中,左上角的元素是该阵列的第一个元素。
    5. 图像系统的动态范围(dynamic range)定义为系统中最大可度量强度(maximum measurable intensity)与最小可检测强度(minimum detectable intensity level)之比(注意:这里的强度与灰度级(gray level)表达的是同一个意思,请参考《图像灰度与灰阶的纠结:gray level/scale译文释义 https://blog.csdn.net/LaoYuanPython/article/details/116545233》的介绍)。作为一条规则,其上限取决于饱和度(saturation),下限取决于噪声(noise)。基本上动态范围由系统能表示的最高和最低强度级(intensity levels,中文版翻译为灰度级,似乎更好听一些,下面我们也用灰度级,Intensity 也用中文版的灰度一词)来确定,也是一幅图像能有的强度范围。
    6. 定义一幅图像最高灰度级和最低灰度级(intensity levels)的灰度差(difference in intensity)为图像对比度(image contrast)。当一幅图像中像素可感知的数值有高的动态范围时,就认为该图像有高的对比度。

    三、知识概要:空间和灰度分辨率(Spatial and Intensity Resolution)

    1. 空间分辨率(spatial resolution)是图像中可辨别最小细节的度量(smallest discernible detail)。空间分辨率的定量表述上有多种方法,其中每单位距离线对数(line pairs per unit distance)和每单位距离像素点数(dots (pixels) per unit distance)是最常用的表示方法。

    2. 线对数是假设交替地用黑竖线和白竖线来构造一幅图表(chart),线宽为w(w可以小于1),线对(line pair)的宽度就是2w,每单位距离有1/2w个线对。广泛使用的图像分辨率(image resolution)的定义是最大的每单位距离可分辨线对数量(discernible line pairs per unit distance)。

    3. 每单位距离点数是印刷出版业常用的图像的分辨率,在美国通常使用每英寸点数(dots per inch ,dpi)来度量。

    4. 灰度分辨率(Intensity Resolution)是指在灰度级中可分辨的最小变化(smallest discernible change in intensity level)。不像空间分辨率必须以每单位距离为基础,灰度分辨率指的是用于量化灰度(quantize intensity)的比特数,如被量化为256级的图像有8比特的灰度分辨率。

    5. 当灰度分辨率过小时,容易在数字图像灰度平滑区域中造成伪轮廓(False Contouring)。伪轮廓属于数字图像噪声中的一种,主要表现为在数字图像或者视频信号中所呈现的画面平场区域出现明显的类似于等高线的不连续过渡带,从而对于画面感观质量造成影响的现象。如下2图:
      在这里插入图片描述
      在这里插入图片描述
      伪轮廓一般出现在灰度级16(4比特灰度分辨率)或更小的灰度级的图像中。

    6. 假设对于一幅正方形图像,其边长取样数为N,幅度量化级数为2k。以N和K构造的平面中,改变N和K的取值,对不同的图像人们的感知会不一样。实验表明,对于有大量细节(a large amount of detail)的图像(如聚集的人群),可能只需要很少灰度级(a few intensity levels)就能得到和更多的灰度级数一样的感知效果。

    四、知识概要:图像插值(Image Interpolation)

    插值是用已知数据计算未知位置数据的处理,图像插值在图像缩放、旋转和几何校正等任务中广泛应用。图像插值有近邻插值法(nearest neighbor interpolation)、双线性插值法(bilinear interpolation)、双三次插值法(bicubic interpolation)等。

    三种插值方法中,近邻插值法简单但容易导致图像边缘失真,双线性插值比近邻插值法效果好很多但计算量大增,双三次插值法在保持细节方面比双线性插值效果更好一些,因此是商业图像处理软件的标准插值方法。具体相关方法详细介绍可以参考《OpenCV-Python图像处理:插值方法及使用resize函数进行图像缩放 https://blog.csdn.net/LaoYuanPython/article/details/111771138》一文及引用博文的介绍。

    五、小结和感想

    本节介绍了数字图像采样和量化的相关概念,采样就是对数字图像表示的空间坐标进行离散化设置,量化就是对图像的强度值(灰度值)的表示进行数字化表示,二者的单位决定了图像的精度,图像的分辨率就是基于二者来决定的。

    图像插值是在图像进行仿射变换和投影变换时根据已知的输入图像像素坐标及灰度值计算目标图像像素坐标及灰度值的计算方法。

    本节学习时最纠结的是intensity的翻译,在《图像灰度与灰阶的纠结:gray level/scale译文释义 https://blog.csdn.net/LaoYuanPython/article/details/116545233》的介绍中,将gray level翻译为灰阶或灰度级,而gray scale翻译为灰度,而intensity表示的含义与gray level相同,按理应该翻译为灰阶或灰度级,但用起来感觉不是很顺口,后面还出现了“intensity level”更不知道怎么翻译了,所以最后还是妥协翻译成了“灰度”。

    更多图像处理请参考专栏《OpenCV-Python图形图像处理》及《图像处理基础知识》的介绍。

    写博不易,敬请支持:

    如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

    关于老猿的付费专栏

    1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
    2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
    3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
    4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

    前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

    对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

    如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。在这里插入图片描述

    如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

    老猿Python,跟老猿学Python!

    ? ? 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ?

    cs