实验一 数字像文件基本 类型的转换 一、实验目的¨了解Matlab支持4种像类型:灰度像、二值像、索引像和RGB像¨学会运用MATLAB实现4种类型之间的转换¨掌握像的基本运算 数字像处理:是将像信号转换成数字格式并利用计算机对其进行一系列的操作,以得到所期望的结果数字像的特点:处理信息量大;数字像处理占用的频带较宽;数字像中各个像素的相关性大二、实验原理数字像处理的主要研究内容¨像处理、像分析和像理解¨像处理:强调在像之间进行的变换¨像分析:则主要是对像中感兴趣的目标进行检测和测量,以获得他们的客观信息从而建立对像的描述¨像理解:在像分析的基础上,进一步研究像中各目标的性质和它们之间的相互联系,并得出对像内容含义的 理解以及对原来客观场景的解释,从而指导和规划行 动三、实验内容¨像读取¨读取像函数:imread()¨格式:¨变量名=imread(‘路径\文件名’,‘文件格式’)¨例:读取像信息¨ x=imread('city.jpg', 'jpg'); 像的显示 ¨读取像的显示 imshow( ) image( )¨imshow(X)¨image()和subimage()¨显示读入到内存中的像。
像保存1 ¨将像写到文件 imwrite()¨格式:¨imwrite(变量名,‘新文件名’)¨例:¨ imwrite(x,'new_image.bmp') 像保存2¨将像用save命令以mat文件形式保存到磁盘中,以后可用load命令调用¨格式:¨save 保存的文件名 变量名(像)¨load 保存的文件名 (1)索引像索引像包括像矩阵与颜数组其中颜是按照像中颜值进行排序后的数组对于每个象素,像矩阵包含一个值,这个值就是颜数组中的索引颜为m*3双精度值矩阵,各行分别指定红、绿、蓝单值像矩阵与颜的关系依赖于像矩阵是双精度还是无符号8位整数(unit8)双精度:第一点对应第一行,……,依次类推unit8: 有一个偏移量第0点对应第一行,第一点对应第二行,……MATLAB像处理工具箱支持四种基本像类型:索引像、灰度像、二进制像、RGB像在MATLAB中,灰度像是保存在一个矩阵中的,矩阵中的每个元素代表一个像素点矩阵可以是双精度类型,其值域为[0,1];也可以为uint8类型,其数据范围为[0,255]矩阵的每个元素代表不同的亮度或灰度级:双精度:0—黑1—白unit8: 0—黑255—白 (2)灰度像(3)二进制像每个点为两离散值中的一个,这两个值代表开或关。
二进制像保存在一个二维的由0(关)和1(开)组成的矩阵中从另一个角度讲,二进制像可以看成为一个仅包含黑与白的特殊灰度像,也可看作仅有两种颜的索引像4)RGB像 ¨RGB像分别用红、绿、蓝三个亮度值为一组,代 表每个象素的颜这些亮度值直接存在像数组中,而不是存放在颜中像数组为m*n*3,m和n表示像像素的行列数几种像之间的转换:通过matlab工具箱提供的函数来实现:索引像(ind)、灰度像(gray)、 RGB像(rgb)1)灰度像与索引像的相互转换:gray2ind( ) ind2gray( )格式:[X,MAP]=gray2ind(I,[n])I表示存放灰度像的变量, n为颜值(缺省64)I=ind2gray(X,MAP) X表示像矩阵变量 , MAP表示颜数组变量 2) RGB像与灰度像的相互转换:rgb2gray( )格式:I=rgb2gray(RGB)将真彩像RGB转换为灰度级亮度像I3) RGB像与索引像的相互转换:rgb2ind( ) ind2rgb( )格式:[X,MAP]=rgb2ind(RGB)RGB=ind2rgb(X,MAP) 将索引像、灰度像、 RGB像转换为二进制像im2bw( ) 注意:如果输入像不是灰度级像,首先将其转换为灰度级像,然后,通过值化将灰度级像转换为二进制像。
输出像在输入像所有亮度小于给定值(level)像素点处均为0,在其他地方均为1level值得取值范围为[0,1] 格式:BW=im2bw(I,level)BW=im2bw(X,MAP,level)BW=im2bw(RGB,level) 格式:imshow(I,n) 使用n个灰度级显示灰度像I imshow(I,[low high]) 将I显示为灰度像,并指定灰度级范围imshow(X,MAP) 使用颜map显示索引像imshow(RGB) 显示真彩RGB像imshow(bw) 显示二进制像 索引、灰度、二进制像的显示颜条显示:colorbar()colorbar(‘vert’) 在垂直轴旁增加一颜等级条colorbar(‘horiz’) 在水平轴旁增加一颜等级条 其它函数: a=imread('city.jpg','jpg'); subplot(2,2,1) subimage(a) title('原彩像') i=rgb2gray(a); subplot(2,2,2) subimage(i) title('灰度像') [X,MAP]=rgb2ind(a,256); subplot(2,2,3) subimage(X) title('索引像')例:任选一幅像对其进行各种像变换像处理的基本运算¨像代数运算¨像加法(函数:imadd())¨功能:实现两幅像相加或像加上一个常数。
¨例:为像中每个像素增加亮度x=imread('aaa.tif');I=rgb2gray(x);J=imadd(I,100);subplot(1,2,1); subimage(I);subplot(1,2,2); subimage(J); ¨像减法(函数:imsubtract())¨功能:实现两幅像相减或像减去一个常数¨像乘法(函数:immultiply())¨功能:实现两幅像相乘或像的亮度缩放¨像除法(函数:imdivide())¨功能:实现两幅像相除或像的亮度缩放像的空间域操作¨像的缩放(函数:imresize())¨格式:J=imresize(I,n) n缩放比例¨像的旋转(函数:imrotate())¨格式:J=imrotate(I,旋转度数,‘方法’)方法: ‘nearest‘ 最近邻插值法‘bilinear‘ 双线性插值法¨像的剪切(函数:imcrop())¨格式:J=imcrop(I,[xmin ymin xmax ymax])四、实验报告要求 1、简述实验目的及实验原理;2、选取两幅大小一样的像,首先转换成灰度像,然后对其中一幅进行旋转(旋转角度自定),再对两幅像进行代数运算,并附上程序及处理前后的像;3、对实验结果进行总结。