1、图9-13 MATLAB编程环境图9-161.imread():函数imread(filename,format)是读入图像,filename是要读入的图像的文件名,包括路径和扩展名,当图像文件和matlab文件在同一目录下时,可省略路径;fotmat是图像的格式,可以支持jpg,bmp,gif,png等众多格式;filename和fotmat都要用单引号;2.imshow();Imshow(i):显示一幅图像3.title(text);显示文本text,文本text用单引号引起来函数说明函数说明:二、显示灰度图像和直方图二、显示灰度图像和直方图左侧工作区双击文件m02.m打开,则会打开一个E
2、ditor,里面就是matlab的源代码,m02.m如下:%显示灰度图像和直方图显示灰度图像和直方图clear all%清空内存数据清空内存数据G=imread(X_chest.bmp,bmp);%读入原始图像,为胸部的读入原始图像,为胸部的X片图片图subplot(2,1,1);imshow(G,256);title(原始图像);%显示原始图显示原始图像像subplot(2,1,2);imhist(G);title(原始图像的直方图);%显示原始显示原始图像的直方图图像的直方图按F5运行得如下结果:见图9-17图9-17subplot(2,1,1);imshow(G,256);title(原
3、始图像);%显示原始图像显示原始图像subplot(2,1,2);imhist(G);title(原始图像的直方图);%函数说明函数说明:1.符号%表示其之后的内容为注释2.函数subplot(m,n,p)功能是划分绘图窗口,创建mn排列的子图阵列,p是子图的序号。比如subplot(2,1,1);是创建两行一列的子图阵列,且是第一副图。3.函数imshow(I,N)功能是以N级灰度显示灰度图象I.。imshow(G,256);就是显示256级灰度图象G。4.函数imhist(I)是显示灰度图象I的直方图。三、图像的旋转三、图像的旋转打开文件m03.m:%图像的旋转clear allG=imr
4、ead(X_chest.bmp,bmp);%读入原始图像,为胸部的X片图R=imrotate(G,30,bilinear);%逆时针旋转30度subplot(1,2,1);imshow(G);title(原图);%显示原图subplot(1,2,2);imshow(R);title(逆时针旋转30度后的图像);%显示逆时针旋转30度后的图像按F5运行得如下结果:见图9-18图9-18 1.函数imrotate(G,30,bilinear);是将图形G逆时针方向旋转30度,使用bilinear双线性法差值,若要顺时针方向旋转30度,则需要在度数30的前面加个负号函数说明函数说明:R=imrota
5、te(G,30,bilinear);%逆时针旋转逆时针旋转30度度四、减影处理四、减影处理 打开文件m04.m:%减影处理clear allG1=double(imread(D21.png,png);%读入第一副图G2=double(imread(D22.png,png);%读入第二幅图m,n=size(G1);%计算图像矩阵的大小for i=1:m for j=1:n G(i,j)=2*G2(i,j)-G1(i,j);%减法运算 if G(i,j)=0 G(i,j)=0;end endendsubplot(1,3,1);imshow(uint8(G1);title(尚无造影剂拍摄);%输出无
6、造影剂拍摄的图像subplot(1,3,2);imshow(uint8(G2);title(含造影剂拍摄);%输出注射造影剂后拍摄的图像subplot(1,3,3);imshow(uint8(G);title(经数字减影技术处理后的图像);%经DSA处理后的图像按F5运行得如下结果:见如下图:从上图对比可知,经从上图对比可知,经DSA处理后血管及其病变显示更清晰,有助于迅速的处理后血管及其病变显示更清晰,有助于迅速的出判断出判断函数说明:1、G1=double(imread(D21.png,png);读入一副图像,并且将图像数据转换为double格式(双精度)2、m,n=size(G1);%计
7、算图像矩阵的大小 计算图像G1矩阵大小,即为m*n大小3、imshow(uint8(G1);先把图像G1的图像数据转换成unsigned 8-bit integer格式(无符号8位整型),在显示图象G1五、图像增强:直方图均衡化法五、图像增强:直方图均衡化法打开文件m05.m,%显示图像和直方图及利用均衡化处理进行图像增强clear allG=imread(MRI_brain.jpg,jpg);%读入原始图像,图像为头部的MRI图F=histeq(G);%直方图均衡化处理subplot(2,2,1);imshow(G);title(原始图像)%显示原始图像subplot(2,2,3);imhi
8、st(G);title(原始图像的直方图)%显示原始图像的直方图subplot(2,2,2);imshow(F);title(直方图均衡化处理后的图像)%显示直方图均衡化处理后的图像subplot(2,2,4);imhist(F);title(均衡化后的直方图)%显示处理后图像的直方图,可以对比两幅图像,直观比较图像的不同,也可以观察两幅图的直方图之间的区别按F5运行得如下结果:见图9-19 从图像之间的比较可以看出,经过直方图均衡化处理后,图像的明暗有了明显的变化,对比度明显增高;从下面的直方图之间比较可以得出产生变化的原因:原图像暗色成分较多,反映在直方图上就是灰度级高的一侧没有,而是聚集
9、在灰度级相对较低的一侧;均衡化处理后,图像的明亮色成分多了些,直方图分布占满了整个灰度级(0-255)。函数说明函数说明:F=histeq(G);%直方图均衡化处理是对直方图进行均衡化处理,并赋给F。六、基于边界的图像分割六、基于边界的图像分割-Roberts算子算子打开文件m06.m%基于边界的图像分割-Roberts算子clear allI=imread(cell.bmp,bmp);%读入原始图像,该图是个显微镜细胞图像BW=edge(I,roberts);%程序自动选择阈值进行分割BW1=edge(I,roberts,0.1);%人工设定阈值=0.01进行分割subplot(1,3,1)
10、;imshow(I);title(原图);%显示原图subplot(1,3,2);imshow(BW);title(自动);%显示自动选择阈值分割图像subplot(1,3,3);imshow(BW1);title(手工);%显示阈值=0.1的分割图像按F5运行得如下结果:见图9-20经过边界分割后,细胞的轮廓清晰显示出来,经过人工设置阈值=0.1 进行分割后,检测出的细胞效果更加明显,边界更清晰。函数说明函数说明:1.函数edge(I,sobel,THRESH)是对图像I进行阈值分割,采用的算子是sobel所指,上述程序是Roberts算子,THRESH是阈值,其值放在里,省去THRESH则表示自动选择阈值进行分割,见上述程序。BW=edge(I,roberts);%程序自动选择阈值进行分割BW1=edge(I,roberts,0.1);%人工设定阈值=0.01进行分割