• matlab图像处理:图像格式的转换


    这篇文章只罗列出一些最简单的图像格式转换方法。

    1,RGB图像转与灰度图相互转换

    从视觉角度来看rgb图像是有色彩的,而灰度图则只有255种灰色。

    从矩阵来看,rgb是个三维矩阵--三个二维矩阵落在一起,一层是R一层是G一层是B。灰度图是个二维矩阵。

    从rgb图像转换为灰度图很容易:rgb2gray(f) 一个函数搞定。至于原理是什么,没时间管它因为暂时用不着,感兴趣的有时间可以了解一些。

    但是从灰度图转换为rgb有点费事了,我也很奇怪这一点,去网上查了好多,貌似技术控们总是喜欢用技术含量高的东西,很多方法都是用colormap完成的,这东西很好,但是我不能在10分钟搞明白,所以我又找到了一个更简单的方法--把二维的复制三次让他成为三维的不就行了?嗯,果真是行的。

    rgbf=repmat(gf,[1 1 3]), 这个函数就是把灰度图像f的矩阵,在一维方向复制一次,二维方向复制一次,三维方向复制三次。~不是在源图像复制,是在rgbf上复制,复制完rgbf是个size(f,1),size(f,2),3的三维矩阵。这样就可以把rgbf当做彩色图来使用了,比如将图片(100,100)这一点标记为红色---rgbf(100,100,:)=[255,0,0];

    下面举个简单的小例子。因为我的目的不是将灰度图复原成彩色图,而只是在灰度图上用一些色彩标记一些特定的区域而已,目的很简单,实现起来也很容易。下面将展示如何将fig1中的黑色部分变为红色。fig1其实是个二值图像,之后0和1两个值。

    代码很简单:

    blacks=find(fig1==0);    %得到黑色区域

    fr=fig1;  % 复制r,g,b通道

    fg=fig1;

    fb=fig1;

    fr(blacks)=255;  % 将黑色变为红色

    fg(blacks)=0;

    fb(blacks)=0;

    figrgb=cat(3,fr,fg,fb);  % 合成彩色图像

           

              fig1                                     figrgb

     

    2,double(f),将unit8或是uint16转化为浮点型,因为无符号整形是很容易越界的,所以经常要转换为浮点数来用。

    3,把浮点数转换为unit8或是unit16 把矩阵乘以255或是65536就可以。

    4,mat2gray(f) 把矩阵f的值转换到[0 1]范围内。

    5,im2uint8(f) 转换为uint8格式,如果f是浮点数,那么先将f整到[0 1]范围内。

  • 相关阅读:
    边界扫描的测试原理及九大指令
    边界扫描(boundary scan)
    setup&hold
    使用InstallShield打包windriver驱动-转
    一个完整的Installshield安装程序实例-转
    高通Trustzone and QSEE介绍
    Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
    Linux驱动中completion接口浅析(wait_for_complete例子,很好)
    dmesg 的时间戳处理
    linux popen函数
  • 原文地址:https://www.cnblogs.com/naniJser/p/2413370.html
Copyright © 2020-2023  润新知