计算机视觉基础知识(二)---数字图像

像素

  • 像素是分辨率的单位;
  • 构成位图图像的最基本单元;
  • 每个像素都有自己的颜色;

图像分辨率

  • 单位英寸内的像素点数;
  • 单位为PPI(Pixels Per Inch),为像素每英寸;
  • PPI表示每英寸对角线上所拥有的像素数目:
  • PPI=\sqrt{x^2+y^2}/z,x:长度像素数目,y:宽度像素数目,Z:屏幕大小;
  • 屏幕尺寸(大小)指的是对角线长度;
  • 图像清晰度的评价指标;

颜色模型

  • 色彩三原色(CMYK):品红,黄,青;
  • 光学三原色(RGB):红\绿\蓝;

RGB模型 

  • 三维直角坐标颜色系统中的一个单位正方体;
  • 正方体的主对角线上,各原色的量相等;
  • 产生由暗到亮的白色,即灰度;
  • 正方体的其他六个角点分别为红\黄\绿\青\蓝\品红;

灰度

  • 表示图像像素明暗程度的数值;
  • 黑白图像中点的颜色深度;
  • 范围一般为0~255;
  • 白色为255,黑色为0;

通道

  • 把图像分解成一个或多个颜色成分;

单通道

  • 一个像素点只需一个数值表示;
  • 只能表示灰度;
  • 0为黑色,255为白色;
  • 可表示二值图/灰度图;

三通道

  • RGB模式;
  • 把图像分为红\绿\蓝三个通道;
  • 可以表示彩色;
  • 全0表示黑色;

四通道

  • RGBA模式;
  • 在RGB的基础上加上alpha通道,表示透明度;
  • alpha=0表示全透明;

对比度

  • 不同颜色之间的差别;
  • 对比度=最大灰度值/最小灰度值;

RGB转为Gray

  • 浮点算法:Gray=0.3R+0.59G+0.11B;
  • 整数算法:Gray=(30R+59G+11B)/100;
  • 移位算法:Gray=(76R+151G+28B)>>8;
  • 平均值阀:Gray=(R+G+B)/3;
  • 仅取绿色:Gray=G;

RGB值转化为浮点数

  • 浮点运算结果更精确;
  • 整数运算中会丢失小数部分;
  • 导致颜色值严重失真;
  • 计算过程越多,失真越严重;
  • 将RGB值转化为[0,1]浮点数:x/255即可;

二值化

  • 阈值随意设置;
if(img_gray[i,j]<=0.5):
    img_gray[i,j]=0
else:
    img_gray[i,j]=1

通用概念(库的安装和使用)

  • 使用pip或者conda安装;
  • 百度搜索python 安装xxx;
  • 得到库的名称;
  • 使用的时候用import引入;
  • 不需要死记硬背函数;
  • 需要使用的时候搜索函数名;
  • 可了解函数用法和参数含义;

常用视觉库

  • opencv:安装使用pip install opencv-python,使用时:import cv2
  • matplotlib:安装使用pip install matplotlib,使用时:import matplotlib.pyplot as plt
  • skimage:安装使用pip install scikit-image,使用时:import skimage;

opencv BGR

  • opencv读进来的图片通道排列:B--G--R;
  • 不是主流的R--G--B;
#opencv读入的矩阵时BGR,想转为RGB,可以这样:
img=cv2.imread('1.jpg')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

图像频率

  • 灰度值变化剧烈程度的指标;
  • 是灰度在平面空间上的梯度;

图像幅值

  • 在一个周期内;
  • 交流电瞬时出现的最大绝对值;
  • 也是一个正弦波;波峰到波谷距离的一半;

数字图像

  • 计算机保存的图像都是一个个像素点,称为数字图像;

图像数字化过程

  • 由图像的取样与量化来完成;

图像的取样

  • 取样就是决定用多少点来描述一幅图像;
  • 取样结果质量的好坏用图像的分辨率来衡量;
  • 数字化坐标值称为取样;
  • 若横向的像素数(列数)为M,纵向的像素数(行数)为N;
  • 图像的总像素数为MxN个像素;

图像的量化

  • 指要用多大范围的数值表示图像采样之后的一个点;
  • 数字化图像的幅度值称为量化;

上采样

  • 放大图像,或称上采样:upsampling或图像插值:interpolating;
  • 放大原图像;
  • 可将图像显示在更高分辨率的显示设备上;

下采样

  • 缩小图像,或称下采样:subsampled,或降采样:downsampled;
  • 使图像符合显示区域的大小;
  • 生成对应图像的缩率图;

上采样原理

  • 内插值

下采样原理

  • (M/s)\times(N/s)

常用的插值方法

  • 最临近插值;
  • 单线性插值;
  • 双线性插值;

最临近插值

  • The nearest interpolation;
  • i+u,j+v为待求像素坐标;
  • i,j为整数,u,v为大于零小于1的小数;
  • 待求像素灰度值表示为f(i+u,j+v);

单线性插值

\frac{y-y_0}{y_1-y_0}=\frac{x-x_0}{x_1-x_0}

\frac{y-y_0}{x-x_0}=\frac{y_1-y_0}{x_1-x_0}

y=\frac{x_1-x}{x_1-x_0}\times y_0+\frac{x-x_0}{x_1-x_0}\times y_1

双线性插值

f(i+u,j+v)=(1-u)\times(1-v)\times f(i,j)

                                +(1-u)\times v \times f(i,j+1)

                ​​​​​​​        ​​​​​​​        +u\times (1-v)\times f(i+1,j)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        +u\times v \times f(i+1,j+1)

  • 在x方向做插值:

f(R_1)=f(x,y_1)\approx \frac{x_2-x}{x_2-x_1}f(Q_{11})+\frac{x-x_1}{x_2-x_1}f(Q_{21})

f(R_2)=f(x,y_2)\approx \frac{x_2-x}{x_2-x_1}f(Q_{12})+\frac{x-x_1}{x_2-x_1}f(Q_{22})

  • 在y方向作插值:

f(x,y)\approx \frac{y_2-y}{y_2-y_1}f(R_1)+\frac{y-y_1}{y_2-y_1}f(R_2)

  • 综合起来

f(x,y)\approx \frac{y_2-y}{y_2-y_1}f(R_1)+\frac{y-y_1}{y_2-y_1}f(R_2)

=\frac{y_2-y}{y_2-y_1}(\frac{x_2-x}{x_2-x_1}f(Q_{11})+\frac{x-x_1}{x_2-x_1}f(Q_{21}))

+\frac{y-y_1}{y_2-y_1}(\frac{x_2-x}{x_2-x_1}f(Q_{12})+\frac{x-x_1}{x_2-x_1}f(Q_{22}))

  • 图像双线性插值只用相邻的4个点,上述公式的分母都为1;

双线性插值坐标系的选择

  • dst像素点的坐标对应到src图像当中的坐标;
  • 通过双线性插值的方法算出src中相应坐标的像素值;

坐标对应关系

  • 按比例对应:

SrcX=(dstX)\times (srcWidth/dstWidth)

SrcY=(dstY)\times(srcHeight/dstHeight)

源图像和目标图像的左上角对齐

  • 如果源图像和目标图像的原点(0,0)均选择左上角;
  • 根据插值公式计算目标图像每点像素;
  • 假设需要将一幅5x5图像缩小为3x3;
  • 源图像和目标图像各像素之间的对应关系如下图:

 源图像和目标图像的中心对齐

  • 两个图像的几何中心重合;
  • 目标图像的每个像素之间等间隔;
  • 目标图像的四边和源图像都有一定的边距;

SrcX+0.5=(dstX+0.5)\times (srcWidth/dstWidth)

SrcY+0.5=(dstY+0.5)\times (srcHeight/dstHeight)

源图像和目标图像中心对齐平移参数的证明

双线性插值存在的问题

  • 双线新插值较最临近插值算法复杂;
  • 计算量较大;
  • 但是没有灰度不连续的缺点;
  • 图像看起来更光滑;

直方图

  • 图像处理中,经常用到直方图:如颜色直方图,灰度直方图;
  • 灰度直方图描述了图像中灰度分布的情况;
  • 能够直观展示图像中各灰度级所占比例;
  • 灰度直方图是灰度级的函数;
  • 描述图像中该灰度级的像素的个数;
  • 直方图中横坐标是灰度级;
  • 纵坐标是该灰度级出现的频率;

直方图的性质

  • 反映图像中的灰度分布规律;
  • 描述每个灰度级具有的像素个数;
  • 不包含像素在图像中的位置信息;
  • 不关心像素所处的空间位置;
  • 不受图像旋转和平移变化的影响;
  • 可以作为图像的特征;
  • 任何图像都有唯一的直方图对应;
  • 不同的图像可以有相同的直方图;
  • 如果一幅图像有两个不相连的区域组成;
  • 每个区域的直方图已知;
  • 整幅图像的直方图是该两个区域的直方图之和;

直方图的应用

直方图均衡化

  • 将源图像的直方图变换为均匀的直方图;
  • 按均匀直方图修改原图像;
  • 获得灰度分布均匀的新图像;
  • 是用一定的算法使直方图大致平和的方法;
  • 作用是图像增强;

直方图均衡化的应用考虑

  • 为了将原图像的亮度范围扩展;
  • 需要一个映射函数;
  • 将原图像的像素值均衡映射到新直方图中;
  • 映射函数需要满足:
  • 不打乱原有的亮暗布局;
  • 映射后亮\暗的关系不改变;
  • 且映射后必须在原有的范围内,比如(0-255);

直方图均衡化的步骤

  1. 依次扫描原始灰度图像的每一个像素;
  2. 计算出图像的灰度直方图H;
  3. 计算灰度直方图的累加直方图;
  4. 根据累加直方图和直方图均衡化的原理;
  5. 得出输入与输出之间的映射关系;
  6. 最后根据映射关系得出结果:
  7. dst(x,y)=H(src(x,y))

直方图均衡化的计算原理

  • 输入图像的任意一个像素p,p\in [0,255];
  • 总能在输出图像中有对应的像素q,q\in [0,255];
  • 满足输入和输出的像素总量相等;
  • 计算公式为(累加直方图公式):

\sum^p_{k=0}hist_{input}(k)=\sum^q_{k=0}hist_{iout}(k)

  • 输出图像每个灰度级的个数为:

hist_{out}(k)\approx \frac{H\times W}{256},k\in [0,255];

  • 代入累加直方图公式:

\sum^p_{k=0}hist_{input}(k)\approx (q+1) \frac{H\times W}{256}

\Rightarrow q\approx \sum^p_{k=0}\frac{hist_{intpu}(k)}{H\times W}\times 256-1

直方图均衡化实例

  • 原图像矩阵,image:5x5,最大像素值max=9,最小像素值min=0;
13998
21373
36064
68205
29260
  • 直方图均衡化计算表格:
像素值

该像素

值数量N_i

该像素值占图片

总像素值数量百分比:

p_i=N_i/25

百分比

加合

sumP_i

sumP_i\times256-1

四舍

五入

033/25=0.120.1229.7230
122/25=0.080.250.250
240.160.3691.1691
340.160.52132.12132
410.040.56142.36142
510.040.6152.6153
640.160.76193.56194
710.040.8203.8204
820.080.88224.28224
930.121255255
  • 目标图像矩阵
50132255255224
9150132204132
13219430194142
1942249130153
922559119430

线性滤波

  • 是图像处理的最基本方法;
  • 允许对图像进行处理,产生很多不同效果;

卷积

  • 数学定义:(f* g)(t)=\int_Rf(x)g(t-x)dx;
  • g称为作用在f上的过滤器(filter)或者核(kernel);

过滤器/卷积核的要求

  • 大小应为奇数;
  • 奇数才有一个中心,比如3x3,5x5或者7x7;
  • 有中心才有半径,比如,5x5的核半径为2;
  • 滤波器矩阵所有元素之和应该等于1;
  • 这样的核保证滤波前后图像的亮度保持不变;
  • 但不是硬性要求;
  • 如果滤波器所有矩阵的元素之和大于1;
  • 滤波后的图像会比原图像更亮;
  • 如果滤波器所有矩阵元素之和小于1;
  • 滤波后的图像会比原图像更暗;
  • 如果滤波器矩阵的所有元素和为0;
  • 图像不会变黑,但会非常暗;
  • 滤波后的图像像素值可能会出现负数或者大于255的情况;
  • 大于255的直接截断;
  • 负数取绝对值;
  • 具体应用中的多卷积核;
  • 认为每个卷积核代表一种图像模式;
  • 图像与卷积核卷积出的值较大,说明图像值接近卷积核;
  • 假设我们设计了6个卷积核;
  • 可以理解,我们认为该图像上有6种底层纹理模式;
  • 也就是我们使用6种基础模式能描绘一幅图像;

没有任何效果的卷积

000
010
000
  • 原像素中间像素值乘1;
  • 其余像素全部乘以0;
  • 像素值不会发生任何变化;

平划均值滤波

1/91/91/9
1/91/91/9
1/91/91/9
  • 取九个值的平均值代替中间像素值;
  • 可以起到平滑的效果;

高斯平滑

1/162/161/16
2/162/162/16
1/162/161/16
  • 高斯平滑水平和垂直方向呈现高斯分布;
  • 突出了中心点在像素平滑后的权重;
  • 相较于均值滤波,有更好的平滑效果;

图像锐化

-1-1-1
-19-1
-1-1-1

 

0-10
-15-1
0-10
  • 图像锐化使用拉普拉斯变换核函数;

边缘检测

G_x=\begin{bmatrix} 1 &0 & -1\\ 1 & 0 &-1 \\ 1&0 & -1 \end{bmatrix},G_y=\begin{bmatrix} 1 & 1& 1\\ 0 & 0 &0 \\ -1& -1 & -1 \end{bmatrix}

  • 使用G_x卷积上图;
  • 会在图像中间黑白边界处获得比较大的值;

Sobel边缘检测

  • 水平梯度卷积核
-101
-202
-101
  • 垂直梯度卷积核
-1-2-1
000
121
  •  Sobel更强调和边缘相邻的像素点对边缘的影响;

卷积解决的问题

  • 卷积负责提取图像中的局部特征

卷积--步长/stride

  • 卷积核的尺寸(f,f);
  • 图片的尺寸(h,w);
  • 用卷积核来卷积图片;
  • 每次移动一个像素;
  • 输出结果的尺寸为:(h-f+1,w-f+1);
  • 如果每次移动不止一个像素,而是s个;
  • 输出结果的尺寸为:(\frac{h-f}{s}+1,\frac{w-f}{s}+1);
  • s称为卷积步长/stride;
  • 如果f或s的值比1大;
  • 每次卷积之后结果的长宽,比卷积前小一些;
  • 会丢失信息;

填充/padding

  • 填充后,做卷积后的图像大小:

(\frac{h-f}{s}+1,\frac{w-f}{s}+1) \Rightarrow (\frac{h-f+2p}{s}+1,\frac{w-f+2p}{s}+1)

  • 如果想让高(宽)不变:

\frac{h-f+2p}{s}+1=h \Rightarrow p=\frac{s(h-1)-h+f}{2}

  • 假设步长s=1:

p=\frac{f-1}{2}

三种填充模式

  • 橙色部分为图像/image;
  • 蓝色部分为Filter/过滤器;
  • 三种填充模式分别是full/same/valid;

  • 从filter和image刚相交开始做卷积.

  • filter中心(k)与image的边角重合,开始卷积; 

  • filter全部在image内部时,开始卷积. 

  • same还有另外一个意思;
  • 卷积后输出的feature map尺寸保持不变(相对于输入图片);
  • same模式不代表完全输入输出尺寸一样;
  • 同卷积核的步长有关系;
  • same模式是最常见的模式;
  • 该模式可以在卷积过程中保持图像大小不变; 

三通道卷积

卷积核的确定

  • CNN的厉害在于:
  • 过滤器的特征不是人为设定;
  • 而是通过大量图片自己训练出来的;

 

  • 32
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值