函数小结.docx
- 文档编号:16474774
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:16
- 大小:22.82KB
函数小结.docx
《函数小结.docx》由会员分享,可在线阅读,更多相关《函数小结.docx(16页珍藏版)》请在冰点文库上搜索。
函数小结
Matlab图像处理小结
(2012-05-1815:
25:
34)
转载▼
标签:
高斯
台中
函数
图像数据
图像文件
分类:
图像处理
经常做做图像处理的东西,时间长了,有些函数就忘了,看到网上有人总结,收藏了。
1.图像和图像数据
缺省情况下,MATLAB将图像中的数据存储为双精度类型(double),64位浮点数,所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即图像矩阵中每个数据占用1个字节。
在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。
另外,uint8与double两种类型数据的值域不同,编程需注意值域转换。
从uint8到double的转换
---------------------------------------------
图像类型MATLAB语句
---------------------------------------------
索引色B=double(A)+1
索引色或真彩色B=double(A)/255
二值图像B=double(A)
---------------------------------------------
从double到uint8的转换
---------------------------------------------
图像类型MATLAB语句
---------------------------------------------
索引色B=uint8(round(A-1))
索引色或真彩色B=uint8(round(A*255))
二值图像B=logical(uint8(round(A)))
---------------------------------------------
2.图像处理工具箱所支持的图像类型
2.1真彩色图像
R、G、B三个分量表示一个像素的颜色。
如果要读取图像中(100,50)处的像素值,可查看三元数据(100,50,1:
3)。
真彩色图像可用双精度存储,亮度值范围是[0,1];比较符合习惯的存储方法是用无符号整型存储,亮度值范围[0,255]
2.2索引色图像
包含两个结构,一个是调色板,另一个是图像数据矩阵。
调色板是一个有3列和若干行的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。
注意:
MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。
常用颜色的RGB值
--------------------------------------------
颜色RGB颜色RGB
--------------------------------------------
黑001洋红101
白111青蓝011
红100天蓝0.6701
绿010橘黄10.50
蓝001深红0.500
黄110灰0.50.50.5
--------------------------------------------
产生标准调色板的函数
-------------------------------------------------
函数名调色板
-------------------------------------------------
Hsv色彩饱和度,以红色开始,并以红色结束
Hot黑色-红色-黄色-白色
Cool青蓝和洋红的色度
Pink粉红的色度
Gray线型灰度
Bone带蓝色的灰度
JetHsv的一种变形,以蓝色开始,以蓝色结束
Copper线型铜色度
Prim三棱镜,交替为红、橘黄、黄、绿和天蓝
Flag交替为红、白、蓝和黑
--------------------------------------------------
缺省情况下,调用上述函数灰产生一个64×3的调色板,用户也可指定调色板大小。
索引色图像数据也有double和uint8两种类型。
当图像数据为double类型时,值1代表调色板中的第1行,值2代表第2行……如果图像数据为uint8类型,0代表调色板的第一行,,值1代表第2行……
2.3灰度图像
存储灰度图像只需要一个数据矩阵。
数据类型可以是double,[0,1];也可以是uint8,[0,255]
2.4二值图像
二值图像只需一个数据矩阵,每个像素只有两个灰度值,可以采用uint8或double类型存储。
MATLAB工具箱中以二值图像作为返回结果的函数都使用uint8类型。
2.5图像序列
MATLAB工具箱支持将多帧图像连接成图像序列。
图像序列是一个4维数组,图像帧的序号在图像的长、宽、颜色深度之后构成第4维。
分散的图像也可以合并成图像序列,前提是各图像尺寸必须相同,若是索引色图像,调色板也必须相同。
可参考cat()函数A=cat(4,A1,A2,A3,A4,A5)
3.MATLAB图像类型转换
图像类型转换函数
---------------------------------------------------------------------------
函数名函数功能
---------------------------------------------------------------------------
dither图像抖动,将灰度图变成二值图,或将真彩色图像抖动成索引色图像
gray2ind将灰度图像转换成索引图像
grayslice通过设定阈值将灰度图像转换成索引色图像
im2bw通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图
ind2gray将索引色图像转换成灰度图像
ind2rgb将索引色图像转换成真彩色图像
mat2gray将一个数据矩阵转换成一副灰度图
rgb2gray将一副真彩色图像转换成灰度图像
rgb2ind将真彩色图像转换成索引色图像
----------------------------------------------------------------------------
4.图像文件的读写和查询
4.1图形图像文件的读取
利用函数imread()可完成图形图像文件的读取,语法:
A=imread(filename,fmt)
[X,map]=imread(filename,fmt)
[...]=imread(filename)
[...]=imread(filename,idx)(只对TIF格式的文件)
[...]=imread(filename,ref)(只对HDF格式的文件)
通常,读取的大多数图像均为8bit,当这些图像加载到内存中时,Matlab就将其存放在类uint8中。
此为Matlab还支持16bit的PNG和TIF图像,当读取这类文件时,Matlab就将其存贮在uint16中。
注意:
对于索引图像,即使图像阵列的本身为类uint8或类uint16,imread函数仍将颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。
4.2图形图像文件的写入
使用imwrite函数,语法如下:
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(...,filename)
imwrite(...,parameter,value)
当利用imwrite函数保存图像时,Matlab缺省的方式是将其简化道uint8的数据格式。
4.3图形图像文件信息的查询imfinfo()函数
5.图像文件的显示
5.1索引图像及其显示
方法一:
image(X)
colormap(map)
方法二:
imshow(X,map)
5.2灰度图像及其显示
Matlab7.0中,要显示一副灰度图像,可以调用函数imshow或imagesc(即imagescale,图像缩放函数)
(1)imshow函数显示灰度图像
使用imshow(I)或使用明确指定的灰度级书目:
imshow(I,32)
由于Matlab自动对灰度图像进行标度以适合调色板的范围,因而可以使用自定义大小的调色板。
其调用格式如下:
imshow(I,[low,high])其中,low和high分别为数据数组的最小值和最大值。
(2)imagesc函数显示灰度图像
下面的代码是具有两个输入参数的imagesc函数显示一副灰度图像
imagesc(1,[0,1]);
colormap(gray);
imagesc函数中的第二个参数确定灰度范围。
灰度范围中的第一个值(通常是0),对应于颜色映象表中的第一个值(颜色),第二个值(通常是1)则对应与颜色映象表中的最后一个值(颜色)。
灰度范围中间的值则线型对应与颜色映象表中剩余的值(颜色)。
在调用imagesc函数时,若只使用一个参数,可以用任意灰度范围显示图像。
在该调用方式下,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值,数据矩阵中的最大值对应于颜色映象表中的最后一个颜色值。
5.3RGB图像及其显示
(1)image(RGB)
不管RGB图像的类型是double浮点型,还是uint8或uint16无符号整数型,Matlab都能通过image函数将其正确显示出来。
RGB8=uint8(round(RGB64×255));%将double浮点型转换为uint8无符号整型
RGB64=double(RGB8)/255;%将uint8无符号整型转换为double浮点型
RGB16=uint16(round(RGB64×65535));%将double浮点型转换为uint16无符号整型
RGB64=double(RGB16)/65535;%将uint16无符号整型转换为double浮点型
(2)imshow(RGB)参数是一个m×n×3的数组
5.4二进制图像及其显示
(1)imshow(BW)
在Matlab7.0中,二进制图像是一个逻辑类,仅包括0和1两个数值。
像素0显示为黑色,像素1显示为白色。
显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数值0显示为白色;1显示为黑色。
例如:
imshow(~BW)
(2)此外,还可以使用一个调色板显示一副二进制图像。
如果图形是uint8数据类型,则数值0显示为调色板的第一个颜色,数值1显示为第二个颜色。
例如:
imshow(BW,[100;001])
5.5直接从磁盘显示图像
可使用一下命令直接进行图像文件的显示:
imshowfilename
其中,filename为要显示的图像文件的文件名。
如果图像是多帧的,那么imshow将仅显示第一帧。
但需注意,在使用这种方式时,图像数据没有保存在Matlab7.0工作平台。
如果希望将将图像装入工作台中,需使用getimage函数,从当前的句柄图形图像对象中获取图像数据,命令形式为:
rgb=getimage;
1、图像的变换
①fft2:
fft2函数用于数字图像的二维傅立叶变换,如:
i=imread('104_8.tif');
j=fft2(i);
②ifft2:
:
ifft2函数用于数字图像的二维傅立叶反变换,如:
i=imread('104_8.tif');
j=fft2(i);
k=ifft2(j);
2、模拟噪声生成函数和预定义滤波器
①imnoise:
用于对图像生成模拟噪声,如:
i=imread('104_8.tif');
j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声
②fspecial:
用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器h=fspecial('gaussian');%高斯低通滤波器
h=fspecial('laplacian');%拉普拉斯滤波器h=fspecial('log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
3、图像的增强
①直方图:
imhist函数用于数字图像的直方图显示,如:
i=imread('104_8.tif');
imhist(i);
②直方图均化:
histeq函数用于数字图像的直方图均化,如:
i=imread('104_8.tif');
j=histeq(i);
③对比度调整:
imadjust函数用于数字图像的对比度调整,如:
i=imread('104_8.tif');
j=imadjust(i,[0.3,0.7],[]);
④对数变换:
log函数用于数字图像的对数变换,如:
i=imread('104_8.tif');
j=double(i);
k=log(j);
⑤基于卷积的图像滤波函数:
filter2函数用于图像滤波,如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];
j=filter2(h,i);
⑥线性滤波:
利用二维卷积conv2滤波,如:
i=imread('104_8.tif');
h=[1,1,1;1,1,1;1,1,1];
h=h/9;
j=conv2(i,h);
⑦中值滤波:
medfilt2函数用于图像的中值滤波,如:
i=imread('104_8.tif');
j=medfilt2(i);
⑧锐化
(1)利用Sobel算子锐化图像,如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子
j=filter2(h,i);
(2)利用拉氏算子锐化图像,如:
i=imread('104_8.tif');
j=double(i);
h=[0,1,0;1,-4,0;0,1,0];%拉氏算子
k=conv2(j,h,'same');
m=j-k;
3、图像边缘检测
①sobel算子如:
i=imread('104_8.tif');j=edge(i,'sobel',thresh)
②prewitt算子如:
i=imread('104_8.tif');j=edge(i,'prewitt',thresh)
③roberts算子如:
i=imread('104_8.tif');j=edge(i,'roberts',thresh)
④log算子如:
i=imread('104_8.tif');j=edge(i,'log',thresh)
⑤canny算子如:
i=imread('104_8.tif');j=edge(i,'canny',thresh)
⑥Zero-Cross算子如:
i=imread('104_8.tif');j=edge(i,'zerocross',thresh)
4、形态学图像处理
①膨胀:
是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:
a=imread('104_7.tif');%输入二值图像
b=[010;111;010];
c=imdilate(a,b);
②腐蚀:
函数imerode执行腐蚀,如:
a=imread('104_7.tif');%输入二值图像
b=strel('disk',1);
c=imerode(a,b);
③开运算:
先腐蚀后膨胀称为开运算,用imopen来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imopen(a,b);
④闭运算:
先膨胀后腐蚀称为闭运算,用imclose来实现,如:
a=imread('104_8.tif');
b=strel('square',2);
c=imclose(a,b);
转自:
下列表格中除了个别函数外,其余函数都是图像处理工具箱提供的关于图像处理的函数,现摘录到此以备查找。
表1图像显示函数名
功能说明
函数名
功能说明
colorbar
颜色条显示
montage
按矩形剪辑方式显示多帧图像
getimage
从坐标系中获取图像数据
immovie
从多帧索引图像中制作电影
image
建立显示图像
movie
播放电影
subimage
在同一图像窗口显示多个图像
trueszie
调整图像显示大小
imagesc
调整数据并显示图像
warp
显示图像为纹理映射表面
imshow
图像显示
zoom
二维图形放大或缩小
表2图像文件输入/输出函数名
功能说明
函数名
功能说明
imread
图像文件读入
load
将以mat为扩展名的图像文件调入到内存
imwrite
图像写出
save
将内存变量中图像保存到mat文件中
dicomread
读取DICOM图像
dicomwrite
输出DICOM图像
iminfo
查看图形信息
表3图像像素值及其统计函数名
功能说明
函数名
功能说明
impixel
返回选定图像像素颜色值
imcontour
画图像数据轮廓(等高线,等值线)
improfile
图像中沿一个路径的数据值计算
imhist
求图像数据直方图
mean2
求均值
corr2
求相关系数
std2
求标准差
表4图像分析函数名
功能说明
函数名
功能说明
edge
灰度图像边缘检测
qtgetblk
获得四叉树分解块值
qtecomp
执行四叉树分解
qtsetblk
设置四叉树分解块值
表5图像增强及平滑函数名
功能说明
函数名
功能说明
imadjust
对比度调整
medfilt2
二维中值滤波器
histeq
直方图均衡
ordfilt2
顺序统计滤波器
imnoise
给图像增加噪声
wiener2
二维自适应除噪滤波器
表6图像线性滤波及二维线性滤波器设计函数名
功能说明
函数名
功能说明
conv2
二维卷积
freqz2
计算二维频率响应
convmtx2
计算二维卷积矩阵
fsamp2
用频率抽样设计二维FIR滤波器
convn
多维卷积
ftrans
用频率抽样转换二维FIRlbq
filter2
二维线性数字滤波器
fwind1
用一维窗口方法设计二维FIR滤波器
fspecial
产生预定义滤波器
fwind2
用二维窗口方法设计二维FIR滤波器
frespace
确定二维频率响应间隔
表7图像变换函数名
功能说明
函数名
功能说明
fft
计算一维快速Fourier变换
dct
计算离散余弦变换
ifft
计算一维FFT的逆变换
idct
计算离散反余弦变换
fft2
计算二维FFT
dct2
计算2D离散余弦变换
ifft2
计算二维逆FFT
idct2
计算2D反离散余弦变换
fftn
计算多维FFT
dctmtx
计算TCT矩阵
ifftn
计算多维逆FFT
radon
计算Radon变换
fftshift
直流分量移到频谱中心
表8图像领域及操作函数名
功能说明
函数名
功能说明
bestblk
选择块处理的块大小
colfilt
使用列方向函数进行领域运算
blkproc
对图像实行不同的块处理
im2col
重排图像块为矩阵列
col2im
重排矩阵列成图像块
nlfilter
进行一般领域计算
表9二值图像操作函数名
功能说明
函数名
功能说明
applylut
使用查找表进行领域操作
bwperim
确定二值图像中的目标边界
bwarea
计算二值图像中的目标区域
bwselect
选择二值图像中的目标
bweuler
计算二值图像中的欧拉数
dilate
对二值图像进行膨胀计算
bwfill
二值图像背景区域填充
erode
对二值图像进行寝蚀运算
bwlabel
标识二值图像中的连接成分
makelut
构造查找表(applylut)使用
bwmorph
二值图像形态运算
表10基于区域的图像处理函数名
功能说明
函数名
功能说明
roicolor
根据颜色选择要处理的区域
roifilt2
对要处理区域滤波
roifill
在任意区域内平滑差值
roipoly
选择要处理的多边形区域
表11图像几何运算函数名
功能说明
函数名
功能说明
imcrop
图像剪裁
imrotate
图像旋转
imresize
图像大小调整
interp2
二维数据差值
表12图像颜色图操作函数名
功能说明
函数名
功能说明
brighten
颜色图像变亮或变暗
colormap
设置获取图
cmpermute
重新排列颜色图中的颜色
imapprox
由颜色较少的图像近似索引图像
cmunique
寻找唯一的颜色图及相应的图像
rgbplot
绘制RGB颜色图
表13颜色控件转换函数名
功能说明
函数名
功能说明
hsv2rgb
将HSV颜色转化为RGB颜色值
mtsc2rgb
将NTSC值转换为RGB颜色空间值
rgb2hsv
将RGB颜色值转换为HSV颜色值
rgb2ntsc
将RGB值转换为NTSC颜色空间值
转自:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 小结