MATLAB图像处理分析基础(一)

一、引言

      MATLAB软件得到许多数字图像处理学生、老师和科研工作者的喜爱,成为数字图像处理领域不可或缺的工具之一,其与其他软件相比有以下诸多显著优点。首先,MATLAB 拥有强大的内置函数库,涵盖了图像读取、显示、处理及分析的全方位功能,极大简化了编程工作,提高了开发效率。其次,其强大的矩阵运算能力为图像数据的批量处理提供了坚实基础,使得复杂的图像处理算法得以快速实现与优化。再者,MATLAB 提供了丰富的可视化工具,能够直观地展示图像处理前后的对比效果,便于研究人员进行算法调试和结果分析。此外,MATLAB 的易用性和灵活性使得即便是非专业编程人员也能快速上手,进行图像处理的探索和实践。但对于新学习MATLAB软件的同学,在进行数字图像处理和分析时对一些基本命令的综合运用还有一些问题,下面给出一个简单示例把图像处理分析中中常用的一些基本函数(图像读取、图像信息查看、显示、保存、直方图显示、图像工具箱、对比度、均值、最大值、最小值、标准差等)进行编程讲解。

二、程序源代码

clear all;        %清除所有变量
close all;        %关闭图窗
imtool close all; %关闭imtool窗口
clc;
I=imread('rice.png');%读入灰度图像
whos I;          %列出工作区中的变量及大小和类型,数据类型为无符号的八位整型(uint8)
imfinfo('rice.png')  %查看图像信息
[m,n,ndim]=size(I);%获取图像矩阵的行列数和维度  256行256列  维度为1
imshow(I);%在图窗中显示灰度图像
figure,imshow(I,[]);%imshow 使用 [min(I(:)) max(I(:))] 作为显示范围。imshow 将 I 中的最小值显示为黑色,将最大值显示为白色。
%续上---其它灰度值在40(黑,0)和204(白,255)进行线性差值并显示;通常会增加灰度图像对比度
figure,imhist(I);%显示灰度直方图,由直方图分析可知其有多峰(3个峰),简单阈值分割不能获得较好分割效果
I2=histeq(I);
figure,imshow(I2);
imwrite(I2,'e:\riceMod.jpg')
imtool(I);%打开图像工具箱,可以显示图像并进行图像的一般处理
Imax=max(I(:));%求图像的灰度最大值,最大灰度值为204,也可以通过max(max(I))求得其图像最大灰度值
Imin=min(I(:));%求图像的灰度最小值,最小灰度值为40,也可以通过min(min(I))求得其图像最大灰度值
Icontrast=(double(Imax)-double(Imin))/(double(Imax)+double(Imin));%计算Michelson对比度 注意数据类型转换
Imean2=mean2(I);%求图像的灰度平均值
Istd2=std2(I);%通过std2函数求图像灰度的标准差
%%方差--统计学采用平均离均差平方和来描述变量的变异程度,有关公式详见百度百科
%%标准差--标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。
t=double(I(:));  %定义一个中间变量
Ivar=var(t);   %计算图像的方差
IvarStd=sqrt(var(t)); %通过var函数求图像灰度的标准差
%%下面我们也可以通过公式计算图像灰度的标准差
meanValue=mean(I(:));   %通过mean计算灰度图像的均值
sum=0;
t2=double(I(:));%数据类型转换
for i=1:m*n
    sum=(t2(i,1)-meanValue).^2+sum;
end
Ivariance=sqrt(sum/(m*n-1));   %通过数学公式计算其图像灰度标准差
figure,
subplot(2,2,1),imshow(I),title('imshow(I)-显示图像');
subplot(2,2,2),imshow(I,[]),title('imshow(I,[])-显示图像');
subplot(2,2,3),imhist(I),title('显示灰度直方图');
subplot(2,2,4),imhist(I2),title('直方图均衡化图像');
format short
fprintf('图像的均值是: %.3f\n', Imean2);  %格式化屏幕输出,保留小数点后3位
fprintf('图像的最大值和最小值分别是: %d %d\n', Imax,Imin);
fprintf('图像的对比度(Michelson对比度)是: %.3f\n', Icontrast);
fprintf('图像的标准差是: %.3f\n', IvarStd);

注:本程序在MATLAB 2018 b调试通过。

三、主要运行结果

四、原始图像

  如果大家觉得本文对大家学习和研究有帮助,请点赞、收藏,谢谢大家!

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

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

相关文章

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(九)-无人机区域地面探测与避让(DAA)

引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everything)服务的支持。 3GPP TS 23.256 技术规范: 【免费】3GPPTS23.256技术报告-无人机系…

星火模型大体验简单实现一个LLM Chat平台

星火文档 利用axios封装 星火模型 API 请求 为了管理好的key,需要把对应的环境放置env.json文件中。 源码 const axios = require(axios); const ENV = require(../env.json); /*** * @param {*} messages 数组* @returns */ function request(messages) {return new Pro…

Unity UI 开发:代码与示例全解析

在 Unity 游戏开发中,用户界面(UI)的设计和实现是至关重要的一部分。一个直观、美观且功能完善的 UI 能够极大地提升玩家的游戏体验。本文将为您介绍一些 Unity UI 相关的代码和示例,帮助您更好地掌握 UI 开发。 一、创建基本 UI…

《昇思 25 天学习打卡营第 14 天 | 基于MindSpore的红酒分类实验 》

《昇思 25 天学习打卡营第 14 天 | 基于MindSpore的红酒分类实验 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 使用MindSpore实现K近邻(KNN)红酒聚类 实验目的和KNN算法概述 本次实验的…

gfsk调制相对于FSK调制优点

GFSK调制相对于FSK调制主要有以下优点: 抗噪声性能:GFSK调制采用高斯滤波器,这使得其抗噪声性能较好。在同样的信噪比下,GFSK调制能够实现更高的误码率性能。 频带利用率:GFSK调制的频带利用率相对较高。由于其带外衰…

ESP8266模块(2)

实例1 查看附近的WiFi 步骤1:进入AT指令模式 使用USB转串口适配器将ESP8266模块连接到电脑。打开串口终端软件,并设置正确的串口和波特率(通常为115200)。输入以下命令并按回车确认: AT如果模块响应OK,…

微信小程序:自定义 tabBar 效果

自定义 tabBar 效果 自定义 tabBar 在 app.json 中的 tabBar 里设置 custom 为 true 就可以关闭原生 tabBar。 开启自定义 tabBar 原生的 tabBar 内容不删除,兼容低版本。 {// 注册vant组件"usingComponents": {"van-tabbar": "vant/weapp…

【计算机网络】0 课程主要内容(自顶向下方法,中科大郑烇、杨坚)(待)

1 教学目标 掌握计算机网络 基本概念 工作原理 常用技术 为将来学习、应用和研究计算机网络打下坚实基础 2 课程主要内容 1 计算机网络和互联网2 应用层3 传输层4 网络层:数据平面5 网络层:控制平面6 数据链路层和局域网7 网络安全8 无线和移动网络9 多…

构建gitlab远端服务器(check->build->test->deploy)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言构建gitlab远端服务器一、步骤一:搭建gitlab的运行服务器【运维】1. 第一步:硬件服务器准备工作(1)选择合适的硬件和操作系统linux(2)安装必…

Learning vtkjs之WarpScalar

过滤器 WarpScalar 介绍 先看一个官方的一句话介绍: vtkWarpScalar - deform geometry with scalar data vtkWarpScalar - 使用标量数据变形几何体 详细介绍 vtkWarpScalar is a filter that modifies point coordinates by moving points along point normals by…

Linux服务器安装nginx,nginx配置详解。

前置 一台linux服务器。nginx安装包(地址:NginxDownload)ssh连接工具:putty,Tssh等推荐使用tssh或者服务器云平台自带的 部署 通过ssh工具连接到服务器,su进入root账户,先更新三方库。 更新三方库 Cen…

spss数据分析是什么 怎么下载spss

什么是SPSS SPSS是社会统计科学软件包的简称, 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出,于2009年被IBM收购,主要运用于各领域数据的管理和统计分析。作为世界社会科学数据分析的标准,SPSS操作操作…

【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景

数据库操作新选择:从异步操作到连接管理,掌握Rust语言数据库客户端库的全貌 前言 在现代软件开发中,与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言,拥有丰富的生态系统来支持各种数据库操作。…

C++合作开发项目:美术馆1.0

快乐星空MakerZINCFFO 合作入口&#xff1a;CM工作室 效果图&#xff1a; 代码&#xff1a; &#xff08;还有几个音乐&#xff01;&#xff09; main.cpp #include <bits/stdc.h> #include <windows.h> #include <conio.h> #include <time.h> #in…

Codeforces 1733D 891C Envy+1681F Unique Occurrences(可撤销并查集)

891C Envy 题意 给定一张图以及q个查询&#xff0c;输出每个查询中的边是否全部会出现在某个最小生成树里。 思路 首先如果只考虑一次查询&#xff0c;这一次查询只有一条边&#xff0c;那么只要用kruskal算法处理完所有边权小于这条边的边&#xff0c;此时如果这条边的两点已…

Math Reference Notes: 数学思想和方法

文章目录 1. 数学思想1.1 数形结合思想1.2 转化思想1.3 分类讨论思想1.4 整体思想 2. 数学方法2.1 配方法2.2 因式分解法2.3 待定系数法2.4 换元法2.5 构造法2.6 等积法2.7 反证法2.8 判别式法 1. 数学思想 1.1 数形结合思想 定义&#xff1a;将数与形&#xff08;代数与几何…

linux 安装使用php环境, 以及常用操作介绍

php的源码编译安装,属实是太麻烦太痛苦了&#xff1b;于是我们选择放弃这种方式&#xff0c;采用linux自带的包管理器来安装。 本文使用的linux发行版本是centOs, 安装php环境的指令如下 yum install php php-fpm 如果你的YUM仓库中没有你需要的版本&#xff0c;你可能需要添…

《数据结构》--顺序表

C语言语法基础到数据结构与算法&#xff0c;前面已经掌握并具备了扎实的C语言基础&#xff0c;为什么要学习数据结构课程&#xff1f;--我们学完本章就可以实践一个&#xff1a;通讯录项目 简单了解过后&#xff0c;通讯录具备增加、删除、修改、查找联系人等操作。要想实现通…

Python学习笔记—100页Opencv详细讲解教程

目录 1 创建和显示窗口... - 4 - 2 加载显示图片... - 6 - 3 保存图片... - 7 - 4 视频采集... - 8 - 5视频录制... - 11 - 6 控制鼠标... - 12 - 7 TrackBar 控件... - 14 - 8.RGB和BGR颜色空间... - 16 - 9.HSV和HSL和YUV.. - 17 - 10 颜色空间的转化... - 18 - …

数据结构——栈的实现(java实现)与相应的oj题

文章目录 一 栈栈的概念:栈的实现&#xff1a;栈的数组实现默认构造方法压栈获取栈元素的个数出栈获取栈顶元素判断当前栈是否为空 java提供的Stack类Stack实现的接口&#xff1a; LinkedList也可以当Stack使用虚拟机栈&#xff0c;栈帧&#xff0c;栈的三个概念 二 栈的一些算…