ImageJ是世界上最快的纯Java的图像处理程序。
它能够过滤一个2048x2048的图像在0.1秒内(*)。
这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的ImageJ的开发插件。500多插件可用。
数据类型:8位灰度或索引色,16位无符号整数,32位浮点和RGB色彩。
文件格式:读写全部支持的数据类型为TIFF(非压缩)或原始数据。
打开和保存GIF,JPEG,BMP,PNG。PGM,FITS和ASCII。打开DICOM。使用URL打开的TIFF、GIF文件、JPEG文件、DICOMs和原始数据。也能够扩展很多其它格式 的插件。
图像增强:支持平滑。锐化,边缘检測。中值滤波和阈值的8位灰度和RGB彩色图像。
交互方式调整亮度和8位,16位和32位图像的对照度。
几何操作:裁剪,缩放。调整大小和旋转。翻转垂直或水平。
分析:測量面积。平均值,标准偏差,最小的选择和最大或整个图像。
測量长度和角度。使用现实世界中的度量单位。如毫米。校准使用密度标准。生成柱状图和剖面图。
色彩处理:分裂一个32位彩色图像转换成RGB或HSV分量。
合并8位组件成彩色图像。RGB图像转换为8位索引颜色。应用伪彩色调色板为灰度图像。
基于ImageJ的项目有、CellProfiler(细胞图像分析)、idoimaging(医学影像)、ImageSurfer(3D可视化和分析)、MIPAV(3D成像和可视化)、NITRC(神经影像学工具和资源)等。
以下对ImageJ的编程基础介绍一下。
一、ImageJ的图像剖析
ImageJ的 图像由三个部分组成:
1、ImageProcessor对象实例:持有并提供了訪问像素的方法。
2、Image对象实例:即java.awt.Image画在屏幕上。
3、ImagePlus对象实例:包括全部的元数据(标题,属性)、ImageProcessor和Image。
ImageJ的 图像堆栈由四部分组成:
1、ImageStack对象实例:持有像素阵列的阵列(LUT变化通过暂时实例StackProcessor)
2、Image对象实例:即java.awt.Image画在屏幕上。
3、ImageProcessor对象实例:提供訪问当前切片像素。
4、ImagePlus对象实例:持有ImageStack、ImageProcessor和Image。
使用堆栈时,要谨记以下几点:
1、ImagePlus的ImageProcessor实例在不论什么调用setSlice(INT)时都由它的像素替换对象。
2、ImageStack.getProcessor(int)在每次调用时都返回一个新的ImageProcessor。是 一个消耗大的操作。
3、ImagePlus的java.awt.Image中在每次调用setSlice(int)时被更新。
当ImagePlus调用updateAndDraw()时又一次创建 java.awt.Image对象。假设你想改变被反映当前显示在屏幕上的图像,必须改动的像素之后调用updateAndDraw()。
二、创建图像
1、创建一个图像(具体)
int width = 400;
int height = 400;
ImageProcessor ip = new ByteProcessor(width, height);
String title = "My new image";
ImagePlus imp = new ImagePlus(title, ip);