数字图像处理实验——数字图像处理初步

本文详细介绍了在MATLAB环境中进行图像处理的基本操作,包括使用imread读取图像,imshow显示图像,imwrite存储图像,以及进行图像的加、减、乘、除等算术运算。此外,还讨论了图像的线性运算,如图像的缩放,并对比了imshow的不同使用方式。
摘要由CSDN通过智能技术生成

一、实验目的与要求
1.熟悉及掌握在MATLAB中能够处理哪些格式的图像;
2.熟练掌握在MATLAB中如何读取图像及图像的属性信息(大小、颜色、亮度(灰度)、宽度、高度等);
3.掌握如何在MATLAB中按照指定要求存储一副图像的方法;
4.了解图像的算术运算在数字图像中的初步应用,并体会其处理的过程和处理前后图像的变化;
二、实验内容及步骤
1.图像的读取,显示和存储,以及提取图像的基本信息:
(1)使用imread()函数读取一副图像,假设其名为lena.bmp,存入一个矩阵(或数组)中;
(2)利用whos命令提取该读入图像lena.bmp的基本信息;
在这里插入图片描述
(3)利用imshow()函数显示图像lena.bmp;
在这里插入图片描述

(4)利用imwrite()函数存储该图像,命名为lena2.jpg
在这里插入图片描述

(5)联合使用figure, subplot(), imshow()函数将lena.bmp和lenaRGB.bmp显示出来,观察两幅图像的质量。
在这里插入图片描述
lena.bmp为灰度图,单通道;lenaRGB.bmp为RGB图像,三通道

clc;clear;close all; 
img1 = imread("lena.bmp");
img2 = imread("lenaRGB.bmp");
whos img1;
imshow(img1)
title('lena.bmp');
figure;
subplot(121)
imshow(img1)
title('lena.bmp')
subplot(122)
imshow(img2)
title('lenaRGB.bmp');

2.图像间的代数运算:
(1)使用imread()函数读入图像:lenaRGB.bmp和pout.jpg
(2)进行图像的加法运算(自己写代码);
(3)调用imadd函数进行两幅图像的相加;
(4)比较第二步和第三步的结果。
(5)重复以上步骤,进行图像的相减,相乘相除运算(分别与直接使用图像处理工具箱中的代数运算函数进行结果比较。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
进行图像操作前要将图片变为相同尺寸,使用MATLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。
源码:

%加法
clc;clear;close all; 
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = img1+img2
img4 = imadd(img1,img2)
figure;
subplot(141)
imshow(img1)
title('lena原始图像')
subplot(142)
imshow(img2)
title('pout原始图像')
subplot(143)
imshow(img3)
title('相加后图像')
subplot(144)
imshow(img4)
title('imadd后图像');
	%减法
clc;clear;close all; 
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = img1-img2
img4 = imsubtract(img1,img2)
figure;
subplot(141)
imshow(img1)
title('lena原始图像')
subplot(142)
imshow(img2)
title('pout原始图像')
subplot(143)
imshow(img3)
title('相减后图像')
subplot(144)
imshow(img4)
title('imsubtract后图像');
	%乘法
clc;clear;close all; 
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = uint16(img1).*uint16(img2)
img4 = immultiply(uint16(img1),uint16(img2))
figure;
subplot(141)
imshow(img1)
title('lena原始图像')
subplot(142)
imshow(img2)
title('pout原始图像')
subplot(143)
imshow(img3)
title('相乘后图像')
subplot(144)
imshow(img4)
title('immultiply后图像');
	%除法
clc;clear;close all; 
img1 = imread("lenaRGB.bmp");
img1 = imresize(img1,[268 216])
img2 = imread("pout.jpg");
img3 = double(img1)./double(img2)
img4 = imdivide(double(img1),double(img2))
figure;
subplot(141)
imshow(img1)
title('lena原始图像')
subplot(142)
imshow(img2)
title('pout原始图像')
subplot(143)
imshow(img3)
title('相除后图像')
subplot(144)
imshow(img4)
title('immultiply后图像');
  1. 图像的线性运算:
    (1)使用imread()函数读入图像:cameraman.bmp
    (2)进行图像的缩放运算( f1=g∗1.2 )以及线性运算
    (3)联合使用figure, subplot(), imshow()函数显示结果。
    在这里插入图片描述
  2. f1=g∗1.2 等价于f=immultiply(g,1.2)
  3. imshow(I) 以及imshow(I,[])的区别:matlab的图像经过数值计算之后会将数据类型转换为double类型的,double类型数据在imshow函数里默认为0~1范围内,数值超过1的重置为白色,一般显示出来的是黑白图像。imshow(I,[ ])的意思相当于imshow(I,[min(I(😃) max(I(😃)])I中数值最大值与最小值分别为255和0。
clc;clear;close all; 
I = imread("cameraman.bmp");
I1=1.2*I;
subplot(1,2,1);imshow(I);title('原始图像');
subplot(1,2,2);imshow(I1);title('线性运算图像');

clc;clear;close all; 
img1 = imread("cameraman.bmp");
img2 = immultiply(img1,1.2)
figure;
subplot(121)
imshow(img1)
title('cameraman原始图像')
subplot(122)
imshow(img2)
title('cameraman缩放运算图像');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值