Fork me on GitHub

数字图像处理及MATLAB实现实验三——图像基本运算

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*384150*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);

 

 

posted @ 2019-04-18 09:40  🍀🍀🍀  阅读(5797)  评论(0编辑  收藏  举报
🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀