Java 数字图像处理 - 开源库



在本章中,我们将探讨一些广泛使用的免费图像处理库,这些库可以轻松地集成到项目中。这些库包括:

  • ImageJ
  • Fiji
  • Commons Imaging
  • ImageMagick
  • Endrov
  • LeadTools
  • OpenCv

ImageJ

ImageJ 是一个公共领域的 Java 图像处理程序,其灵感来自于 Macintosh 上的 NIH Image。它可以显示、编辑、分析、处理、保存和打印 8 位、16 位和 32 位图像。

ImageJ 的一些基本功能如下所述:

序号 功能与描述
1

随处运行

ImageJ 使用 Java 编写,这使得它可以在 Linux、Mac OS X 和 Windows 上运行,并且支持 32 位和 64 位模式。

2

开源

ImageJ 及其 Java 源代码是免费提供的,并且属于公共领域。

3

工具包

使用 ImageJ 作为图像处理工具包(类库)来开发小程序、servlet 或应用程序。

4

数据类型

8 位灰度或索引颜色、16 位无符号整数、32 位浮点数和 RGB 颜色。

5

文件格式

打开和保存 GIF、JPEG、BMP、PNG、PGM、FITS 和 ASCII。打开 DICOM。使用 URL 打开 TIFF、GIF、JPEG、DICOM 和原始数据。

6

选择

创建矩形、椭圆形或不规则区域选择。创建线和点选择。

7

图像增强

支持对 8 位灰度和 RGB 彩色图像进行平滑、锐化、边缘检测、中值滤波和阈值处理。

8

颜色处理

将 32 位彩色图像拆分为 RGB 或 HSV 分量。将 8 位分量合并为彩色图像。

Fiji

Fiji 是一个图像处理软件包。它可以被描述为 ImageJ(和 ImageJ2)以及 Java、Java3D 和许多插件的组合,这些插件被组织成一个连贯的菜单结构。Fiji 与 ImageJ 的关系类似于 Ubuntu 与 Linux 的关系。

除了 ImageJ 的基本功能外,Fiji 的一些高级功能如下所述:

序号 功能与描述
1

配准 3D 图像

这涉及弹性对齐和拼接、特征提取、图像稳定器等。

2

图像分割

它提供了 35 多种类型的分割方法。

3

有用的键盘快捷键

Fuji 拥有许多键盘快捷键。

4

脚本编写

允许使用宏、JavaScript、JRuby、Jython、Clojure 和 Beanshell 进行脚本编写。

5

开发插件

使用脚本编辑器开始开发插件,然后运行插件。

6

ImageJ 技巧

ImageJ 易于使用,但有时您希望使用一些实际上已实现的功能,但您不知道如何触发。

Commons Imaging

Apache Commons Imaging,以前称为 Apache Commons Sanselan,是一个库,可以读取和写入各种图像格式,包括快速解析图像信息(如大小、颜色、空间、ICC 配置文件等)和元数据。

ImageJ 的一些基本功能如下所述:

序号 功能与描述
1

Java

Apache Commons Imaging 使用 100% 纯 Java 编写。它可以在任何 JVM 和任何平台上运行,无需修改。

2

图像格式

它读取和写入各种图像格式,并支持其他所有或大多数库都忽略的一些变体和编码。

3

元数据支持

它支持以结构化的方式读取和写入各种元数据,包括 EXIF 元数据。

4

网络友好

它对网络友好。Commons Imaging 只读取它需要的数据,并缓存已读取的数据,因此它不会给网络带来太大的负担。

5

易于使用

它设计得非常易于使用。它具有简单、清晰的界面。大多数操作都是单个 Imaging 方法调用。

6

透明

Commons Imaging 旨在保持透明。没有隐藏的缓冲区需要释放,没有本机内存需要释放,也没有后台线程。

7

开源

它是免费软件/开源软件。它在 Apache 软件许可证下可用。

8

颜色转换

ColorConversions 类提供方法在以下颜色空间之间进行转换:CIE-L*CH、CIE-L*ab、CIE-L*uv、CMY、CMYK、HSL、HSV、Hunter-Lab、RGB、XYZ 和 YXY。

ImageMagick

ImageMagick 是一个用于创建、编辑、合成或转换位图图像的软件套件。它可以读取和写入 100 多种格式的图像,包括 DPX、EXR、GIF、JPEG、JPEG-2000、PDF、PNG、Postscript、SVG 和 TIFF。使用 ImageMagick 可以调整图像大小、翻转、镜像、旋转、扭曲、剪切和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本、线条、多边形、椭圆和贝塞尔曲线。

ImageMagick 的一些基本功能如下所述:

序号 功能与描述
1

格式转换

它将图像从一种格式转换为另一种格式(例如,PNG 到 JPEG)。

2

变换

它可以调整图像大小、旋转、裁剪、翻转或修剪图像。

3

透明度

它使图像的某些部分不可见。

4

绘制

它向图像添加形状或文本。

5

装饰

它向图像添加边框或框架。

6

特殊效果

它可以模糊、锐化、阈值化或着色图像。

7

动画

它可以从一组图像创建 GIF 动画序列。

8

合成

它可以将一个图像叠加在另一个图像上。

9

形状形态

它提取特征、描述形状并在图像中识别模式。

10

加密或解密图像

它将普通图像转换为难以理解的乱码,然后再转换回来。

Endrov

Endrov 是一个多用途的图像分析程序。它是独立编写的,旨在解决其他免费软件和许多商业软件包的许多缺点。

Endrov 的一些基本功能如下所述:

序号 功能与描述
1

查看数据

它以 2D 和 3D 方式查看数据。旨在处理复杂的 4D 数据方案和无限数量的通道,其中每个通道可以具有自己的 X、Y 和 Z 分辨率。

2

注释图像

它自动或手动注释图像,以理解图像并获取统计信息。

3

撤销和重做

它可以对所有操作进行撤销和重做。

4

惰性求值

它从一开始就被设计用于处理大型图像集。Endrov 使用惰性求值,这主要在研究编程语言中可用。

5

脚本语言

它支持图形化脚本语言以及传统脚本语言。

6

Java

使用 Java 编写。插件架构允许使用新的 Java 插件轻松扩展。它可以与 Matlab 交互。

7

格式

它使用 Bio-formats 访问几乎所有商业和开放文件格式。

8

显微镜处理

它可以使用一个程序控制所有显微镜,并进行实时图像分析。

LEADTOOLS

LEADTOOLS 在多个类别中提供了 200 多个图像处理功能,包括文档清理、医学图像增强、颜色转换和校正、降噪、边缘检测等等。

LEADTOOLS 的一些基本功能如下所述:

序号 功能与描述
1

扫描文档图像处理

这套强大的功能可以读取扫描文档中的人工制品和瑕疵,例如打孔、倾斜角度、边框、灰尘斑点等等。

2

医学图像处理

通过平移、选择、减去和去除背景来增强图像或突出细节,以获得更好的视觉效果。

3

几何变换

这些功能可用于清理、对齐、校正图像或应用艺术 3D 效果。

4

亮度和对比度

这些功能可用于增强图像、应用艺术效果或帮助医学图像的诊断评估。

5

颜色空间转换

它们可以为单线程和多线程应用程序(包括 IIS 和 Windows WF 托管应用程序)添加图像颜色空间功能。

6

颜色校正

这些功能用于校正颜色通道交换、平衡颜色强度或执行各种图像分析任务的图像。

7

图像增强

这些功能用于校正摄影中常见的错误,例如红眼和颜色不平衡,以及帮助医学图像的诊断评估。

8

感兴趣区域

这些功能用于在图像中创建和修改感兴趣区域,以便对图像的特定部分执行图像处理功能,节省条形码和 OCR 识别的时间,或执行各种图像分析任务。

OpenCV

OpenCV 在 BSD 许可证下发布,因此它可以免费用于学术和商业用途。它具有 C++、C、Python 和 Java 接口,并且支持 Windows、Linux、Mac OS、iOS 和 Android。OpenCV 旨在提高计算效率,并着重于实时应用程序。使用优化的 C/C++ 编写,该库可以利用多核处理。

OpenCV的一些基本功能简要描述如下:

序号 功能与描述
1

图像平滑

这包括应用模糊、高斯模糊、中值模糊和双边滤波。

2

腐蚀和膨胀

它可以应用两种非常常见的形态学运算符:膨胀和腐蚀。

3

形态学变换

OpenCV函数morphologyEx用于应用形态学变换,例如开运算、闭运算、顶帽运算和黑帽运算等。

4

图像金字塔

OpenCV函数pyrUp和pyrDown用于对给定图像进行下采样或上采样。

4

基本的阈值操作

使用OpenCV函数threshold执行基本的阈值操作。

5

为图像添加边框

OpenCV函数copyMakeBorder用于设置边框(图像的额外填充)。

7

重新映射

在OpenCV中,函数remap提供了一个简单的重新映射实现。

8

直方图计算

为了简单起见,OpenCV实现了函数calcHist,该函数计算一组数组(通常是图像或图像平面)的直方图。它最多可以操作32个维度。

广告