Matlab imread()读到了什么 (浅显 当复习文档了)

matlab打开matlab,用最简单的imread方法读取一个图像

clc
clear
img_h=imread('hua.jpg');

返回一个数组(矩阵),往往是a*b*c unit8 类型

解释一下这个三维数组的意思,行数、数和层数 ,

unit8:指数据类型,无符号八位整形,可理解为0~2^8的数

三个层数分别代表RGB三个通道

图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB 模型的色彩空间可以表现 256×256×256 ≈ 1670万色

当imshow传入了一个二维数组,它将以灰度方式绘制;

可以把图像拆分为rgb三层,可以以灰度的方式观察它

figure(1)
for i=1:3
    subplot(1,3,i);
    imshow(img_h(:,:,i));%按灰度图显示了
end

matlab官方rgb转灰度图的函数为 rgb2gray(),这个函数实际上就是在rgb中找到了最平衡的一个值;再进行imshow()

可以直接把rgb相加取均值,或者取最大值,或者在RGB坐标系中取点在R=G=B直线上的投影;

rgb2gray()采用第三种方法

另外,matlab提供了索引图像读取

[A,map] = imread(___) 将 filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。

返回值 A 是 uint8 类型的 二维数组。颜色图 map 是 double 类型的 Q×3 矩阵,因此索引图像中有 Q 种颜色。

但是索引图像并不常见,如果你对着一副下载的图片进行上述操作,往往只能获得一个三维矩阵和一个空的map。

matlab提供了RGB转索引图像的方法:

[X,cmap] = rgb2ind(RGB,Q) 使用具有 Q 种量化颜色的最小方差量化法并加入抖动,将 RGB 图像转换为索引图像 X,关联颜色图为 cmap

[RGB,map]=rgb2ind(img_h,256);%最多支持2^16种颜色
subplot(1,2,1)
imshow(img_h)
subplot(1,2,2)
imshow(RGB,map)

Q是最小方差量化法所用的量化颜色的数量,指定为小于或等于 65536 的正整数。返回的颜色图 cmap 包含 Q 种或更少的颜色。

当把Q设置的比较小的时候

subplot(1,4,1)
imshow(img_h)
title('原图')
subplot(1,4,2)
[RGB,map]=rgb2ind(img_h,4);
imshow(RGB,map)
subplot(1,4,3)
[RGB,map]=rgb2ind(img_h,16);
imshow(RGB,map)
subplot(1,4,4)
[RGB,map]=rgb2ind(img_h,256);
imshow(RGB,map)

 利用这一点可以给图像打马赛克哈

写着玩,尽量做到正确严谨,也可以当作自己的复习资料

  • 14
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值