数字图像处理和 MATLAB 实现 实验 3 - 基本图像操作
最编程
2024-04-09 14:58:27
...
国产数据库圈,为啥那么多水货?”
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);
推荐阅读
-
数字图像处理实验(四)|图像压缩与编码实验 {JPGE 编码、离散余弦变换 DCT、图像分块 dctmtx|blkproc} (含 matlab 实验代码和屏幕截图)
-
数字图像处理实验(七)|形态学图像处理{结构元素strel的生成、侵蚀操作imerode、膨胀操作imdilate、打开操作imopen、关闭操作imclose}(附实验代码和截图、汉字视觉表项目和总结)
-
数字图像处理实验(五)|图像修复 {反滤波和伪反滤波、维纳滤波 deconvwnr、大气湍流扰动建模、运动模糊处理 fspecial}(附 Matlab 实验代码和截图)
-
数字图像处理和 MATLAB 实现 实验 3 - 基本图像操作