冈萨雷斯-数字图像处理MATLAB-站在巨人的肩膀上-学习笔记
http://www.imageprocessingplace.com/
2.1
MATLAB图像处理工具箱IPT是扩展MATLAB数值计算能力的函数集。图像x和y坐标及振幅是连续的,数字化的第一步就是数字化。坐标值数字化称为采样或者取样,振幅数字化称为量化。一般图像坐标原点是(0,0),Matlab的IPT工具箱图像坐标表示原点是(1,1)。用矩阵变量来存储。
2.2Matlab中图像的读取显示保持
imread('fiilename');#不加分号会立即显示图像,加分号表示取消输出。
#eg:f=imread('dog.png');
size(f);#给出图像的行数和列数
[M,N]=size(f);#获取行数和列数
whos f#显示数组f的信息。
imshow(f);#默认显示彩色图
imshow(g);#再次用imshow会覆盖掉前面的f图像的显示,可以用figure函数取代
figure,imshow(g);
imshow(f,G);#显示图像f的灰度图
imshow(f,[low,high]);#显示图像f的灰度图,小于low的显示为黑色,大于等于high的显示为白色,介于两者之间的显示为中等亮度值
imwrite(f,'copyf.png');#保存图像
imfinfo filename#显示图像文件信息
k=imfinfo('dog.jpg');#图像信息保存到k中
2.2数据类Matlab中像素值并不是整数,
亮度图像
数据矩阵,归一化的取值表示亮度,unit8 or unit16整数取值范围分别是[0,255]和[0,65535]。double类的像素值就是浮点数,双精度归一化亮度取值范围[0,1]
二值图像
只有0和1的取值,
b=logical(c);#c图像二值化。
islogical(b);#判断b是否是逻辑数组
b=data_class_name(a);#如 b=double(a);
g=im2unit8(b);#小于0的转为0,大于1的转为255,之间数字乘以255,并四舍五入为最近的整数。
d=g.';#d是g的转制
d(1:3);#取d中前三个元素
V(1:2:end)#步长为2取值
V(end:-2:1)#步长为-2取值倒序
fp=f(end:-1:1,:)#垂直翻转
fc=f(257:768,257:768)#取图像的一部分
fs=f(1:2:end,1:2:end);#二次采样
k=size(A,1)#A的行数
k=size(A,2)#A的列数
zero(M,N);double类型的0
ones(M,N);
ture(M,N);
false(M,N);逻辑类型
magic(M,N);
rand(M,N);[0,1]间
randn(M,N);正态分布u(0,1)
2.3Matlab代码优化
1.向量化循环
0 for和while转化为等价的向量或者矩阵运算
for x=1:M
f(x)=A*sin((x-1)/(2*pi));
end
优化后
x=1:M-1;
f=A*sin(x/(2*pi));
预分配数组
#加快执行时间另一种方法是在程序中**预分配数组的大小**,减少存储器碎片
f=zeros(1024);
g=zeros(1024);
2.4交互式I/O
0显示a矩阵disp(a)
t=input('enter your data:','s');#输入1 2 3时t=1 2 3,是char类型的class(t)
n=str2num(t)#转为数字类型
d=char(n)#转为char类型