数字图像处理及应用(MATLAB)第3章
例 变换法伪彩色处理的实现% 变换法伪彩色处理的MATLAB程序clcI=imread('cameraman.tif'); % 读入灰度图像subplot(1,2,1),imshow(I);title('原图形'); % 显示灰度图像I=double(I); [M, N]=size(I);L=256;for i=1:M for j =1:N if I(i,j)<=L/4 R(i,j)=0; G(i,j)=4*I(i,j); B(i,j)=L; else if I(i,j)<=L/2 R(i,j)=0; G(i,j)=L; B(i,j)=-4*I(i,j)+2*L; else if I(i,j)<=3*L/4 R(i,j)=4*I(i,j)-2*L; G(i,j)=L; B(i,j)=0; else R(i,j)=L; G(i,j)=-4*I(i,j)+4*L; B(i,j)=0; end end end endend for i=1:M for j =1:N OUT(i,j,1)=R(i,j); OUT(i,j,2)=G(i,j); OUT(i,j,3)=B(i,j); end endOUT=OUT/256;subplot(1,2,2), imshow(OUT);title('伪色彩处理后');程序运行结果如图 所示。 变换法伪彩色处理 开闭运算示例 5.开和闭运算案例分析[例] 将如图 (a)所示图像用MATLAB编程进行开和闭运算, 要求: (1)用三阶单位矩阵的结构元素进行开和闭运算; (2)用半径为2的平坦圆盘形结构元素进行开和闭运算; (3) 显示所有开和闭运算的结果。 bw0=imread('testpat1.png');bw1=im2bw(bw0);subplot(2,6,1:2),imshow(bw1);title('(a)原图');s=ones(5);bw2=imopen(bw1,s);subplot(2,6,3:4),imshow(bw2);title('(b)开运算图像一');bw3=imclose(bw1,s);subplot(2,6,5:6),imshow(bw3);title('(c)闭运算图像一');s1=strel('disk',4);bw4=imopen(bw1,s1);subplot(2,6,8:9),imshow(bw4);title('(d)开运算图像二');bw5=imclose(bw1,s1);subplot(2,6,10:11),imshow(bw5);title('(e)闭运算图像二'); 二值图像开闭运算 3.4.3灰度形态学图像处理 二值形态学的4个基本运算,即腐蚀、膨胀、开和闭运算,可方便地推广到灰度图像空间,与二值形态学不同的是,这里运算的操作对象不再看作集合而看作图像函数。以下设是输入图像,S(x ,y)是结构元素。 1. 灰值图像腐蚀 半圆结构元素进行灰值腐蚀 扁平结构元素进行灰值腐蚀 在这两个图中,可以看到灰值腐蚀与二值腐蚀之间的一个基本关系:被灰值腐蚀函数的定义域等于利用结构元素的定义域作为结构元素,对函数的定义域作二值腐蚀所得到的结果。 2.灰值图像膨胀 灰度膨胀可以通过将结构元素的原点平移到与信号重合,然后,对信号上的每一点求结构元素的最大值得到,如图所示。 灰值膨胀示意图 [例 ] 将如图 (a) 所示的灰度图像用MATLAB编程进行腐蚀与膨胀处理,要求: (1) 用三阶单位矩阵的结构元素进行腐蚀和膨胀; (2) 用半径为2的平坦圆盘形结构元素进行腐蚀和膨胀; (3)显示所有腐蚀及膨胀结果。 灰值腐蚀与膨胀的Matlab原程序代码如下:bw1=imread('liftingbody.png');subplot(2,6,1:2),imshow(bw1);title('(a)原图');s=ones(5);bw2=imerode(b