数字图像处理实验(一)|图像的基本操作和基本统计指标计算{图像读取imread、图像写入imwrite、图像显示imshow、图像的相关统计量|均值、方差、大小尺寸裁减旋转|}(附实验代码和实验截图)

简介: 数字图像处理实验(一)|图像的基本操作和基本统计指标计算{图像读取imread、图像写入imwrite、图像显示imshow、图像的相关统计量|均值、方差、大小尺寸裁减旋转|}(附实验代码和实验截图)

一、实验目的


(1)熟悉MATLAB图像处理工具箱的基本使用方法。在掌握MATLAB基本操作的基础上,依靠图像处理工具箱验证和设计图像处理算法。

(2)了解计算图像的统计指标的方法及其在图像处理中的意义。

(3)了解图像的几何操作,如改变图像大小、剪切、旋转等。


二、实验主要仪器设备


(1)台式计算机或笔记本电脑。

(2) MATLAB (安装了图像处理工具箱,即Image Processing Toolbox (IPT))。

(3)典型的灰度、彩色图像文件。


三、实验原理


(1)将一幅图像视为一个二维矩阵。


(2)利用MATLAB图像处理工具箱读、写和显示图像文件。


①调用imread函数将图像文件读入图像数组(矩阵)。

其基本格式为: A= imread(filename, fmt);

例如:A=imread(‘lena’,’jpg’);

常用简化格式为:

例如:A= imread(‘lena.jpg’);

其中,A为二维数组,filename 为文件名,fmt 为图像文件格式的扩展名。


②调用imwrite函数将图像矩阵写入图像文件。

其基本格式为: imwrite(A,filename,fmt);

例如:imwrite(A,‘test_image’,’jpg’);

常用简化格式为:

例如:imwrite(A,‘test_image.jpg’);

③调用imshow函数显示图像。

例如:imshow(‘tire.tif’);

其基本格式为: imshow(I,N)

其中,I为图像矩阵,N为显示的灰度级数,默认时为256。


(3)计算图像的有关统计参数。


图像的统计特征主要有:

①图像大小:

size(I);返回值为图像的行与列

numel(I):返回值为图像像素总个数(矩阵元素个数)

②图像的灰度平均值(均值):


0a2653c851af460fa595bd959398a8f1.png


即一幅图像的平均灰度(亮度)。

调用函数:mean2(I)

③图像的灰度标准差(standard deviation):

0eacb84100b54626af849e6b562bf92a.png

调用函数:std2(I)

④图像的方差(variance)

求解图像方差有两种方法:

第一种:

调用函数:var;

注意:var函数是对一维数组求方差,因此对图像求方差需要把图像对应的二维矩阵转换为一维。例如:V=var(I(😃);

第二种:

先求标准差,然后进行平方,即:p=std2(I);V=p^2。

⑤相关系数(correlation coefficient)

判断两幅图之间的相关程度。

调用函数:corr2(A,B);

值越大,说明两幅图像的相关性越高,反之亦然。

⑥获取图像信息

调用函数:imfinfo(FILENAME);


(4)改变图像尺寸、旋转图像、裁剪图像


改变尺寸函数:imresize(I,[m n]); %用m,n指定新尺寸(m行,n列)

imresize(I,n);% n为倍数

旋转图像函数:imrotate(I,angle); % angle为角度

裁剪函数图像:imcrop(I,[a b c d]);% a,b为新图像原点在原图像中的坐标,c,d为新图像的宽度和高度(长或宽)

练习1:A=[1 2 3 4 5 6;

7 6 5 4 3 2;

5 6 7 8 9 0;

4 3 2 5 7 6;

6 5 4 3 2 1;]

B=imcrop(A,[2 2 3 2]);


四、实验内容


(1)用imwrite写入图像


练习:

A=[1 1 1;0 0 0;1 0 1];%创建矩阵

imwrite(A,‘wan.bmp’);%将矩阵写入当前工作空间

B=imread(‘wan.bmp’);%读取

imshow(B);

实验题:

生成单位矩阵,将其写入当前路径并显示。

报告总结:

写出此矩阵被写入的位置(路径);图像的类型(扩展名);A的数据类型和B的数据类型。


(2) 用imread读入一幅图像(自选),并通过imfinfo函数获取图像文件的基本信息,将基本信息用语言文字进行描述并写在报告册(帮助理解)。


(3)读取安装文件中的‘onion.png’,首先将其转换为灰度图片,然后利用“像素和统计处理”函数分别获取:


①灰度图像的大小、总像素个数、均值和方差。

②原彩色图像的大小、总像素个数、总均值及各颜色分量的均值。

各颜色分量均值求解参考如下:

R=mean2(I(:,:,1)) %红色的均值

G=mean2(I(:,:,2)) %蓝色的均值

B=mean2(I(:,:,3)) %绿色的均值

分析总结(体现在报告中):

原彩色图像和灰度图像的大小、总像素个数之间的关系;

行数和列数相乘是灰度图总像素的大小,而原彩色图是行数和列数相乘的三倍

彩色图像的总均值和三个颜色分量均值存在什么关系:

彩色图像三个颜色分量均值相加是总均值的三倍

根据三个颜色分量的均值分析此图中颜色的配比大概情概况。

绿色占比最高,蓝色其次,最少的是红色


(4)读取一幅图像并对其进行改变图像尺寸、旋转图像不同角度以及裁剪的操作。


①对图像分别改为原图像的2倍和0.5倍;

②对图像分别按照顺时针和逆时针旋转不同的角度;

③对实验原理中的练习1进行运行,观察结果并给出结论(该函数在使用时的注意事项)。

④对本题读出的图像进行大小的裁剪(参数自己设置)并说明新图像的原点在原图像的坐标以及新图像的行与列。


六、实验报告要求


(1)列出上述图像处理的程序,展示处理效果图。

(2)按要求写出相应总结。

(3)撰写心得和体会(本实验中遇到的问题及解决方案,实验心得)。


七、预习要求


(1)了解MATLAB图像处理工具箱的基本功能。

(2)了解图像基本指标特征的含义。


八、实验代码展示


%% (2)
A  = imread('onion.png');
imshow(A);
% imwrite
imwrite(A,'1.jpg')
B = imread('1.jpg');
% imshow
imshow(A)
%% (3)
% 获取图像信息
disp('获取图像信息')
imfinfo('1.jpg')
%% (4)
B = rgb2gray(A);
% 大小
fprintf('原_size_行 = %d\n',size(A,1))
fprintf('原_size_列 = %d\n',size(A,2))
fprintf('原_总像素 = %d\n',numel(A))
fprintf('灰_size_行 = %d\n',size(B,1))
fprintf('灰_size_列 = %d\n',size(B,2))
fprintf('灰_总像素 = %d\n',numel(B))
% 平均值
fprintf('灰_平均值 = %d\n',mean2(B))
fprintf('R_平均值 = %d\n',mean2(A(:,:,1)))
fprintf('G_平均值 = %d\n',mean2(A(:,:,2)))
fprintf('B_平均值 = %d\n',mean2(A(:,:,3)))
fprintf('总_RGB_平均值 = %d\n',mean2(A))
C = im2double(B);
fprintf('灰_方差 = %d\n',var(C(:)))
%% (4)
figure
imshow(imresize(A,0.5))
figure
imshow(imresize(A,2))
figure
subplot(1,2,1)
S = imrotate(A,90);
imshow(S)
subplot(1,2,2)
S = imrotate(A,-90);
imshow(S)
% imcrop(I,[a b c d]);% a,b为新图像原点在原图像中的坐标,c,d为新图像的宽度和高度(长或宽)
figure
S = imcrop(A,[100 100 100 100]);
imshow(S)
%%
I=imread('onion.png');
F=fft2(I);
F_shift=fftshift(F);
figure;
   subplot(2,3,2),imshow(I);
   subplot(2,3,4),imshow(F);
   subplot(2,3,5),imshow(F_shift);
   subplot(2,3,6),imshow(log(abs(F)+1),[0,10]);
 I=imread('C:\Users\huawei\Desktop\lena.jpg');
F=fft2(I);
F_shift=fftshift(F);
F_ishiet=ifftshift(F_shift);
F_ifft=ifft2(F);
figure;
   subplot(2,4,2.5),imshow(I);
   subplot(2,4,5),imshow(F);
   subplot(2,4,6),imshow(F_shift);
   subplot(2,4,7),imshow(F_ishiet);
   subplot(2,4,8),imshow(F_ifft);


九、实验图像



1.

0a2653c851af460fa595bd959398a8f1.png

2.

0eacb84100b54626af849e6b562bf92a.png2d65d23f6d4748949b924e4057485923.png


3.

2e9b90b2ca334476abebe75bafe6eeaa.png4cebaac233b3433da32a72337a77fc60.png6de278e6d6694ce5bb08e7e842b7e74b.png


相关文章
|
机器学习/深度学习 传感器 算法
【交互式阈值二进制图像】采用彩色或单色图像通过交互/手动方式阈值单色图像或彩色图像的单个色带研究(Matlab代码实现)
【交互式阈值二进制图像】采用彩色或单色图像通过交互/手动方式阈值单色图像或彩色图像的单个色带研究(Matlab代码实现)
|
资源调度 算法 计算机视觉
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
914 0
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
|
算法 计算机视觉
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
882 0
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
|
5月前
|
计算机视觉
OpenCV图像像素值统计
OpenCV图像像素值统计
|
6月前
|
算法 图形学
【计算机图形学】实验三 用Cohen-Sutherland裁剪算法实现直线段裁剪
【计算机图形学】实验三 用Cohen-Sutherland裁剪算法实现直线段裁剪
456 2
|
6月前
|
传感器 人工智能 搜索推荐
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
102 0
用 ChatGPT 4.0 实现获取并保存 RealSense 相机的深度图像,处理colorizer,histogram equalization配置,解决深度图像颜色分布异常问题
|
6月前
|
算法 计算机视觉
OpenCV(四十四):亚像素级别角点位置优化
OpenCV(四十四):亚像素级别角点位置优化
183 0
|
机器学习/深度学习 传感器 算法
【视频处理】通过调用图像来重建新影片及计算颜色通道的平均灰度值,并检测帧与前一帧之间的差异(Matlab代码实现)
【视频处理】通过调用图像来重建新影片及计算颜色通道的平均灰度值,并检测帧与前一帧之间的差异(Matlab代码实现)
|
机器学习/深度学习 人工智能 文字识别
OpenCV-字典法实现数字识别(尺寸归一化+图像差值)
OpenCV-字典法实现数字识别(尺寸归一化+图像差值)
106 0
|
传感器 算法 计算机视觉
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
357 0
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)