【MATLAB中的图像数据结构】
MATLAB中的图像数据结构
目录
- MATLAB中的图像数据结构
- 目标 :
- 知识点 :
- 1. 图像的存储方式 :
- 2. 图像的颜色空间 :
- 3. 图像的像素操作 :
- 示例代码 :
- 1. 读取和显示图像 :
- 2. 查看图像信息 :
- 3. 图像的缩放和裁剪 :
- 练习 :
- 1. 读取一张彩色图像,将其转换为灰度图并显示 :
- 2. 访问图像的某个像素点,修改其值并显示修改后的图像 :
- 3. 缩放图像并调整图像的大小 :
- 总结
目标 :
理解MATLAB中图像的基本数据结构,包括图像的存储方式、颜色空间、像素操作等。
知识点 :
1. 图像的存储方式 :
• MATLAB使用矩阵(Matrix)来存储图像。
• 灰度图 :二维矩阵,每个像素值表示亮度(0-255)。
• 彩色图 :三维矩阵,尺寸为 [高度 × 宽度 × 3],三个通道分别表示红(R)、绿(G)、蓝(B)。
• 索引图(Indexed Image) :使用颜色图(Color Map)存储颜色信息。
2. 图像的颜色空间 :
• 灰度图(Grayscale) :单通道,0-255。
• RGB图(True Color) :三通道,每个通道0-255。
• HSV图(Hue, Saturation, Value) :颜色空间的另一种表示方式。
• 索引图 :使用颜色图映射颜色。
3. 图像的像素操作 :
• 访问和修改像素值 :
• 使用矩阵索引访问像素值。
• 修改特定像素的值。
• 图像的缩放和裁剪 :
• 使用 imresize 缩放图像。
• 使用矩阵索引裁剪感兴趣区域。
示例代码 :
1. 读取和显示图像 :
matlab
% 读取图像
img = imread('peppers.png'); % 读取彩色图像
grayImg = rgb2gray(img); % 读取灰度图像
% 显示图像
figure;
subplot(1, 2, 1);
imshow(img);
title('Color Image');
subplot(1, 2, 2);
imshow(grayImg);
title('Grayscale Image');
代码解释:
1. 读取图像 :
• img = imread(‘peppers.png’):使用 imread 函数从指定路径读取名为 embeded.jpg 的彩色图像,并将其存储在变量 img 中。imread 函数默认读取彩色图像,返回一个三维数组(宽度 × 高度 × 3 通道)。
2. 读灰度图像 :
• grayImg = rgb2gray(img):使用grayImg转换图像文件,获取灰度版本。
3. 创建图形窗口 :
• figure;:创建一个新的图形窗口,用于显示图像。
4. 设置子图布局 :
• subplot(1, 2, 1);:将图形窗口分成 1 行 2 列,当前子图是第一个位置(左半部分)。
5. 显示彩色图像 :
• imshow(img);:在第一个子图中显示彩色图像 img。
• title(‘Color Image’);:为第一个子图添加标题“Color Image”。
6. 切换到第二个子图 :
• subplot(1, 2, 2);:切换到第二个子图位置(右半部分)。
7. 显示灰度图像 :
• imshow(grayImg);:在第二个子图中显示 grayImg。由于当前 grayImg 仍然是彩色图像,显示效果可能与预期不符。应确保 grayImg 是灰度图像。
• title(‘Grayscale Image’);:为第二个子图添加标题“Grayscale Image”。
运行结果:

2. 查看图像信息 :
matlab
% 查看图像大小和类型
size(img) % 彩色图像的大小
class(img) % 数据类型(uint8)
% 查看灰度图像的像素值
pixelValue = grayImg(100, 200); % 访问第100行、第200列的像素值
fprintf('Pixel value at (100, 200): %d\n', pixelValue);
代码解释:
1. 查看图像大小和类型 :
• size(img):返回图像 img 的尺寸,对于彩色图像,通常是一个三维数组,形式为 [高度, 宽度, 通道数]。例如,一张 512x512 的 RGB 图像会返回 [512 512 3]。
• class(img):显示图像的数据类型,通常是 uint8,表示每个像素值为 0-255 的无符号整数。
2. 查看灰度图像的像素值 :
• pixelValue = grayImg(100, 200):访问灰度图像 grayImg 中第 100 行、第 200 列的像素值。灰度图像的像素值范围为 0(黑色)到 255(白色)。
• fprintf(‘Pixel value at (100, 200): %d\n’, pixelValue):将像素值格式化输出,显示在命令窗口中。
运行结果:

3. 图像的缩放和裁剪 :
Matlab
% 图像缩放
scaledImg = imresize(img, 0.5); % 缩放到原尺寸的50%
figure;imshow(scaledImg);
title('Scaled Image');
% 图像裁剪
croppedImg = img(100:200, 150:250, :); % 裁剪感兴趣区域
figure;
imshow(croppedImg);
title('Cropped Image');
代码解释:
1. 图像缩放 :
• 使用 imresize 函数将图像 img 缩放到原尺寸的50%。
• imresize(img, 0.5) 中的 0.5 表示将图像的高度和宽度都缩小到原来的一半。
• 缩放后的图像存储在变量 scaledImg 中。
2. 图像裁剪:
• 使用索引从图像 img 中裁剪出一个感兴趣区域。
• img(100:200, 150:250, :) 中的 100:200 表示行的范围(从第100行到第200行),150:250 表示列的范围(从第150列到第250列),: 表示所有颜色通道。
• 裁剪后的图像存储在变量 croppedImg 中
运行结果:

练习 :
1. 读取一张彩色图像,将其转换为灰度图并显示 :
matlab
% 读取彩色图像
colorImg = imread('peppers.png');
% 转换为灰度图
grayImg = rgb2gray(colorImg);
% 显示结果
figure;
subplot(1, 2, 1);
imshow(colorImg);
title('Color Image');
subplot(1, 2, 2);
imshow(grayImg);
title('Grayscale Image');
运行结果:

2. 访问图像的某个像素点,修改其值并显示修改后的图像 :
matlab
% 读取图像
img = imread('peppers.png');
% 访问并修改像素值
img(100, 500, :) = [255, 0, 0]; % 将(100, 200)处的像素设置为红色
% 显示修改后的图像
figure; imshow(img); title('Modified Image');
代码解释:
1. 访问并修改像素值
img(100, 500, 😃 = [255, 0, 0]; % 将(100, 500)处的像素设置为红色
• img(100, 500, 😃 访问图像数组中第100行(垂直方向)、第500列(水平方向)的所有颜色通道。
• : 表示所有三个颜色通道(红、绿、蓝)。
• [255, 0, 0] 是一个三元素数组,分别对应红色、绿色和蓝色通道的值。255表示最大值,0表示最小值。
• 这行代码将指定位置的像素颜色设置为红色,因为红色通道设为255,绿色和蓝色通道设为0。
运行结果:

3. 缩放图像并调整图像的大小 :
matlab
% 读取图像
img = imread('peppers.png');
% 缩放到原尺寸的75%
scaledImg = imresize(img, 0.75);
% 调整图像大小为 400x600
resizedImg = imresize(img, [400, 600]);
% 显示结果
figure;
subplot(1, 3, 1);
imshow(img);
title('Original Image');
subplot(1, 3, 2);
imshow(scaledImg);
title('Scaled Image (75%)');
subplot(1, 3, 3);
imshow(resizedImg);
title('Resized Image (400x600)');
代码解释:
1.缩放到原尺寸的75%
scaledImg = imresize(img, 0.75);
• 函数 :imresize
• 功能 :调整图像的大小。
• 参数 :
○ img:输入图像。
○ 0.75:缩放比例,表示将图像的高度和宽度都缩小到原来的75%。
• 返回值 :scaledImg 是缩放后的图像,同样是一个三维数组。
2. 调整图像大小为400x600
resizedImg = imresize(img, [400, 600]);
• 函数 :imresize
• 功能 :调整图像的大小。
• 参数 :
○ img:输入图像。
○ [400, 600]:目标图像的尺寸,分别是高度和宽度。
• 返回值 :resizedImg 是调整后的图像,同样是一个三维数组。
运行结果:

总结
通过今天的学习,你已经掌握了MATLAB中图像的基本数据结构,包括图像的存储方式、颜色空间以及像素操作。接下来,你可以继续学习图像的读写与基本操作,进一步深入理解MATLAB的图像处理功能。
相关文章:
【MATLAB中的图像数据结构】
MATLAB中的图像数据结构 目录 MATLAB中的图像数据结构目标 :知识点 :1. 图像的存储方式 :2. 图像的颜色空间 :3. 图像的像素操作 : 示例代码 :1. 读取和显示图像 :2. 查看图像信息 :…...
在线抽奖系统——项目介绍
目录 项目介绍 页面预览 需求分析 管理员登录注册 人员模块 奖品模块 活动模块 抽奖模块 系统设计 系统架构 项目环境 数据库设计 安全设计 完整代码:项目完整代码/在线抽奖系统/lottery-system Echo/project - 码云 - 开源中国 项目介绍 利用 MySQ…...
day7作业
编写一个如下场景: 有一个英雄Hero类,私有成员,攻击(Atx),防御(Defense),速度(Speed),生命值(Blood),以及所有的set get 方…...
JavaScript 系列之:Ajax、Promise、Axios
前言 同步:会阻塞。同步代码按照编写的顺序逐行依次执行,只有当前的任务完成后,才会执行下一个任务。 异步:异步代码不会阻塞后续代码的执行。当遇到异步操作时,JavaScript 会将该操作放入任务队列中,继续…...
AI人工智能机器学习之神经网络
1、概要 本篇学习AI人工智能机器学习之神经网络,以MLPClassifier和MLPRegressor为例,从代码层面讲述最常用的神经网络模型MLP。 2、神经网络 - 简介 在 Scikit-learn 中,神经网络是通过 sklearn.neural_network 模块提供的。最常用的神经网…...
鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar)
鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar) 1、效果展示2、下载 DevEco Studio3、创建项目4、新建页面模板5、更改应用信息6、新建以下页面7、Index.ets8、真机运行9、图片资源文件 1、效果展示 2、下载 DevEco Studio 访问官网根据自己的版本…...
FreeRTOS动态任务和静态任务创建
一.动态任务创建 1.搭建任务框架 去task.c中将任务参数复制到main中 然后将const去掉,它会限制参数类型,任务大小、任务优先级、任务句柄需要去宏定义,任务句柄是指针类型要取地址 vTaskStartScheduler(); //开启任务调度,.c…...
QT:Graphics View的坐标系介绍
在 Qt 的 Graphics View 框架中,存在三种不同的坐标系,分别是 物品坐标系(Item Coordinates)、场景坐标系(Scene Coordinates) 和 视图坐标系(View Coordinates)。这三种坐标系在图形…...
C# httpclient 和 Flurl.Http 的测试
关于C#调用接口或Post,Flurl封装了httpclient, CSDN有哥们提供了一个公网的测试网站,可以测试Post调用,我写了2个函数,测试httpclient和Flurl使用Post: async 和 await 是成对使用的,为了接受web异步返回的数据,winfor…...
精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化
本案例为“观测先锋 2024 可观测平台创新应用案例大赛”精选案例,同时荣获IT168“2024技术卓越奖评选-年度创新解决方案”奖。 项目背景 近年来,中国汽车行业进入转型升级阶段,智能网联技术成为行业发展的核心。车联网、自动驾驶等技术的加速…...
阿里云可观测全面拥抱 OpenTelemetry 社区
作者:古琦 在云计算、微服务、容器化等技术重塑 IT 架构的今天,系统复杂度呈指数级增长。在此背景下,开源可观测性技术已从辅助工具演变为现代 IT 系统的"数字神经系统",为企业提供故障预警、性能优化和成本治理的全方…...
剑指 Offer II 032. 有效的变位词
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20032.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%8F%98%E4%BD%8D%E8%AF%8D/README.md 剑指 Offer II 032. 有效的变位词 题目描述 给定两个字符串 s 和 t ,…...
AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2
密接牛追踪2 农夫约翰有 N 头奶牛排成一排,从左到右依次编号为 1∼N。 不幸的是,有一种传染病正在蔓延。 最开始时,只有一部分奶牛受到感染。 每经过一个晚上,受感染的牛就会将病毒传染给它左右两侧的牛(如果有的话…...
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...
山大软院ai导论实验之采用BP神经网络分类MNIST数据集
目录 实验代码 实验内容 实验代码 import matplotlib.pyplot as plt from matplotlib import font_manager import torch from torch.utils.data import DataLoader import torchvision from torchvision import transforms# 数据预处理 transform transforms.Compose([tra…...
threeJs+vue 轻松切换几何体贴图
嗨,我是小路。今天主要和大家分享的主题是“threeJsvue 轻松切换几何体贴图”。 想象一下,手头上正好有个在线3D家具商店,用户不仅可以看到产品的静态图片,还能实时更换沙发的颜色或材质,获得真实的购物体验。…...
【python】01_写在前面的话
又是爆肝干文的日子,继上次说要出一期Python新手入门教程系列文章后,就在不停地整理和码字,终于是把【基础入门】这一块给写出来了。 不积跬步无以至千里,不积小流无以成江海,一个一个板块的知识积累,早晚你…...
跨平台公式兼容性大模型提示词模板(飞书 + CSDN + Microsoft Word)
飞书云文档 CSDN MD编辑器 Microsoft Word 跨平台公式兼容方案: 一、背景痛点与解决方案 在技术文档创作中,数学公式的跨平台渲染一直存在三大痛点: 飞书云文档:原生KaTeX渲染与导出功能存在语法限制微软Word:Math…...
【Python爬虫(85)】联邦学习:爬虫数据协作的隐私保护新范式
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
深入理解 并查集LRUCaChe
并查集&LRUCaChe 个人主页:顾漂亮 文章专栏:Java数据结构 1.并查集的原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后根据一定规律将归于同一组元素的…...
最新版本SpringAI接入DeepSeek大模型,并集成Mybatis
当时集成这个环境依赖冲突,搞了好久,分享一下依赖配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…...
Effective Python:(17)
Effective Python提供90条python编程技巧和秘籍,对于我们养成良好的编程习惯,减少程序出错非常重要。 这条就是一条很好的建议,即尽量使用抛出异常来处理意外情况,尽量不要用none作为返回值进行判断。问题也比较显然,如…...
3-2 WPS JS宏 工作簿的打开与保存(模板批量另存为工作)学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
React + TypeScript 复杂布局开发实战
React TypeScript 复杂布局开发实战 一、项目架构设计(基于最新技术栈) 1.1 技术选型与工程创建 # 使用Vite 5.x React 19 TypeScript 5.4 npx create-vitelatest power-designer-ui --template react-ts cd power-designer-ui && npm inst…...
滑动验证组件-微信小程序
微信小程序-滑动验证组件,直接引用就可以了,效果如下: 组件参数: 1.enable-close:是否允许关闭,默认true 2.bind:onsuccess:验证后回调方法 引用方式: <verification wx:if&qu…...
Linux 命令大全完整版(12)
Linux 命令大全 5. 文件管理命令 ln(link) 功能说明:连接文件或目录。语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V…...
在VSCode中安装jupyter跑.ipynb格式文件
个人用vs用的较多,不习惯在浏览器单独打开jupyter,看着不舒服,直接上教程。 1、在你的环境中pip install ipykernel 2、在vscode的插件中安装jupyter扩展 3、安装扩展后,打开一个ipynb文件,并且在页面右上角配置内核 …...
IDEA配置JSP环境
首先下载IDEA2021.3,因为最新版本不能简单配置web开发环境。然后新建一个java开发项目: 然后右键创建的项目,添加web框架: 选择web appliciation 在web inf文件夹下创建classes和lib文件夹: 点击file ,选择…...
Idea 中 Project Structure简介
在 IntelliJ IDEA 中,Project Structure(项目结构)对话框是一个非常重要的配置界面,它允许你对项目的各个方面进行详细的设置和管理。下面将详细介绍 Project Structure 中各个主要部分的功能和用途。 1. Project(项…...
旁挂负载分担组网场景
旁挂负载分担组网场景(到路由策略) 1.拓扑 2.需求 使用传统三层架构中MSTPVRRP组网形式VLAN 2—>W3,SW4作为备份 VLAN 3—>SW4,SW3作为备份 MSTP设计—>SW3、4、5运行 实例1:VLAN 2 实例2:VLAN 3 3.配置 交换层 SW3配置 抢占延时ÿ…...
