LearningENVI&IDL分享 http://blog.sciencenet.cn/u/dongyanqing Learning ENVI&IDL

博文

图像真彩色、假彩色和伪彩色显示

已有 15063 次阅读 2011-8-6 00:31 |个人分类:IDL技术|系统分类:科研笔记| IDL, 图像显示, 真彩色, 伪彩色

        一、背景知识

计算机表示颜色也是用二进制。16位色的发色总数是6553真彩色,也就是216次方;24位色被称为真彩色,它可以达到人眼分辨的极限,发色数是1677万多色,也就是224次方。

图像显示的时候可能涉及到真彩色显示、伪彩色显示和假彩色显示等方式。

IDL下显示图像又有直接图形法、对象图形法、智能化工具可视化和快速可视化四种,后面分别以代码的形式给出各种模式下的图像显示例程,仔细看注释。

二、 基本概念

真彩色(True Color):真彩色是指在组成一幅彩色图像的每个像素值中,有RGB三个基色分量,每个基色分量直接决定显示设备的基色强度产生彩色。

伪彩色(Pseudo Color):每个像素的颜色不是由每个基色分量的数值直接决定,而是把像素值当作颜色查找表(color look-up tableCLUT)的表项入口地址,去查找一个显示图像时使用的RGB强度值,用查找出的RGB强度值合成产生彩色。


假彩色(False Color):将多波段单色影像合成为假彩色影像,如landsat 7/ETM+有八个波段,用其中三个合成就是假彩色

从实现技术上讲,假彩色与真彩色是一致的,都是RGB分量组合显示;伪彩色显示调用的是颜色表。

三、代码实现

1.       直接图形法

;直接图形法--

PRO SHOWIMAGEDIRECTGRAPHICS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;真彩色

  ;显示窗口

  WINDOW,0,xsize= imgDims[0],ysize = imgDims[1],$

    title = '真彩色'

  DEVICE,decomposed = 1

  ;/true相当于true=1,即对应图像数组为(3, w, h)

  TV,rgbImage,/true

  ;直接图形法--伪彩色

  WINDOW,1,xsize= imgDims[0],ysize = imgDims[1],$

    title = '灰度显示'

  ;原灰度显示

  TV, redChannel

  ;加载已有颜色表(IDL提供了近40个现成的颜色表,可通过xloadct查看)

  DEVICE,decomposed = 0

  LOADCT,13

  WINDOW,2,xsize= imgDims[0],ysize = imgDims[1],$

    title = '伪彩色(颜色表13'

  TV,redChannel

  ;自定义颜色表

  myR = BINDGEN(256)

  myG = myR[REVERSE(myR)]

  myB = myR

  ;增加编辑颜色表

  MODIFYCT,41,'colorTable',myR,myG,myB

  LOADCT,41

  WINDOW,3,xsize= imgDims[0],ysize = imgDims[1],$

    title = '伪彩色(自定义颜色表)'

  TV,redChannel

  ;假彩色

  DEVICE,decomposed = 1

  WINDOW,4,xsize= imgDims[0],ysize = imgDims[1],$

    title = '假彩色'

  TV,rgbImage[[2,1,0],*,*],/true

END

 

 

2.       对象图形法

 

;对象图形法显示图像

PRO SHOWIMAGEOBJECTGRAPHICS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;对象图形法-真彩色显示

  oImage= OBJ_NEW('IDLgrImage',rgbImage)

  XOBJVIEW,oImage,title= '真彩色显示'

  ;对象图形法-伪彩色显示

  oPalette = OBJ_NEW('IDLgrPalette')

  oPalette.LOADCT,13

  oImage = OBJ_NEW('IDLgrImage',redChannel,$

    palette = oPalette)

  XOBJVIEW,oImage,title = '伪彩色显示(颜色表13'

  ;假彩色显示

  oImage = OBJ_NEW('IDLgrImage',rgbImage[[2,1,0],*,*])

  XOBJVIEW,oImage,title = '假彩色显示'

END

3.       智能化编程工具可视化

 

;智能化编程工具

PRO SHOWIMAGEITOOLS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;真彩色显示

  IIMAGE,rgbImage,title = 'True Color'

  ;灰度显示

  IIMAGE,redChannel,title = 'Gray'

  ;伪彩色显示-获取颜色表

  LOADCT,13

  TVLCT,r,g,b,/get

  rgbTable = BYTARR(3,256)

  rgbTable[0,*,*] = r

  rgbTable[1,*,*] = g

  rgbTable[2,*,*] = b

  ;伪彩色显示

  IIMAGE,redChannel,title = 'Pseudo Color',$

    RGB_TABLE = rgbTable

 

4.       快速可视化

 

;快速可视化方式

PRO SHOWIMAGEQUICKVIS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;真彩色显示

  img1 = IMAGE(rgbImage)

  ;原始灰度显示

  img1 = IMAGE(redChannel)

  ;伪彩色显示

  img1 = IMAGE(redChannel,rgb_table= 13)

END

 

5.       主函数

PRO TEST_DISPLAYIMAGE

  ;获取IDL自带的Examples目录下的jpeg文件

  file = FILEPATH('rose.jpg', $

    SUBDIRECTORY = ['examples', 'data'])

  ;获取文件信息

  queryStatus = QUERY_IMAGE(file, imageInfo)

  imgDims = imageInfo.DIMENSIONS

  ;读取文件

  rgbImage = READ_IMAGE(file)

  redChannel = REFORM(rgbImage[0,*,*])

  greenChannel = REFORM(rgbImage[1,*,*])

  blueChannel = REFORM(rgbImage[2,*,*])

  ;直接图形法下的各种显示

  SHOWIMAGEDIRECTGRAPHICS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;对象图形法下的各种显示

  SHOWIMAGEOBJECTGRAPHICS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;智能化编程工具

  SHOWIMAGEITOOLS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

  ;快速可视化显示

  SHOWIMAGEQUICKVIS,imgDims,$

    rgbImage,$

    redChannel,$

    greenChannel,$

    blueChannel

END

 

四、最终效果图




https://blog.sciencenet.cn/blog-344887-472319.html

上一篇:理查德·克莱德曼钢琴曲全集下载与IDL重命名程序
下一篇:IDL下视图关联显示
收藏 IP: 115.171.212.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 00:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部