Matlab照片实现正值灰度,负值红色显示

目录

一、前言

二、图像的基本操作

三、实现正值灰度,负值红色显示


一、前言

本来用matlab不算多,用去做图像处理的就更少了,但莫名其妙总会有用到它的地方,比如大四的一门选修课,比如研究生的矩阵论,都需要用它来图像处理。然后就总结了一下,诞生了这篇。

二、图像的基本操作

1.读入 imread 函数

X = imread('face.jpg');

2.显示某个颜色分量

matlab读入的彩色图像的数据是三维的,比如读入后数据显示 50x50x3 ,表示该图有50x50个像素点,第三个维度为RGB图层,第一层为红色分量,第二层为绿色分量,第三层为蓝色分量。

使用以下代码可以分别查看三个分量效果。

subplot(141),imshow(X(:,:,1)),title('红色分量');
subplot(142),imshow(X(:,:,2)),title('绿色分量');
subplot(143),imshow(X(:,:,3)),title('蓝色分量');
subplot(144),imshow(X),title('原始图像');

3.灰度处理

已有方法或者公式很多,这里采用其中一种

f = 0.3*X(:,:,1)+0.59*X(:,:,2)+0.11*X(:,:,3);

4. 图片显示

imshow 函数,支持数据类型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

 不同类型的范围会有不同,如 uint8 是 0-255 的,double 的是 0-1 ,超出会导致显示异常。

imshow(X);

三、实现正值灰度,负值红色显示

实际上就是根据阈值,是否达到阈值显示颜色不同。正负值不同即阈值为0。

%W 为原始数据,元素值有正负的二维矩阵
W_new = zeros(50*50,r,3);        %前两维大小与原始数据大小一致,因为不同颜色所以新数据是三维的
W_new(:,:,1) = (W>0).*W+(W<0).*W*(-1); %正值三个图层都要赋值,负值只给第一图层(红色)
W_new(:,:,2) = (W>0).*W;
W_new(:,:,3) = (W>0).*W;

 效果示例:

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值