matlab学习笔记(入门)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据类:double,unit8,unit16,unit32,int8,int16,int32,single,char,logical!Matlab中所有数值计算都可以用double类来进行!,unit8实际中最常用的图像

图像类型:亮度图像,二值图像,索引图像,RGB图像

亮度图像:是数据矩阵,若是unit8或uint16则是【0,255】或者是【0,65535】,若是double 类,则像素取值是浮点数

二值图像只有:0和1的逻辑数组!

简单操作:

读图并显示详细情况

>> f=imread('E:\image\book.pgm');whos

Name Size Bytes Class Attributes

f 289x338 97682 uint8

将图像垂直翻转:

>> f=imread('E:\image\book.pgm');fp=f(end:-1:1, : );imshow(fp)

将图像上下左右翻转:

f=imread('E:\image\book.pgm');fc=f(end:-1:1,end:-1:1);imshow(fc)

将图像二次采样并显示详情:

>> fs=f(1:2:end,1:2:end);imshow(fs)

>> whos fs

Name Size Bytes Class Attributes

fs 145x169 24505 uint8

将图像取出一部分:

>> fg=f(200:250,200:300);imshow(fg)

显示图像中的一条水平扫描线:

>> plot(f(200, : )

将两幅图像进行相乘:

f=imread('c:\image\liangdian.jpg');g=imread('c:\image\shuiguo.jpg');

g=g(300:715,500:1149);f=f(1:416,1:650);f

d=double(f);gd=double(g);

p=fd.*gd;数组乘!

pmax=max(p(:));pmin=min(p(:));取最大最小值!

pn=mat2gray(p);figure,imshow(pn)

亮度变化:

函数imadjust是对灰度图像进行亮度变化的基本ipt工具:

g=imadjust(f,[low-in high-in],[low-in high-in],gamma)

Gamma为1线性映射,大于1,则映射被加权至更低(更暗的)输出值,小于一,加权至更高的输出值

明暗反转图像(负片)参数不同:

>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ]);imshow(g)

>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],2);imshow(g)

>> f=imread('E:\image\book.pgm');g=imadjust(f, [0 1],[1 0 ],0.5);imshow(g)

另外也可以这样:进行明暗反转:

g=imcomplement(f);imshow(g)

将0.5到0.75之间的灰度级拓展到0-1,可用于突出我们感兴趣的亮度带

g2= g2=imadjust(f,[0.5 0.75],[0 1]);imshow(g2)

这个类似上面语句,但又更多的灰色调,方法是压缩灰度级的低端并扩展灰度级的高端

g3=imadjust(f,[],[],2);imshow(g3)

对数和对比度拉伸变换:

对数变换通过此式子完成:g=c*log(1+double(f))

对8比特而言,最简便:gs=im2uint8(mat2gray(g))

使用mat2gray可将值限定在0-1之间,im2uint可将值限定在0-255之间

使用对数变化减小动态范围:

>> g=im2uint8(mat2gray(log(1+double(f)));imshow(g)

图像g与原图像相比,在视觉方面的改善效果是非常明显的

函数intrans:建立一个函数intrans,利用对比度拉伸方法得到增强图像

然后在主界面输入:

f=imread('E:\image\book.pgm');g=intrans(f,'stretch',mean2(im2double(f)),0.9);figure,imshow(g) 函数gscale,亮度标度的函数:g=gscale(f,method,low,high)

处理图像时,即管中间没问题,但想利用8比特或者16比特格式包村或查看一副图像时会出现问题,则要将图像调度在全尺度。

将彩色图像变成灰度图像并变小:

>> I=imread('d:\image\tupian2.jpg');whos I

Name Size Bytes Class Attributes

I 1000x666x3 1998000 uint8

>> I=imread('d:\image\tupian2.jpg');f=rgb2gray(I);s=f(1:2:end,1:2:end);imshow(s)

>> whos s

Name Size Bytes Class Attributes

s 500x333 166500 uint8

生成并绘制图像的直方图:

把pgm图像的直方图显示出来:

h= imhist(f,b)b适用于形成直方图的收集箱的个数,即灰度级的个数

>> f=imread('E:\image\book.pgm');imhist(f)

把彩色图片变成灰度图像再进行显示其直方图:

>> I=imread('d:\image\tupian2.jpg');f=rgb2gray(I);imhist(s)

直方图经常使用条形图来进行显示:

Bar(horz,v, width)width为1竖条较明显,为零时是简单的垂直线。默认为0.8

V是一个行向量,它包含将被绘制的点;

下面的语句将生成一幅条形图,其水平轴以10个灰度级为一组:

>> f=imread('E:\image\book.pgm');h=imhist(f);h1=h(1:10:256);horz=1:10:256;bar(horz,h1)

>> axis([0 255 0 1200])

>> set(gca,'xtick',0:50:255)

>> set(gca,'ytick',0:200:1200)

函数axis:

axis([xmin xmax ymin ymax]) 用来标注输出的图线的最大值最小值。其中,[xmin xmax ymin ymax]用来表示需要显示坐标的范围,xmin、xmax、ymin、ymax分别表示X、Y轴坐标最小和最大值。

gca 表示获得当前轴,xtick和ytick按所示的间隔设置水平轴和垂直轴的刻度

利用title函数可以给图形加入标题:title(‘titlestring’)‘’内为标题处出现的字符串,把语

相关文档
最新文档