实验一 数字图像基本操作及基本运算

实验一 数字图像基本操作及基本运算

  • 实验目的
  • 实验内容
  • 实验步骤
  • 实验报告
    • 实验步骤1和2
    • 实验步骤3
    • 实验步骤4.1
    • 实验步骤4.2
    • 实验步骤4.3

实验目的

1、掌握读、写图像的基本方法。
2、掌握 MATLAB 语言中图像数据与信息的读取方法。
3、掌握数字图像点运算方法。
4、掌握数字图像的代数运算与几何运算方法。


实验内容

使用 MATLAB 实现对数字图像的读取、显示、存储等操作,编写对数字图像进行点运算、直方图显示以及几何运算的程序,并分析图像的各种运算的作用。


实验步骤

1、熟悉 Matlab 语言中对图像数据读取,显示等基本函数:imread、imwrite、subplot、 figure、imshow、rgb2gray

  • 使用 imread 函数读取 lena.jpg 图像文件,观察一下图像数据,了解一下数字图像在 MATLAB 中的处理就是处理一个矩阵。
  • 将这个图像用 imshow 函数显示出来,尝试将图像的值减小 50,使用 figure 函数创建一个新的窗口,再将新的图像显示出来,观察图像颜色的变化。
  • 使用 rgb2gray 函数将 lena.jpg 转换成灰度图像,记为变量 I_gray,并使用 imwrite 函数将灰度图像保存为‘lena_gray.jpg’

2、实现数字图像的线性运算、幂次变换

  • 对灰度图像 I_gray 进行线性变换,分别使用 s=1.2r+1 和 s=0.3r+1 作为变换函数得到 变换后的图像,使用 subplot 以及 imshow 同时显示原图像以及变换后的图像,观察图像 灰度值的变化。
  • 对灰度图像 I_gray 进行幂次变换,分别使用 s=r^1.05和 s=r^0.8作为变换函数得到变换后的图像,使用 subplot 以及 imshow 同时显示原图像以及变换后的图像,观察图像灰度值的变化。(注:MATLAB 中不能对 uint8 类型的数据计算非整数次幂,因此在进行幂次变换前需先使用 double 函数将数据类型转换为双精度类型,变换后再使用uint8函数转换为整数类型进行显示)。

3、绘制图像的灰度直方图 使用 imhist 函数绘制 I_gray 图像的灰度直方图,灰度级数目指定为 128,并使用 title 函数将直方图的标题命名为“lena 灰度直方图”。

4、实现数字图像的缩放、旋转、转置变换

  • 使用 imresize 函数将 I_gray 图像的空间分辨率缩小为原来的 1/4,即长宽各缩小为 原来的 0.5 倍,并显示缩小后的图像。
  • 使用 imrotate 函数将 I_gray 图像沿逆时针方向旋转 30 度,并显示旋转后的图像。
  • 将 I_gray 图像进行转置,并显示转置后的图像。(注:对图像进行转置只需将表示图 像的矩阵进行转置操作即可。)

实验报告

按照实验内容完成各步骤,给出每个步骤的 MATLAB 程序语句以及结果截图。

实验步骤1和2

clear all
clc
close all

%1.1 imread实现‘lena.jpg'文件的读取
scr = imread('lena.jpg');
figure(1);
subplot(3,3,1);
imshow(scr);

%1.2将图像的值减少50
scr_brighter = scr-50;
subplot(3,3,2);
imshow(scr_brighter);

%1.3 把图像转换成灰度图
scr_gray = rgb2gray(scr);
subplot(3,3,3);
imshow(scr_gray);

%2.1 对图像进行线性变换
scr_gray_t1 = scr_gray*1.2+1;
subplot(3,3,4);
imshow(scr_gray_t1);

scr_gray_t2 = scr_gray*0.3+1;
subplot(3,3,5);
imshow(scr_gray_t2);

%2.2 对图像进行幂次变化
%变化前要将数据类型用double()变成双精度型
%变化后要变成uint8型,不然无法显示
scr_gray_copy = double(scr_gray);
scr_gray_t3 = uint8(scr_gray_copy.^1.05);
subplot(3,3,6);
imshow(scr_gray_t3);

scr_gray_t4 = uint8(scr_gray_copy.^0.8);
subplot(3,3,7);
imshow(scr_gray_t4);

效果:实验一 数字图像基本操作及基本运算_第1张图片

实验步骤3

clear all
clc
close all

scr = imread('lena.jpg');

% rgb2gray()将图像转成灰度图
scr_gray = rgb2gray(scr);
imhist(scr_gray,128);title('lena 灰度直方图');

效果:实验一 数字图像基本操作及基本运算_第2张图片

实验步骤4.1

clear all
clc
close all

scr = imread('lena.jpg');

scr_gray = rgb2gray(scr);
figure,imshow(scr_gray);
scr_gray_resize = imresize(scr_gray,0.5);
figure,imshow(scr_gray_resize);

效果:实验一 数字图像基本操作及基本运算_第3张图片

实验步骤4.2

clear all
clc
close all

scr = imread('lena.jpg');

scr_gray = rgb2gray(scr);
figure,imshow(scr_gray);
scr_gray_rotation = imrotate(scr_gray,30);
figure,imshow(scr_gray_rotation);

实验一 数字图像基本操作及基本运算_第4张图片

实验步骤4.3

clear all
clc
close all

scr = imread('lena.jpg');

scr_gray = rgb2gray(scr);
figure,imshow(scr_gray);
scr_gray_transposition = scr_gray';
figure,imshow(scr_gray_transposition);

效果:实验一 数字图像基本操作及基本运算_第5张图片

你可能感兴趣的:(数字图像处理MATLAB实现,matlab,计算机视觉)