Java DIP - 开源库
在本章中,我们将探讨一些广泛使用且可以轻松集成到项目中的免费图像处理库。这些库包括 −
- ImageJ
- Fiji
- Commons Imaging
- ImageMagick
- Endrov
- LeadTools
- OpenCv
ImageJ
ImageJ 是一个受 NIH Image for the Macintosh 启发的公共领域 Java 图像处理程序。它可以显示、编辑、分析、处理、保存和打印 8 位、16 位和 32 位图像。
下面介绍了 ImageJ 的一些基本功能 −
Sr.No. | 功能 &描述 |
---|---|
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 的一些高级功能如下所述 −
Sr.No. | 功能和说明 |
---|---|
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 的一些基本功能 −
Sr.No. | 功能与说明 |
---|---|
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 的一些基本功能如下所述 −
Sr.No. | 功能 &描述 |
---|---|
1 |
格式转换 它将图像从一种格式转换为另一种格式(例如 PNG 到 JPEG)。 |
2 |
变换 它可以调整图像的大小、旋转、裁剪、翻转或修剪图像。 |
3 |
透明度 它使图像的某些部分不可见。 |
4 |
绘制 它向图像添加形状或文本。 |
5 |
装饰 它向图像添加边框或框架。 |
6 |
特殊效果 它可以模糊、锐化、阈值或为图像着色。 |
7 |
动画 它可以从一组图像。 |
8 |
合成 它可以将一张图像重叠在另一张图像上。 |
9 |
形状形态 它提取特征,描述形状并识别图像中的模式。 |
10 |
加密或解密图像 它将普通图像转换为难以理解的胡言乱语并转回再次。 |
Endrov
Endrov 是一个多用途图像分析程序。它是独立编写的,旨在解决其他免费软件和许多商业软件包的许多缺点。
Endrov 的一些基本功能如下所述 −
Sr.No. | 功能和说明 |
---|---|
1 |
查看数据 它以 2D 和 3D 形式查看数据。设计用于处理复杂的 4D 数据方案和无限数量的通道,其中每个通道可以有自己的 X、Y 和 Z 分辨率。 |
2 |
注释您的图像 它可以自动或手动注释您的图像,以了解它们并获取统计数据。 |
3 |
撤消和重做 它可以撤消和重做所有操作。 |
4 |
惰性求值 它从一开始就设计用于处理大型图像集。 Endrov 使用惰性求值,这是研究编程语言中最常见的概念。 |
5 |
脚本语言 它支持图形脚本语言以及传统脚本。 |
6 |
Java 用 Java 编写。插件架构允许使用新的 Java 插件轻松扩展。它可以与 Matlab 交互。 |
7 |
格式 它使用 Bio 格式访问几乎所有商业和开放文件格式。 |
8 |
微观处理 它可以用一个程序控制所有显微镜并进行即时图像分析。 |
LEADTOOLS
LEADTOOLS 提供超过 200 种图像处理功能,包括文档清理、医学图像增强、色彩转换和校正、降噪、边缘检测等。
下面介绍了 LEADTOOLS 的一些基本功能 −
Sr.No. | 功能 &描述 |
---|---|
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 的一些基本功能 −
Sr.No. | 特征与描述 |
---|---|
1 |
平滑图像 这涉及应用模糊、高斯模糊、中值模糊和双边滤波器。 |
2 |
侵蚀和扩张 它可以应用两个非常常见的形态学运算符 −膨胀和腐蚀。 |
3 |
形态学变换 OpenCV 函数 morphologyEx 可应用形态学变换,如开、闭、TopHat 和 BlackHat 等。 |
4 |
图像金字塔 OpenCV 函数 pyrUp 和 pyrDown 可对给定图像进行向下采样或向上采样。 |
4 |
基本阈值操作 使用 OpenCV 函数执行基本阈值操作阈值。 |
5 |
为图像添加边框 OpenCV 函数 copyMakeBorder 用于设置边框(图像的额外填充)。 |
7 |
重新映射 在 OpenCV 中,函数 remap 提供了一个简单的重新映射实现。 |
8 |
直方图计算 出于简单目的,OpenCV 实现了函数 calcHist,该函数计算一组数组(通常是图像或图像平面)的直方图。它最多可以操作 32 个维度。 |