数字图像处理-MATLAB-0

冈萨雷斯-数字图像处理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(12end,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类型

猜你喜欢

转载自blog.csdn.net/u010069760/article/details/80036431