一、“类”:像素的“数据身份卡” 🆔

关键字

:数据类、uint8、double、像素值范围

🧠 你可以把“类”理解为像素的“数据格式标签”——不同标签对应不同的数值范围和存储方式~

课本里的核心概念:MATLAB中图像的像素值对应不同

数据类

,比如:

  • uint8:最常用!像素值范围是[0,255](占1字节,适合普通图像);
  • uint16:范围[0,65535](占2字节,适合高精度图像,比如医学影像);
  • double:浮点型,范围通常归一到[0,1](占8字节,适合计算)。

✋ 新手类比:就像“图片格式”——JPG用uint8存(省空间),科研图像用uint16存(更精细),计算时转成double(方便运算)。

☁️ 实践代码:查看图像的“类”(比如读入的图像f):

% 查看f的像素数据类
>> class(f)

运行后会显示类似

'uint8'

的结果~

二、“图像类型”:图像的“功能分类名” 📂

关键字

:灰度图、二值图、RGB图、索引图

🤖 图像类型是按“显示/用途”分的类别,工具箱包里的函数会根据类型“对症下药”~

课本里的4种核心类型:

  • 灰度图:单通道,像素值表示“明暗程度”(比如黑白照片);
  • 二值图:只有0(黑)和1(白)的逻辑图(比如文字轮廓);
  • RGB图:三通道(红/绿/蓝),彩色图像(比如手机拍的照片);
  • 索引图:用“颜色表”映射的图像(较少见,比如早期游戏画面)。

✋ 二值图的特殊点:在MATLAB中,只有logical类的数组才算真正的二值图!比如把数值数组转成二值图:

% 假设A是只有0和1的数值数组
>> B = logical(A); % 转成logical类的二值图
>> islogical(B) % 验证是否是二值图,返回1(是)

🧠 新手区分:打开手机相册——黑白照是灰度图,截图里的文字是二值图,自拍是RGB图~

三、“类+类型”:图像的“完整身份牌” 🎫

关键字

:类与类型的组合、函数兼容性

✨ 图像的“全称”是“类+类型”,比如“uint8灰度图”——既说明像素格式,又说明用途~

课本里的术语说明:比如“uint8灰度图”= 像素是uint8类 + 用途是灰度图;“logical二值图”= 像素是logical类 + 用途是二值图。

✋ 实践坑点:很多函数对“类+类型”有要求!比如im2bw(转二值图)需要输入灰度图,且输出是logical类~

☁️ 复杂场景:类型转换(比如把RGB图转灰度图):

% 读入RGB图f
>> f = imread('color_cat.jpg');
% 转成uint8灰度图g
>> g = rgb2gray(f);
% 查看g的类和类型:class(g)是uint8,类型是灰度图

四、实用工具:类与类型的“转换神器” 🔄

关键字

:mat2gray、im2uint8、logical

🛠️ 处理图像时经常要转换类/类型,这些函数是“转换开关”~

常用转换函数(新手必记):

  • mat2gray(A):把任意类的数组A转成[0,1]范围的double类灰度图(计算后常用);
  • im2uint8(g):把double类的灰度图g转成uint8类(方便保存);
  • logical(A):把数值数组A转成logical类二值图(非0转1,0保持0)。

✋ 示例代码:把计算后的double图存成uint8图:

% 假设h是double类的计算结果(范围0-1)
>> h_uint8 = im2uint8(h); % 转成uint8类
>> imwrite(h_uint8, 'result.jpg'); % 保存为JPG