图像处理基本知识(一)

第一章 绪论

使用MATLAB图像处理工具箱IPT函数,并且本书开发了新函数,每个函数的源代码包含在各章节或附录C中

第二章 基本原理

Matlab支持图片格式

图像操作

1.读取图像:f=imread('xxxx.jpg')

2.读取行列:[m,n]=size(f), whos f显示数组附加信息。第一维表示垂直方向,size(f,1)表示行数

3.显示图像:imshow(f,G) 若将G省略,默认灰度级数为256;G=[low high]表示low以下为黑,high以上为白;G=[ ]表示low默认为f中最小值,high为最大值

4.函数pixval:交互显示单个像素亮度值;若按住鼠标左键不放,可用于测量距离

5.保存图像:imwrite(f,'xxxx.jpg')

JPEG压缩:imwrite(f,'xxx.jpg','quality',q) q为0-100的整数,q越小图像退化越严重可用imfinfo计算压缩率

K=imfinfo('test.jpg');

image_bytes = K.Width*K.Height*K.BitDepth/8;

compressed_bytes = K.FileSize;

compressed_ratio = image_bytes/compressed_bytes;

K结构体成员如下图

tif同分辨率尺寸缩放

数据类

!

图像类型

亮度图像(Intensity images)二值图像(Binary images):数据类为logical。A为由0、1构成的数值数组,B=logical(A),islogical判断索引图像(Indexed images)RGB图像(RGB images)

数据类与图像数据类型间的转换

数据类转换:B=logical(A)或uint8(A); double转uint8,会将[0 255]以外去掉,然后去掉小数点部分图像类型转换:

im2uint8:[0 1]范围内乘255,范围外置为0,1。im2uint16:与int8类似,65535。mat2gray:只能输入double,转换为[0 1]的double;mat2gray(A,[Amin,Amax])规定转换后的0,1。im2double:若输入为uint8,每个值除以255;若为uint16,除以65535。im2bw:im2bw(f,T)T的取值为[0 1];若输入uint8,会先每个值除以255;可以用关系运算’gb=f>2’替代。

数组索引

向量索引:v([1 4 7])矩阵索引:

1.A(D),D为逻辑数组,将所有为1的以列向量排列

2.一个:,将全部元素以逐列形式排成一个列向量,sum(A(😃)等价于sum(sum(A))

例2.5

垂直翻转fp=f(end:-1:1,:);二次取样fs=f(1:2:end,1:2:end);

标准数组

]

运算符

1.算数运算符

!]

max&min

]

2.关系运算符 ~=

3.逻辑运算符 & | ~

]

]

!]

代码优化

tic toc 计时;t1/(t2+eps)预分配数组

单元数组与结构体

//单位数组

c={'guess',[1;2],3}

c{1}

//结构体

field='first';

value=1;

c=struct(field,value);

Top