数字图像处理笔记
概述
像素:小块区域,包括两个属性:位置、像素值。
数字图像:由像素组成的二维矩阵。
常见数字图像:灰度、彩色、二值。
灰度:用整数表示,通常 0~255,0 黑,255 白。
彩色像素:RGB 0~255。
二值像素:单比特表示,0 黑,1 白。
图像表示:,或矩阵,或矢量。
图像数据量:二进制前缀。
图像数字化:包括取样和量化。
取样:空间上的离散化,在空间上分割成 M×N 个网格(空间分辨率)。
量化:亮度上的离散化,把取样点上对应的亮度连续变化区间转换为单个数码的过程。(幅度分辨率)
图像质量--层次:表示图像实际拥有的灰度级的数量。
图像质量--对比度:图像中灰度反差的大小,对比度 = 最大亮度/最小亮度。
图像质量--清晰度:
主要因素
- 亮度
- 对比度
- 尺寸大小
- 细微层次
- 颜色饱和度
调色板:图像的色彩索引表
HSI 模型:色调(H),饱和度(S),亮度(I)
饱和度:色相中灰成分所占的比例。
图像存储--行扫描:从左向右,从上到下
图像存储--交叉存储:隔行存储,或隔行隔列存储。
图像存储--有损压缩:记录主体特征。
图像存储--矢量存储:记录绘图指令。
图像处理常用数据结构:
- 矩阵
- 链码:直线斜率
- 属性图
matlab 矩阵索引:列优先
空域图像增强
图像灰度映射
像素位置不变,灰度变化
线性灰度变换
线性方程,可分段
全域线性灰度变换
=>
截取式线性灰度变换
=>
=>
=>
分段线性灰度变换
非线性灰度变换
对数变换
低区扩展,高区压缩
指数变换
低区压缩,高区扩展
直方图处理
直方图是图像的一种统计表达。
直方图均衡化
一种使输出图像直方图近似为均匀分布的变换算法。
f(j) 表示灰度为 j 的像素数量。
P(j) 表示灰度为 j 的像素数量占总数的比例。
C(j) 表示灰度为 0~j 的像素数量占总数的比例。
g(j) 表示原灰度为 j 的像素在输出图像中的灰度。
频数较小的灰度级被归入很少几个或一个灰度级内。
origin = imread("pout.tif");
[row,col] = size(origin); n = row * col;
f = [];
for j=0:255
f(j+1) = size(find(origin==j),1);
end
P = double(f)/n; C = []; s = 0;
for j=0:255
s = s + P(j+1); C(j+1) = s;
end
g = [];
for j=0:255
g(j+1) = uint64((255-0) * C(j+1) + 0 + 0.5);
end
result = origin;
for j=0:255
result(origin==j) = g(j+1);
end
subplot(2,2,3); imshow(origin); title("origin");
subplot(2,2,4); imshow(result); title("result");
subplot(2,2,1); imhist(origin);
subplot(2,2,2); imhist(result);
直方图规定化
使原图像灰度直方图变成规定形状的直方图的一种增强方法。
- 对原始图像作直方图均衡化
- 按目标灰度概率密度函数求得变换函数。
- 对均衡化后的原图,按变换函数作逆变换。
几何变换
平移、旋转、缩放、镜像
像素坐标用齐次坐标记为
平移
水平镜像
垂直镜像
旋转
缩放
插值运算
- 线性内插
- 前向映射法 通过输入位置计算输出位置
- 后向映射法 通过输出位置计算输入位置 不会出现空白,实际常用
- 最近邻 取最近的像素值
- 双线性
双线性方程
行插值:取左右相邻的非空像素的平均值 列插值:取上下相邻的非空像素的平均值
仿射变换
- 原点无需变换到原点
- 线变换为线
- 平行线保持平行
- 比例保持
投影变换
- 原点无需变换至原点
- 线变换为线
- 比例不保持
- 平行线无需保持平行
像素空间关系
- 邻接
- 连接
- 连通
邻域
一个像素的周边像素的集合
- 4-邻域 -- 4-邻接
- 对角邻域 -- 对角邻接
- 8-邻域 -- 8-邻接
连接
邻接(接触),且同在一个灰度值集合中取值(亲戚)
- 4-连接
- 8-连接
- m-连接:4-邻接 或 (对角邻接且共同的四邻都不是他们的亲戚)
若 p 和 r 具有 4-连接 关系,则
- p 和 r 具有 8-连接 关系
- p 和 r 具有 m-连接 关系
若 p 和 r 具有 m-连接 关系,则
- p 和 r 具有 8-连接 关系
连通
连接是连通的一种特例。
通路:由一系列依次连接的像素组成。
4-连通,8-连通 => 4-通路,8-通路
像素距离
- 欧氏距离
- 城区距离
- 棋盘距离
用距离定义邻域
4-邻域
8-邻域
邻域操作
- 线性:如邻域平均
- 非线性:如中值滤波
- 平滑:模糊,消除噪声
- 锐化:增强被模糊的细节
空域平滑
线性平滑
- 邻域平均:取邻域内所有像素的平均值
- 加权平均:对邻域内不同像素采用不同权值
- 高斯平均:加权平均的特例,根据高斯分布确定系数
非线性平滑
- 中值滤波:取邻域内所有像素的中间值
- 最大(小)值滤波:取邻域内所有像素的最大(小)值
- 中点滤波器:取邻域内所有像素的最大值和最小值的平均值
图像边缘处的处理
- 省略缺失邻域的像素
- 补充缺失的像素(全白或全黑)
- 复制边界像素
- 允许边界像素循环使用