1.图像的点运算
1.内容:
对一灰度图像,通过选择不同的灰度变换函数s=T(r)实现图像的灰度变换范围线性扩展和非线性扩展,以及图像的灰度倒置和二值化
2.实验方法:
1.选择一幅图像lena.jpg,设置输入输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9。
2.设置非线性扩展函数的参数c=2。
3.采用灰度倒置变换函数s=255-r进行图像变换。
4.设置二值化图像的阈值,分别为level=0.4,level=0.7参考程序如下。
%1.图像的点运算 %内容:对一灰度图像,通过选择不同的灰度变换函数s=T(r)实现图像的灰度变换范围线性扩展和非线性扩展,以及图像的灰度倒置和二值化 %实验方法: % 1.选择一幅图像lena.jpg,设置输入输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9。 % 2.设置非线性扩展函数的参数c=2。 % 3.采用灰度倒置变换函数s=255-r进行图像变换。 % 4.设置二值化图像的阈值,分别为level=0.4,level=0.7参考程序如下。 I=imread('lena.jpg'); figure; subplot(1,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]);%设置灰度变换的范围 subplot(1,3,2); imshow(J); title('线性扩展'); I1=double(I);%将图像转换为double类型 I2=I1/255;%归一化此图像 C=2; K=C*log(1+I2);%求图像的对数变换 subplot(1,3,3); imshow(K); title('非线性扩展'); M=255-I; figure; subplot(1,3,1); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4);%将此图像二值化,阈值为0.4 N2=im2bw(I,0.7);%将此图像二值化,阈值为0.7 subplot(1,3,2); imshow(N1); title('二值化阈值0.4'); subplot(1,3,3); imshow(N2); title('二值化阈值0.7');
2.图像的代数运算
内容:
采用正确的图像代数运算方法,分别实现图像图像叠加,混合图像的分离和图像的局部显示效果
1.选取两幅大小一样的灰度图像iena.jpg和rice.jpg,将两幅图像进行加法运算,结果如图。
I=imread('lena.jpg'); I=rgb2gray(I); J=imread('rice.png'); I=im2double(I);%将图像转换为double图像 J=im2double(J); K=I+0.3*J;%两幅图像相加 subplot(1,3,1); imshow(I); title('人物图'); subplot(1,3,2); imshow(J); title('背景图'); subplot(1,3,3); imshow(K); title('相加后的图'); imwrite(K,'lena.jpg');
2.选取一幅混合图像,如上述得到的lena.jpg,将混合图像与背景图像做减法运算,程序如下。
A=imread('lena.jpg');B=imread('rice.png'); C=A-0.3*B;%混合图减去背景图 subplot(1,3,1); imshow(A); title('混合图'); subplot(1,3,2); imshow(B); title('背景图'); subplot(1,3,3); imshow(C); title('分离后的图');
3.选取一幅尺寸为256*256像素的灰度图,如lena.jpg.设置掩模模板,对于需要保留下来的区域,掩模图像的值为1,而在被抑制掉的区域掩模图像的值置为0。
A=imread('lena.jpg'); A=rgb2gray(A); A=im2double(A); subplot(1,3,1); imshow(A); title('原图'); B=zeros(256,256); B(40:200,40:200)=1; subplot(1,3,2); imshow(B); K=A.*B; subplot(1,3,3) imshow(K); title('局部图');
3.图像的缩放
将图片比例放大至1.5倍、0,7倍,非比例放大至420*384、150*180像素
%将图片比例放大至1.5倍、0,7倍,非比例放大至420*384、150*180像素 A=imread('lena.jpg'); B1=imresize(A,1.5);%比例放大至1.5倍 subplot(1,4,1); imshow(B1); B2=imresize(A,[420 384]);%非比例放大至420*384像素 subplot(1,4,2); imshow(B2); C1=imresize(A,0.7);%比例放大至0.7倍 subplot(1,4,3); imshow(C1); C2=imresize(A,[150, 180]);%非比例放大至150*180像素 subplot(1,4,4); imshow(C2);
4.图像的旋转
设置图像旋转的角度分别为45和90度,采用图像旋转函数imrotate对图像进行旋转
%设置图像旋转的角度分别为45和90度,采用图像旋转函数imrotate对图像进行旋转 I=imread('lena.jpg'); J=imrotate(I,45);%图像采用逆时针旋转,默认采用最近邻插值法进行插值处理 K=imrotate(I,90);%默认旋转出界的部分不被截出 subplot(1,3,1); imshow(I); subplot(1,3,2); imshow(J); subplot(1,3,3); imshow(K);