医学图像处理——MATLAB中彩色图像表示方式

上一期医学图像处理——线型滤波

“之前介绍的都是灰度图像,是没有RGB概念的,今天小白的朋友给大家带来了一起我们肉眼见到的彩色图像的处理方式。”

 基础知识

一幅RGB图像就是彩色像素的一个M*N*3数组,也可以看作一个由三幅灰度图像形成的“堆”,当将其送到彩色监视器的红、绿、蓝输入端时,便形成了一幅彩色图像。下面一张图经典的阐述了以上的概念。

 

表示方法

     令fR,fG,fB表示三种RGB分量图像,一幅图像就是用cat(级联)操作将三个分量组成起来的彩色图像。

   令rgb_image代表一幅RGB图像,下面命令可提取出三幅分量图像。

 

实战演练

 以下我们就用一张五彩斑斓的图来试一试;

rgb_image=imread('C:\Users\xptyxx\Desktop\royins.png');

fR=rgb_image(:,:,1);

fG=rgb_image(:,:,2);

fB=rgb_image(:,:,3);

figure(1)

subplot(2,2,1);imshow(rgb_image);title('原图像');

subplot(2,2,2);imshow(fR);title('提取红色分量后');

subplot(2,2,3);imshow(fG);title('提取绿色分量后');

subplot(2,2,4);imshow(fB);title('提取蓝色分量后');

结果如下:

 

    从图中可以看到,由于我们只显示了红或绿或蓝这样的单通道,所以提取出的读是灰度图。而凡是对应于正红、绿、蓝的地方都被替代为了白色的灰度值。

   但是上面这种RGB通道分量的提取的效果,并不是我想要的结果。我们想要的结果是有红绿蓝色的分量。故要进行RGB阈值分割,阈值分割的基本思想是确定一个阈值,然后把每个像素点的灰度值和阈值相比较,根据比较的结果把该像素划分为两类——前景与背景。

    代码略长,在这里只展示提取红色分量的,绿色与蓝色套路相同:

 

rgb_image=imread('C:\Users\xptyxx\Desktop\RGB.png');

[m,n,d]=size(rgb_image);

level2=70;%设置阈值

%提取红色分量,不满足阈值要求的置为白色

for i=1:m

    for j=1:n      

if((rgb_image(i,j,1)-rgb_image(i,j,2)>level2)&&(rgb_image(i,j,1)-rgb_image(i,j,3)>level2))

            r(i,j,1)=rgb_image(i,j,1);  %保留满足条件的像素点

            r(i,j,2)=rgb_image(i,j,2);

            r(i,j,3)=rgb_image(i,j,3);

       else  

            r(i,j,1)=255;   %(白色的rgb值均为255)

            r(i,j,2)=255;

            r(i,j,3)=255;

        end 

    end 

end 

figure;

subplot(2,2,1);imshow(rgb_image);title('原图像');

subplot(2,2,2);imshow(r);title('提取红色分量后');

 

 从代码中我们可以看到我们其实使用了R和其他两分量的差值去与阈值比较的。而得出来的图像就是我们非常期望的提取结果了(最后一个长方形由于其具有的蓝色分量比较大,故也被提取了出来,所以阈值的选取还是蛮重要的)。

今天的介绍就到这里啦!

内容很简单,但自己尝试一下会觉得很有意思哟,快动手试试吧!

 

更多干货请关注公众微信号:医电小白的进阶之路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值