matlab学习笔记(入门)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)