第三章 图像数据处理 本章概要 IDL最开始是一种处理图像的语言。正因为此,世界各地的许多科学家和工程师仍在用 IDL语言。这章阐述了图像处理的基本工作。将从中学到以下几点 1. 怎样读取和显示图像数据 2. 怎样缩放图像数据 3. 怎样在显示窗口中定位图像 4. 怎样改变图像的大小 5. 怎样从显示设备中读取图像 6. 怎样完成基本的图像处理任务 7. 怎样建立简单的图像滤波器 图像处理 事实上,任何类型的二维数据集都可认为是一幅图像。但是要在一个 8位的显示设备上显示图像数据,就必须将图像数据调整为 0~255之间的字节型数值。(在一个 24-bit的显示设备上,24位图像的RGB值必须调整成字节型数值。)因为图像总是以字节型数值显示,所以图像总是以字节型数组来存储。但是无论图像是怎样存储的,图像总是由两个显示图像的IDL命令:TV和 TVScl以字节型数值来显示。 要了解是怎样工作的,需要有一些图像数据用于处理。用命令 LoadData来打开图像数据集 Ali and Dave。将要处理这两幅图像数据中的第二幅图像。键入 IDL>image=LoadData(10) IDL>image=image[*,*,1] 显示图像 可用 TV和 TVScl两个 IDL命令中的任一个来显示图像。这两个命令几乎在各个方面都是一样的,包括能与之一起使用的关键字。仅仅在一个方面不同:TVScl将图像数据调整为与 IDL运行时所用颜色数目相适应的字节型数值。例如:如果在使用 IDL时用 220种颜色,则在图像显示之前 TVScl将图像数据调整为 0~219之间的字节型数值。 另一方面,TV命令取图像数据本身的值,仅仅将其作为字节型数值传送到显示设备上。如果有必要,图像数据将被截断以符合字节型数值。如果图像数据不被调整到 0~255之间,图像将很可能显示不正确。 注意,与 Plot,Surface和 Contour命令不同,TV和 TVScl命令在显示图像之前不删除已显示的内容。一般情况下这个问题不大,但有时候也会产生一些麻烦。如果想要一个干净的显示窗口来显示图像数据,无论当前窗口上的显示内容是什么,都可用一个简单的命令Erase来删除。 IDL>Erase 这里有一个实例。刚才读取的 IDL的图像数据集已经调整在 0~255之间。 可以键入如下内容来查看: IDL>Print,Max(image),Min(image) 但是,如果在一个8位显示设备上工作,可能没有全部使用在显示器上可用的 256种颜色。如果需要了解正在使用多少种颜色,可键入: IDL>Print,!D.Table_Size 在一个8位显示器(这里指颜色表的...