本文主要是介绍暑假间做的图像处理基础知识提要,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
图像处理
1.图像、图像处理
图像:凡是人类视觉上能感受到的信息都可称为图像。
图像处理:利用计算机将对图像进行去除噪声、增强、复原、分割、提取特征等的理论、方法、技术。
2.模拟图像、数字图像
模拟图像:如光学图像、照相图像、电视图像等。
优:处理速度快。
劣:精度、灵活性差、不易查找和判断。
模拟图像经过离散化处理成为数字图像。
数字图像:一个经过等距离矩阵网络采样,对幅度进行等距离间隔量化的二维函数。
3.目的、基本特点
目的:
1.提高图像视觉质量、以赏心悦目
- 去噪、改变亮度颜色
- 增强某些成分,抑制某些成分
- 对图像进行几何变换
2.提取图片中包含的某些特征信息、便于计算机分析
a.用作模式识别、计算机视觉的预处理
b.频域特征、灰度/颜色特性、边界/区域特性、纹理特性、形状/拓扑特性、关系结构等
3.对图像数据进行变换,编码、压缩、便于图像存储和传输。
特点:
- 处理精度高,再现性好
- 易于控制处理效果
- 处理的多样性
- 数字图像中各像素间相关性和压缩潜力大
- 图像处理数据庞大
- 占用频带较宽
- 图片质量评价受主观因素影响
- 图像处理技术综合性强
4.涉及领域、门类
涉及领域:通信技术、计算机技术、电子技术、电视技术
门类:
- 医疗
- 识别
- 零件检测
- 卫星图像
5.内容
- 图像数字化
- 图像几何变换
- 图像重建
- 图像变换
- 图像分析
- 图像增强
- 图像复原
- 图像隐藏
- 图像编码
6.图像质量
1.亮度
2.对比度(最大亮度/最小亮度)
3.尺寸
4.大小
5.细微层次(模糊)
6.颜色饱和度
7. 图像存储与格式
1. BMP(BitMaP)格式
2. GIF(Graphics Interchange Format)格式
3. TIFF(Tagged Image Format File)格式
4. JPEG(Joint Photographic Expert Group)格式
8.图像坐标变换
1.旋转
2.尺度(缩放)
3.平移
4.错切
5.反射
6.投影
7.反变换
8.1 旋转
原理:绕原点逆时针旋转θ度角的变换公式是x′=x cosθ − ysinθ与y′=xsinθ+ycosθ,在二维空间中用矩阵表示为:
但是为了可以表示仿射变换,需要使用齐次坐标,常见的矩阵变化都是在三维下进行的,在矩阵中增加一列与一行,除右下角的元素为1外其它部分填充为0,通过这种方法,所有的线性变换都可以转换为仿射变换。此时旋转矩阵如下所示
仿射变换:包含平移及线性映射,为了使矩阵乘法可同时实现这两个功能,需要所有向量在其末端扩长 “1”且所有矩阵都于底部添加一排零,右边扩长一列转换向量,及右下角添加一个 “1”。
MATLAB实现
clc;clear;close all;
%% image rotate
img = imread('/Users/Documents/MATLAB/lena.jpg');
rotateImg = imrotate(img,30);
figure;
subplot(1,2,1),imshow(img);
subplot(1,2,2),imshow(rotateImg);
效果可以看到图像逆时针旋转了30度
简单解析
打开matlab中imrotate函数源码,在命令行敲
type imrotate
找出关键信息可以看到,图像旋转利用矩阵旋转实现,旋转矩阵为tform
tform = affine2d([cosd(ang) -sind(ang) 0; sind(ang) cosd(ang) 0 ; 0 0 1])
B = imwarp(A,tform,method,'OutputView',Rout, 'SmoothEdges',true);
8.2尺度(缩放)
基于上文,即坐标变换通常3x3大小的矩阵完成,对矩阵中的每一点生成[x,y,1]三维向量与变换矩阵相乘,便得到新矩阵,大多数图像几何变换都基于矩阵完成,用字母表示为从A到I,如下图。
对于缩放有
8.3平移
8.4错切
错切常分为x轴错切或者y轴错切,平行于x轴的切变为x′=x+ky与y′=y,
平行于y轴的切变为x′=x与y′=y+kx,矩阵实现参考下图(不是很懂)
8.5反射
二维反射变换如下,三维的基于上文变为增广矩阵即可。
8.6投影
8.7反变换
9.采样与量化
大多数传感器(如CMOS)的输出是连续信号波形,为了产生一幅数字图像,需要把连续的感知数据转化为离散的数字形式,这包括两种处理:取样和量化。
取样(Sampling):图像函数定义域(空间坐 标)的数字化。
量化(Quantization):图像函数值域(灰度值) 的数字化。
采样:采样通常为求每个像素对应区域内的积分均值,实际中,模拟信号都是电流\电压值,经过A/D转换为数字信号,具体可参考VB工业编程。
采样点越多,数据量越多,图像越清晰
量化:量化常分为2^m,m=8最常见,即把模拟信号最大最小值中分段量化
量化阶数越高,视觉效果越好
10.像素、邻域、距离
像素
像素定义类似与眼球的杆状体,每张图片都是像素点的集合,常见的显示器描述就是以像素为单位,例如”640乘480”,它有横向640像素和纵向480像素(就像VGA显示器那样),因此其总数为640 × 480 = 307,200像素(30.72万像素)。
数字图像均由像素点构成,依据坐标原点位置的不同常分为两类,每个像素点标示为I(r,c)或f(x,y)。
灰度图像的值域I是一个一元标量: I=greylevel
彩色图像的值域I是一个多元向量: 如I=(r,g,b)
每一个像素所能表达的不同颜色数取决于比特每像素(BPP,bit per pixel)。这个最大数可以通过取2的色彩深度次幂来得到。例如,常见的取值有
8 bpp:256色 “8位”;
16 bpp:216=65,536色 “高彩色”;
24 bpp:224=16,777,216色 真彩色 “24位色”;
32 bpp:224 +28 全彩
电脑领域较常见的32位色并不是表示232种颜色,而是在24位色基础上增加了8位(28=256级)的灰阶,因此32位的色彩总数和24位是相同的,32位也称为。
(注:对于超过8位的深度,这些数位就是三个分量(红绿蓝)的各自的数位的总和。一个16位的深度通常分为5位红色和5比特蓝色,6比特绿色。24位的深度一般是每个分量8位。
一张普通图片的像素点如下图所示:
注:
1.用matlab以矩阵形式读入即可查看图片属性,常见为8位灰度或者3通道RGB24位彩色图
2.人眼只能分辨1000种颜色
邻域
4邻域:像素p(x,y)的4邻域是:(x+1,y);(x-1,y);(x,y+1);(x,y-1)
用N4(p)表示像素p的4邻域
D邻域:像素p(x,y)的D邻域是:(x-1,y-1);(x-1,y+1);(x+1,y+1);(x+1,y-1)
用ND(p)表示像素p的D邻域
8邻域:4邻域的点+ D邻域的点
用N8p表示像素p的8邻域
N8p = N4p + NDp
连通性
对于灰度值在V中的像素p和q,如果q在集合N4p中,则称这两个像素是4连通的,8联通与此类似
距离
像素间的距离分为三种
- 欧几里得距离(Euclidean distance)
- D4距离或城市距离(Manhattan distance)
- D8距离或棋盘距离(Chessboard distance)
欧式距离:在欧氏距离定义下,具有与(x,y)距离小于等于某个值r的像素是:包含在以(x,y)为圆心,以r为半径的圆。像素p(x,y)和q(s,t)间的欧氏距离定义如下
城市距离:像素p(x,y)和q(s,t)间的城市距离定义如下:
具有D4 = 1的像素是(x,y)的4邻域,具有与(x,y)距离小于等于某个值r的那些像素形成直角菱形
棋盘距离:像素p(x,y)和q(s,t)间的 D8距离定义如下:
具有与(x,y)距离小于等于某个值r的那些像素形成正方形,具有D8 = 1的像素是(x,y)的8邻域
路径
一条从具有坐标(x,y)的像素p,到具有坐标(s,t)的像素q的路径,是具有坐标(x0,y0),(x1,y1),…,(xn,yn)的不同像素的序列。其中,(x0,y0) = (x,y),(xn,yn) = (s,t),(xi,yi) 和(xi-1,yi-1)是邻接的,1≤ i ≤ n,n是路径的长度。
如果(x0,y0) = (xn,yn) ,则该路径是闭合路径。可以用定义连通的类似方法定义4-路径和8-路径。
11. 图像显示
抖动技术:误差抖动常用在图像/视频压缩中,用来降低色彩的深度。如下图所示,256级(8bit)灰度过度 【图二】将图一转换成16级(8bit)灰度(高4位不变,低4位置0) 【图三】将图一用误差扩散法转换成16级灰度。
可看出图3效果好于图2
参考文献:
- 图像处理基础知识总结1 - CSDN博客 https://blog.csdn.net/u013828589/article/details/72478508#t2
- 微信读书—数字图像处理与分析—杨帆—1.1和1.2
- 数字图像处理 http://www.graphics.pku.edu.cn/lectures/DigitalImageProcessing/dip_home.htm
这篇关于暑假间做的图像处理基础知识提要的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!