OpenCV4Android开发实录(3):数字图像基础与OpenCV开发入门

本文详细介绍了数字图像基础,包括像素、灰度级、分辨率、颜色空间,以及OpenCV中的基础图像容器Mat和其他常用数据结构。讨论了RGB、YUV、HSV等颜色空间,以及二值、灰度、彩色图像的特性。同时,阐述了OpenCV中Mat类的优势以及如何创建和操作。此外,还讲解了颜色空间转换、颜色通道分离与合并的实现方法。
摘要由CSDN通过智能技术生成

转载请声明出处:https://blog.csdn.net/AndrExpert/article/details/79889136

俗话说:“工欲善其事,必先利其器”。数字图像处理作为专业性比较强的一门学科,也是计算机视觉的基础课程,在开始学习OpenCV处理数字图像之前,我觉得对数字图像有一定的了解还是非常有必要的,尤其是对于没有任何数字图像基础的人。拥有扎实的数字图像基础,将是深入研究OpenCV框架的一把利器!

1. 数字图像基础

数字图像,又称数位图像(位图),由模拟图像数字化得到,它以像素为基本元素,是二维图像用有限像素的表示。通俗的说,数字图像在计算机中是以数值矩阵的形式存在和处理,矩阵的每一个元素即为像素。下图表示一副黑白图像所对应的矩阵,每一个小方块代表黑白图像的一个像素,在矩阵中值为0或1。

image

1.1 像素与灰度级

 像素是组成数字图像最基本元素,是数字图像显示的基本单位,它是一个逻辑尺度单位,比如一张640x480大小图片,它由横向640个像素和纵向480个像素组成。每个像素都拥有数字值,不同的图像种类像素值的范围有所区别,比如二值图像(黑白图像)像素数值只能为0或1、灰度图像像素数值为0~255。下图表示图片中每一个正方形为一个像素:
像素
 除了像素,在实际开发中,我们可能还会碰到诸如图像的灰度、灰度值、灰度级和灰度级数等概念,它们也算是数字图像处理的重要基础。所谓图像的灰度、灰度值或灰度级实质是同一个概念,为表示一个像素明暗程度的整数,范围为0~255,其中,纯白为255,纯黑为0,中间值为介于纯黑和纯白之间的灰色。由于一副数字图像由若干个像素组成,而每个像素拥有自己的灰度值(注:RGB彩色图像只有R=G=B,像素的值才能称为灰度值,否则为颜色值),因此一副图像拥有若干不同的灰度级(灰度值),这些灰度级集中起来便成为该图像的灰度级数。灰度级数代表一副数字图像的层次,图像数据的层次越多,视觉效果就越好。下图为一副灰度图像及其灰度值(像素值)表示:
image

1.2 分辨率

 通常,分辨率可分为屏幕分辨率、图像分辨率、视频分辨率,它们有一个共同特征,即包含的像素数量越多,图像画面的显示就越清晰、细腻,主要区别如下:

  • 屏幕分辨率

 屏幕分辨率就是计算机显示器或移动设备的屏幕上能显示像素的个数,通常以水平和垂直像素数量来衡量。这里以华为P20 Pro为例,它的主屏分辨率为2240x1080像素,表示该机型屏幕水平方向上能够显示2240个像素,垂直方向能够显示1080个像素,总共2419200个像素(>200万),可以说华为P20 Pro屏幕分辨率是相当高的,当然屏幕的显示也就非常清晰。

  • 图像分辨率

 图像分辨率就是图像的尺寸,也成为图像的宽和高,即图像水平方向上的像素个数和垂直方向上的像素个数。比如一张分辨率为640×480像素的图片,有480行像素信息,每行有640个像素,该图片包含的像素个数是307 200,也就是我们常说的30万像素。而一个分辨率为1600×1200像素的图片,就达到了约200万的像素。

  • 视频分辨率

 现实生活中,对于视频分辨率我们习惯性用标清、高清、超清或者480P、720P、1080P来形容,这里所谓的P指的是逐行扫描,480P是表示的是视频中画面的分辨率为640x480像素,也就是说,视频中每一副画面由水平方向上的640个像素和垂直方向上的480个像素组成,每扫描一行就会遍历480个像素。

1.3 颜色空间

 根据数字图像色彩表示方式的不同,数字图像有几种不同的颜色空间(颜色模型),如RGB颜色空间、HSV颜色空间、YUV颜色空间等。下面就具体介绍一下这几种颜色空间:

  • RGB

 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量各占8bits,且分配一个0~255范围内的强度值。例如:纯红色R值为255,G值为0,B值为0;灰色的R、G、B三个值相等(除了0和255);白色的R、G、B都为255;黑色的R、G、B都为0。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216(2^24)种颜色。

  • YUV

YUV颜色空间是欧洲电视系统使用的一种色彩编码空间,在现代的彩色电视系统中,通过三管彩色摄影机和彩色CCD摄影机得到的彩色图像信号,经过分色、分别放大校正得到RGB,再进一步经矩阵变换电路得到亮度信号Y和两个色差信号U、V,最后发送端对这三个信号分别编码,再使用同一信道发出去,这就是YUV颜色空间。

image     image

 彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异;而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。YUV相关色彩模型与RGB的转换方程如下:

YUV和YCbCr区别:YCbCr是DVD、摄像机、数字电视等产品中常用的色彩编码方案,它是YUV经过缩放和偏移的进化种类,由亮度分量Y、蓝色色度分量Cb和红色色度分量Cr组成,其中Y与YUV中的Y含义相同,Cb、Cr与YUV中的U、V均指色彩,只是表示方法上不同。在计算机系统中应用广泛,JPEG、MPEG均采用此格式,并且我们所说的YUV颜色格式大多指YCbCr。RGB到YCbCr的转换公式如下:
image

  • HSV

 HSV颜色空间由Hue(色调)、Saturation(饱和度)和Value(亮度)组成,与RGB类似,HSV颜色空间中也有三个分量:H、S、V。HSV颜色空间是1978年提出的,它是一种主观的颜色空间。色调通常指代颜色名称。饱和度表示掺入白光的分量,掺入白光的分量越多,则饱和度越低,即S值越小;掺入白光的分量越少,则饱和度越高,即S值越大。亮度表示掺入黑光的分量,掺入黑光的分量越多,则亮度越低,即V越小;掺入黑光的分量越少,则亮度越高,即V越大。HSV颜色空间模型:

image

1.4 图像种类

 根据图像能呈现的色彩和灰度等级,我们可以将任何图像(物理的和数字的)图像分为彩色图像、灰度图像和二值图像。它们的区别如下:

  • 二值图像

 二值图像是指图像中的像素在只占1bit(位),每个像素值只能是0或1,即纯黑色和纯白色,中间没有过渡色。因此,二值图像又称为黑白图像,灰度级数为2。

image

  • 灰度图像

 灰度图像是指灰度级数大于2的图像,但它不包含彩色信息。图像中的像素通常占8bits(1字节),每个像素值范围为0~255,除纯黑色和纯白色外,中间还存在不同程度的灰色。

image

  • 彩色图像

 彩色图像是指图像中含有色彩信息的图像,在数字图像中,每一个像素都有相应的数值来表示该像素的信息,彩色图像的信息就是颜色信息。根据三基色原理,任何颜色都可以表示为三个基本颜色红、绿、蓝(RGB)按不同比例合成产生。此外,根据数字图像色彩的表示方式不同,彩色图像可由RGB、YUV、HSV等颜色空间来描述。

三基色原理:自然界所有颜色(色彩)均可通过红、绿、蓝三色按照不同的比例合成产生,同样绝大多数单色光也可以分解成红绿蓝三种色光,因此,红、绿、蓝三色被称为三基色。
image

1.5 数字图像基本属性

 在了解图像相关属性之前,个人觉得很有必要先搞清楚什么是单色光、复合光、色彩和颜色。在三原色中,可见光的波长为380~780nm(纳米),不同波长呈现出不同的颜色,可见波长从长到短依次为红、橙、黄、绿、青、蓝、紫。红色的波长为700nm、绿色的波长为546.1nm、蓝色的波长为435.8nm。只有单一波长成分的光称为单色光,含有两种以上波长成分的光称为复合光色彩通常都是由一种单色光和白光按照一定比例混色的,色彩的三要素:色相、明度、纯度。其中,色相又称颜色,由亮度和色度共同表示,是色彩的首要特征和区别各种不同色彩最准确的标准;明度指色彩的亮度;纯度指色彩的鲜艳程度,即饱和度。

  • 色彩深度

色彩深度/颜色深度计算机图形学领域表示在位图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多,通常存储每个像素所用的位数n与可选择的颜色数量关系可表示为:颜色数量=2^n。比如二值图像中存储每个像素占1位,即颜色深度为1,可选颜色为2^1=2种(黑色、白色);灰度图像中存储每个像素占8位,即颜色深度为8,可选颜色为2^8=256种;真彩色图像(RGB颜色格式)中存储每个占24位,即颜色深度为24,可选颜色为2^24=16777216种。通常,图像的色彩深度越深,每个像素存储占用空间越大,图片就越大。

  • 图像亮度

 亮度指照射在景物或图像上光线的明暗程度。图像亮度增加时,就会显得耀眼或刺眼,亮度越小时,图像就会显得灰暗。如果是灰度图像,则亮度跟灰度值有关,灰度值越高则图像越亮;如果是彩色图像(RGB格式),则亮度跟R、G、B分量值有关,假设亮度为Y:Y=0.299R+0.587G+0.114B,人的主观感受是绿光最亮,红光其次,蓝光最弱。 下图展示的是不同亮度显示效果:

这里写图片描述

  • 图像对比度

图像对比度所指的就是一幅图像当中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比度越高,差异范围越小代表对比度数值越小,好的对比率120:1就可容易地显示生动、丰富的色彩,当对比率高达300:1时,便可支持各阶的颜色。从视觉角度上来看,对比度越大图像就越清晰醒目,从而色彩也会更加鲜明艳丽。反之,对比度越小,则会让人感到画面灰蒙蒙一片,色彩丢失也会很严重。下图展示的是低、高对比度显示的效果:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值