目录:
1.1 背景
1.2 什么是数字图像处理
1.3 MATLAB和图像处理工具箱基础
1.4 教材涉及的图像处理范围
1.5 网站
1.6 符号
1.7 基本原理
1.1背景
1.2 什么是数字图像处理
图像à二维函数 (二维数组?)
其中和是空间坐标,其值称为图像在该点处的亮度或灰度
数字图像à当、 、的值都是有限的离散值时,称该图像为数字图像
数字图像处理研究à借助于计算机处理数字图像的研究
像素(pixels)==图片元素(picture element)==图像元素(image element)à指组成数字图像的元素,每个元素都有特定的位置和数值
图像处理的定义
输入(图像)à输出(图像) 比较狭义
输入(图像)à输出(特征)
图像处理和计算机视觉----无清晰的分割界限
低级处理----如降噪,对比度增强、锐化
中级处理----如图像分为区域和目标,标记描述,简化
高级处理----利用与人类视觉相关的感知函数,对识别对象进行总体确认
1.7 基本原理
1.71
灰度级----指单色图像的亮度
RGB彩色图像----由三幅单色图像组成
图像---关于坐标x, y是连续的
采样---对坐标值数字化
量化---对幅值数字化
数字图像----经过采样和量化后的有限坐标和幅值的图像
- 采样和量化后得到的是一个实数矩阵,得到的数字图像大小
- 采样后的离散坐标,为了方便,取整数值
图像工具箱中使用的坐标约定有两种:
- 像素坐标----x表示行,y表示列
- 空间坐标-----x表示列,y表示行
1.72 图像的输入/输出和显示
>> f=imread('cameraman.tif');
>> imshow(f)
>>figure,imshow(f,[15,200]) %[15,200]是指将原图中灰度值低于15的全部阶段成15,200以上的全部截断成100.
>> figure,imshow(f,[]) % []显示该图像的最小值与最大值之间的范围
Imwrite函数
>>imwrite(f,'cameraman.jpg','quality',q)
qà介于0到100的整数,越小,压缩越高,质量越不好
>>imwrite(g,'filename.tif','compression','parameter',…
'resolution',[colres rowres])
'parameter'----'none' 无压缩
'packbits' 用于非二值图像
'lwz'. 'deflate'. 'jpeg' 'ccitt'. 'fax3' 'fax4'
[colres rowres]-----默认[72 72] [垂直方向上点数。水平方向上的点数]
1.73 类和图像类型
MATLAB中像素值不限制为整数
图像工具箱所支持的图像像素类型
double----8字节/像素
single-----4字节/像素
uint8-----1字节/像素
uint16、uint32、int8、int16、int32、char(2字节/像素)
logical(1字节/像素)
工具箱支持4种图像类型:
1.灰度级图像(Gray-scale images)-----数据矩阵:
uint8-----[0,255]
uint16----[0,65535]
double、single---归一化为[0,1]区间实数
2.二值图像(Binary images)
取值为0、1的逻辑数组
B=logical(A)%将A矩阵中非0的数值转换为1,0还是0
A---数值数组
B---逻辑数组
Islogical(B)%判断该数组是否逻辑数组
3.索引图像(Indexed images)
4.RGB图像(RGB images)
数据类型转换
B=data_class_name(A)
如: B=double(A); A---uint8, B---double
B=uint8(A); A---double, B---uint8
分数取整,超过部分截断
例:A=[400 200;1,80], B=uint8(A)
因为uint8的范围是[0,255],所以400会被截断成255,
所以B=[255 200;1,80].
图像类型之间的转换
>>f=[-0.5 0.5;0.75 1.5]
f = -0.5000 0.5000
0.7500 1.5000
>>g=im2uint8(f)
g =
2×2 uint8 matrix超过[0,255]范围就截断
0 128 -0.5*255 0.5*255
191 255 0.75*255 1.5*255
%im2uint8(f)---f可是logical、uint8、uint16、double
%im2uint16(f)---同上
g=mat2gray(A,[Amin,Amax])%归一化
g--值介于0和1之间实数; A----double
Amin--A中小于其的置为0;Amax--A中大于其的置为1
g=im2double(h)函数
>>A=[3 4; 5 9];
>>AA=uint8(A);
>>B=im2double(A) %不改变double型数组
B =
3 4
5 9
>>B=im2double(AA)%如果类型是uint8,uint16,logical, 输出double型,值0,1之间
B =
0.0118 0.0157
0.0196 0.0353
uint8 /255 直接除就好
uint16 /65535 同上
meshgrid函数制作关于f=Asin(u0x+v0y)的代码
[X,Y]=meshgrid(1:3,10:14)%X是列标、Y是行标
解 function f=twodsin2(A,u0,v0,M,N)
r=0:M-1;%行
c=0:N-1;%列
[C,R]=meshgrid(c,r);
f=A*sin(u0*R+v0*C);
>>f=twodsin2(1,1/(4*pi),1/(4*pi),512,512);
>>imshow(f)