数字图像处理实验(一)|图像的基本操作和基本统计指标计算

news2024/9/24 3:20:31

文章目录

  • 一、实验目的
  • 二、实验主要仪器设备
  • 三、实验原理
    • (1)将一幅图像视为一个二维矩阵。
    • (2)利用MATLAB图像处理工具箱读、写和显示图像文件。
    • (3)计算图像的有关统计参数。
    • (4)改变图像尺寸、旋转图像、裁剪图像
  • 四、实验内容
    • (1)用imwrite写入图像
    • (2) 用imread读入一幅图像(自选),并通过imfinfo函数获取图像文件的基本信息,将基本信息用语言文字进行描述并写在报告册(帮助理解)。
    • (3)读取安装文件中的‘onion.png’,首先将其转换为灰度图片,然后利用“像素和统计处理”函数分别获取:
    • (4)读取一幅图像并对其进行改变图像尺寸、旋转图像不同角度以及裁剪的操作。
  • 六、实验报告要求
  • 七、预习要求
  • 八、实验代码展示
  • 九、实验图像

一、实验目的

(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):返回值为图像像素总个数(矩阵元素个数)
②图像的灰度平均值(均值):
在这里插入图片描述

即一幅图像的平均灰度(亮度)。
调用函数:mean2(I)
③图像的灰度标准差(standard deviation):
在这里插入图片描述
调用函数: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);

九、实验图像

在这里插入图片描述
2.
在这里插入图片描述
在这里插入图片描述
3.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv c++ 图像形态学操作

1、图像的形态学操作 包括图像的腐蚀、膨胀、开、闭、形态学梯度、顶帽、黑帽、分支主题、结构元素等操作。 具体概念参考:(41条消息) 图像处理-形态学处理_Gooddz的博客-CSDN博客_图像处理 形态学 1.1、膨胀 用33的核去扫描二值图像,当核与图像中的前景…

[附源码]JAVA毕业设计仟侬堂茶具网站(系统+LW)

[附源码]JAVA毕业设计仟侬堂茶具网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&a…

LeetCode中等题之查找和替换模式

题目 你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。 如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。 &#xff0…

Git(第二篇)——Git的常见操作

Git(第二篇)——Git的常见操作 目录Git(第二篇)——Git的常见操作一、Git版本控制介绍组成结构图命令速查常用命令二、下载并安装GIT设置字体查询git三、码云上的操作码云配置环境注册账号登录码云创建仓库创建远程仓库(在码云官网…

通讯录管理系统

目录 1.系统需求 2.创建项目 3.菜单功能 4.退出功能 5.添加联系人 5.1设计联系人结构体、设计通讯录结构体 5.2main函数中创建通讯录 5.3封装添加联系人函数 5.4测试添加联系人 6.显示联系人 7.删除联系人 7.1封装检测联系人是否存在 7.2删除联系人,测试删除联…

当我们的执行 java -jar xxx.jar 的时候底层到底做了什么?

大家都知道我们常用的 SpringBoot 项目最终在线上运行的时候都是通过启动 java -jar xxx.jar 命令来运行的。 那你有没有想过一个问题,那就是当我们执行 java -jar 命令后,到底底层做了什么就启动了我们的 SpringBoot 应用呢? 或者说一个 S…

Redux使用详解(一) Redux的核心思想与基本使用

Redux 理解javascript纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念; 在react开发中纯函数是被多次提及的; 比如react中组件就被要求像是一个纯函数(为什么…

使用STM32F103C8T自制freejoy控制板

1. 软件准备 1.1 STM公司的官方工具: STM32 ST-LINK Utility 已经更名为 STM32CubeProgrammer STSW-LINK004 - STM32 ST-LINK utility (replaced by STM32CubeProgrammer) - STMicroelectronics 1.2 FreeJoyConfiguratorQt V1.7.1 这个是刷好固件后的配置、调…

D-025 DP硬件电路设计

DP硬件电路设计1 简介1.1 DP接口分类1.2 DP接口和HDMI接口的区别1.3 DP接口的优势2 硬件层3 接口定义4 原理图设计1 简介 Display是一种新型的标准化的数字式视频接口标准,其支持的功能与HDMI相似,但是其目标是作为HDMI的补充,而非取代。DP …

红队渗透靶场之SickOs1.1

靶场考察知识 shellshock漏洞 shellshock即unix系统下的bash shell的一个漏洞, Bash 4.3以及之前的版本在处理某些构造的环境变量时存在安全漏洞, 向环境变量值内的函数定义后添加多余的字符串会触发此漏洞, 攻击者可利用此漏洞改变或绕过环境限制,以执行任意的sh…

Notepad++ ,json 、xml 格式化插件安装不了 和 github 网站访问不了 最佳解决方案

文章目录1.背景:2. 解决方法:方法一:修改hosts方法二: 通过 Watt Toolkit 加速1.简介:2.安装步骤:1.背景: 最近notpad 安装 JSON 和 xml 格式化工具安装不上,发现插件的地址 github…

docker之数据卷(Data Volumes)dockerfile

这里写目录标题宿主机与容器之间的文件拷贝数据卷数据卷容器Dockerfile自定义centos,具备vim及ifconfig作用(体会学习Dockerfile的意义)自定义tomcat8(熟悉几乎所有的Dockerfile命令)宿主机与容器之间的文件拷贝 引言…

故障分析 | Greenplum 集群 standby 故障处理

作者:杨文 DBA,负责客户项目的需求与维护,没有擅长,会点数据库,不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。 本文来源:原创投稿 *爱可生开源社区出品,原创内容…

SM4分组密码算法

对称加密算法SM4SM4算法介绍一、SM4加密流程二、轮函数F1.合成置换T3.非线性变换τ2.线性变换L4.加密的结果总结SM4算法介绍 SM4.0于2013年3月被列为国家密码行业标准“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。2016年被列入国家标准…

blender assetBrowser 资产浏览器

文章目录简介.基础操作打开资产浏览器.标记资产.资产库位置设置与加载其他工程的资产库.为资产设置分类.设置资产的属性.根据类型筛选资产.标记材质为资产.标记天空盒材质为资产.标记动作为资产.简介. 1 类似于unity的预制体,可以直接从资产浏览器里拖出来 2 创建时…

什么是缓存架构,什么是后端分布式多级缓存架构,全文解析带你了解其中门道

文章目录浏览器缓存客户端缓存CDN缓存反向代理缓存本地缓存分布式缓存其他:缓存命中率缓存问题:缓存穿透缓存问题:缓存击穿缓存问题:缓存雪崩缓存问题:缓存一致性缓存的其他问题开篇01数据库缓存1.1.MySQL查询缓存1.2.…

CAS登录认证

CAS最基本的协议过程: 名词解释 Ticket Grangting Ticket(TGT) : TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后&#xff0c…

应用于供暖、供水管道等场景的一种智能控制阀

智能控制阀,顾名思义就是能够实现智能化控制功能的一种控制阀。它有什么用处呢? TSM-04V无线智能控制阀由锂亚电池供电、超长续航,具有无线远程配置功能,是一种高可靠性阀控设备。自带断码显示屏,可以查看设备的电量、…

在VScode中使用Jupyter Notebook的一些技巧

目录 一、VScode中Jupyter Notebook的优点 二、Cell命令模式目前支持的Jupyter Notebook快捷 三、Cell编辑模式下支持的Vscode快捷键(只描述与编辑相关的那些快捷键)​​​​​​​ 一、VScode中Jupyter Notebook的优点 1.写py代码和使用Notebook经常…

DBCO-SS-Mal,DBCO-SS-Maleimide,马来酰亚胺衍生物试剂特点分析

一、基础产品数据(Basic Product Data): CAS号:N/A 中文名:二苯并环辛炔-二硫键-马来酰亚胺 英文名:DBCO-SS-Maleimide,DBCO-SS-Mal二、详细产品数据(Detailed Product Data&#xf…