当前位置: 首页 > article >正文

【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”。

运行结果:
yuan

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的图像处理功能。


http://www.kler.cn/a/563873.html

相关文章:

  • 企业知识库搭建:14款开源与免费系统选择
  • 电商项目-秒杀系统(一)秒杀业务分析
  • MySQL——创建与管理视图
  • 基于 Python 开发分布式任务调度系统案例剖析
  • 《深度学习实战》第2集-补充:卷积神经网络(CNN)与图像分类 实战代码解析和改进
  • 基于CNN的FashionMNIST数据集识别2——模型训练
  • Java+SpringBoot+Vue+数据可视化的在线家具定制服务平台(程序+论文+讲解+安装+调试+售后)
  • 网络安全体系
  • OpenGL 04--GLSL、数据类型、Uniform、着色器类
  • 服务器虚拟化是一种将物理服务器资源(如CPU、内存、存储、网络等)通过软件技术抽象、分割和整合,创建多个独立、隔离的虚拟服务器(虚拟机,VM)的技术。
  • C ++ 静态存储区+堆空间
  • 常见锁类型介绍
  • <网络> 网络基础3
  • AI大模型-提示工程学习笔记20-多模态思维链提示
  • C++ STL(二)deque
  • JVM垃圾回收器深度底层原理分析与知识体系构建
  • 神经网络 - 激活函数(Sigmoid 型函数)
  • 利用粒子群算法(PSO)来优化BP神经网络的权值和阈值
  • Flutter_boost混编开发系统MethodChannel之坑
  • Redis与MySQL数据一致性问题解决方案