选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

文章目录

    • 1、前言
    • 2、 图像处理工具效果对比
      • 2.1 Graphics2D实现
      • 2.2 Thumbnailator实现
      • 2.3 ImageJ实现
      • 2.4 JAI(Java Advanced Imaging)实现
      • 2.5 OpenCV实现
    • 3、图像处理工具结果

1、前言

    SVD(stable video diffusion)开放了图生视频的API,但是限制图片分辨率必须为下面三种1024x576576x1024768x768。项目基于Fooocus生成的图片分辨率不满足,然后基于ImageIO+Graphics2D处理了一下,修改图片分辨率,然后再去生成视频。功能调通了,但是发现图片清晰度严重下降。效果如下所示。
    看了下Windows自带画图工具修改分辨率大小功能,修改后的图片清晰度基本上能和原图一致。这个Graphics2D质量差的多。
    然后分析了五种常用的Java图像处理工具:Graphics2D、ImageJ、JAI、OpenCV和Thumbnailator。通过了解它们的基础知识和Java对接实现,对比下来,在修改分辨率后,图片清晰度最高的是OpenCV。图片处理质量依次为OpenCV>JAI>ImageJ>thumbnailator>Graphics2D

  • Fooocus生成图片1536 x 2560

在这里插入图片描述

  • Graphics2D修改分辨率后的图片576 x 1024

在这里插入图片描述

2、 图像处理工具效果对比

    此处对一张图片,分别使用五种工具处理,进行结果比对。
    原图如下:1280 x 768分辨率,要求处理为一张1024 x 576的图片。输出图片质量要求尽可能的高。
在这里插入图片描述

2.1 Graphics2D实现

2.1.1 说明
    Graphics2D是Java中的2D图形API,用于绘制和操作图形。
    使用Graphics2D可以轻松地修改图像的分辨率,使用的是插值算法重新绘制图片,但是图片失真严重。
    如果图片是webp格式,需要引入下面依赖以兼容webp格式。
2.1.2 依赖

        <dependency>
            <groupId>com.twelvemonkeys.imageio</groupId>
            <artifactId>imageio-webp</artifactId>
            <version>3.10.1</version>
        </dependency>

2.1.3 实现
在这里插入图片描述
2.1.4 效果
    基本上能满足压缩图片的需求,但色彩严重不饱和、画质较低,清晰度远远达不到原图。
    Graphics2D绘图支持三种算法,但是效果大差不差。
在这里插入图片描述

2.2 Thumbnailator实现

2.2.1 说明
    Thumbnailator是一个用于创建和处理缩略图的Java库。它提供了简单易用的 API,使开发人员能够快速地生成缩略图,并对其进行各种操作,如缩放、旋转、裁剪、水印等。

  • 图像缩放,可以根据指定的尺寸生成缩略图
  • 图像裁剪,可以根据指定的区域裁剪原始图像。
  • 图像旋转、反转、水印、边框等功能

2.2.2 依赖

        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.9</version>
        </dependency>

2.2.3 实现
在这里插入图片描述

2.2.4 效果
    能满足压缩图片的需求,色彩同样严重不饱和、可以清晰的看到像素颗粒度很大。
    和Graphics2D对比,画质效果提升不明显。
在这里插入图片描述

2.3 ImageJ实现

2.3.1 说明
    ImageJ是一个开源的图像处理和分析软件,它提供了丰富的图像处理和分析工具,适用于科学研究、医学影像、工程图像处理等领域。

  • ImageJ 提供了丰富的图像处理工具,包括图像滤波、增强、分割、配准、变换等功能
  • ImageJ 提供了多种图像分析工具,包括图像测量、轮廓分析、颜色分析、纹理分析等功能

2.3.2 依赖

        <dependency>
            <groupId>net.imagej</groupId>
            <artifactId>ij</artifactId>
            <version>1.54i</version>
        </dependency>

2.3.3 实现
在这里插入图片描述
2.3.4 效果
    满足压缩图片的需求,色彩饱和,光线强弱对比明显,衣服质感,表情还原基本不错。
    观察脸部,手部、小兔子耳朵可以明显看到,存在锯齿轮廓,画质相对不错,但质量依然不高。
在这里插入图片描述

2.4 JAI(Java Advanced Imaging)实现

2.4.1 说明
    Java 高级图像处理工具包(JAI)是用于在 Java 环境中处理图像和图形数据的库。

  • JAI 提供了丰富的图像处理和图形操作功能,包括图像过滤、变换、合成、校正、分析等。

2.4.2 依赖

        <dependency>
            <groupId>javax.media</groupId>
            <artifactId>jai-core</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>jai_codec</artifactId>
            <version>1.1.3</version>
        </dependency>

2.4.3 实现
在这里插入图片描述
2.4.4 效果
    整体看起来,没有大问题。面部表情细腻,头发、瓶子、手部、后面的光线等能达到较高的清晰度。
在这里插入图片描述

2.5 OpenCV实现

2.5.1 说明
    OpenCV(Open Source Computer Vision Library)是一个开源的跨平台计算机视觉库,它提供了丰富的图像处理和计算机视觉算法,可用于开发各种视觉任务的应用程序。

  • 提供了易于使用的 C++、Python 和 Java 接口简单易用
  • 底层实现采用了高效的 C/C++ 编写,拥有较高的性能
  • 功能库非常丰富,提供了超过 2500 个优化过的图像处理和计算机视觉算法,涵盖了各种任务,包括图像处理、特征检测、物体识别、人脸识别、目标跟踪、摄像头校正等
    2.5.2 依赖
        <dependency>
            <groupId>org.openpnp</groupId>
            <artifactId>opencv</artifactId>
            <version>4.9.0-0</version>
        </dependency>

2.5.3 实现

  • java.lang.UnsatisfiedLinkError: no opencv_java490 in java.library.path问题处理

    在Windows下开发,需要下载安装OpenCV,下载地址:https://opencv.org/releases/
    以OpenCV – 4.9.0版本为例,在windows x64系统下找到安装路径下的动态链接库文件{home}\opencv\build\java\x64\opencv_java490.dll,移动至java.library.path下,此处移动至JDK的bin路径下即可。
    在linux下库文件是{home}/opencv-4.9.0/build/lib/libopencv java490.so文件

// 查看Java库文件路径
System.getProperty("java.library.path")

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
2.5.4 效果

在这里插入图片描述
    对比JAI,效果好像没有大的提升,我们放大3倍来看。左侧为JAI,右侧为OpenCV。
    OpenCV画质更高,没有明显的模糊区域。JAI存在一定的糊状效果。
在这里插入图片描述

3、图像处理工具结果

    仅针对图片分辨率调整处理结果来说,从画质清晰度、色彩、面部表情、阳光、手部细节等角度看,整体效果OpenCV>JAI>ImageJ>Thumbnailator>Graphics2D
    对于OpenCV有更多功能,也很强大,此处仅针对绘图进行比对,更多功能等待后续探索。

参考文章:代码片-OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D
Powered By niaonao

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/489184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql数据库:日志管理、备份与恢复

目录 前言 一、MySQL日志管理 1、存放日志和数据文件的目录 2、日志的分类 2.1 错误日志 2.2 通用查询日志 2.3 二进制日志 2.4 慢查询日志 2.5 中继日志 3、日志综合配置 4、查询日志是否开启 二、数据备份概述 1、数据备份的重要性 2、备份类型 2.1 从物理与…

【IJCAI‘23】港大提出社会推荐中的去噪自增强学习

论文标题&#xff1a; Denoised Self-Augmented Learning for Social Recommendation 收录会议&#xff1a; IJCAI 2023 论文链接&#xff1a; https://arxiv.org/abs/2305.12685 代码链接&#xff08;欢迎 ✨&#xff09;&#xff1a; https://github.com/HKUDS/DSL 港…

密码学及其应用1 —— 密码学概述

1 密码学的基本概念 1.1 网络安全的定义 网络安全是网络领域的一个专业领域&#xff0c;它涵盖了在基础计算机网络基础设施中所采取的措施、网络管理员为保护网络及网络可访问资源免受未授权访问而采纳的政策&#xff0c;以及对其有效性&#xff08;或无效性&#xff09;的持续…

Capture One Pro 23中文---颠覆性的图像编辑与色彩配置

Capture One Pro 23是一款功能强大且专业的RAW图像编辑处理软件。它拥有全球领先的色彩管理技术和精细的图像编辑工具&#xff0c;可以对图片进行多种精细调整&#xff0c;包括曝光、色温、对比度、锐度等&#xff0c;以满足用户特定的后期处理需求。此外&#xff0c;Capture O…

Linux离线安装mysql,node,forever

PS:本文是基于centos7实现的,要求系统能够查看ifconfig和unzip解压命令, 实现无网络可安装运行 首先现在百度网盘的离线文件包****安装Xftp 和 Xshell 把机房压缩包传到 home目录下****解压unzip 包名.zip 获取IP先获取到 linux 主机的ip ifconfig Xftp 连接输入IP,然后按照…

CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客

文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…

【Monero】Wallet RPC | Wallet CLI | 门罗币命令行查询余额、种子、地址等命令方法教程

ubuntu22.04 首先在运行daemon&#xff0c;详细安装运行教程可参考&#xff1a;The Monero daemon (monerod) ./monerodWallet CLI run ./monero-wallet-cli如果还没有钱包就根据提示创建钱包即可 输入密码 查询余额 balance查询种子 seed其他可执行命令操作&#xff1…

Spring Cloud - Openfeign 实现原理分析

OpenFeign简介 OpenFeign 是一个声明式 RESTful 网络请求客户端。OpenFeign 会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign 会将函数的参数值设置到这些请求模板中。虽然 OpenFeign 只能支持基于文本的网络请求,但是它可以极大简化网络请求的…

QT(3/22)

1>使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数&#xff0c;将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#…

【笔记】MJ Prompt

参数 --chaos 10 or --c 10, 0-10, defalut 0 --quality 1 or --q, 0.25-1, defalut 1 --iw 2, 0.5-2, --stylize 100 or --s 100, 0-1000, defalut 100 --cref URL --cw 100, 0-100stylize 风格化&#xff0c;MJ不同的出图模式&#xff0c;有默认的艺术风格&#xff0c;该值…

企业微信主体变更的公证书怎么办?

企业微信变更主体有什么作用&#xff1f; 企业微信推出到现在已经很多年了&#xff0c;但是之前一直不支持主体变更。于是很多公司好不容易积累的客户&#xff0c;因为换了营业执照经营&#xff0c;原来的客户就都只能流失了。近期企业微信终于放开了变更主体的功能&#xff0c…

C++细节

背景知识&#xff1a; 面向对象的编程中&#xff0c;类&#xff08;Class&#xff09;是创建对象的蓝图或模板&#xff0c;它包含了数据&#xff08;通常称为属性或变量&#xff09;和行为&#xff08;通常称为方法或函数&#xff09;。将数据封装为私有&#xff08;private&am…

babel起手式

Babel7 以下是各个 ECMAScript 版本引入的一些主要新语法和功能的汇总 ES5 / ECMAScript 5&#xff08;2009年&#xff09; 严格模式 "use strict"。JSON 对象。Array.prototype.forEach()、Array.prototype.map()、Array.prototype.filter()、Array.prototype.redu…

畅捷通T+ Ufida.T.DI.UIP.RRA.RRATableController 远程命令执行漏洞

一、漏洞信息 漏洞名称:畅捷通T+ Ufida.T.DI.UIP.RRA.RRATableController 远程命令执行漏洞 漏洞类别:远程命令执行漏洞 风险等级:高危 二、漏洞描述 畅捷通TPlus适用于异地多组织、多机构对企业财务汇总的管理需求;全面支持企业对远程仓库、异地办事处的管理需求;全…

2015年认证杯SPSSPRO杯数学建模A题(第二阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现&#xff1a; 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途&#xff0c;结绳更是必不可少的技能之一。针对不同用途&#xff0c;有多种绳结的编制方法。最简单的绳结&#xff0c;有时称…

【手把手教学】如何可视化YOLOv8深度学习的网络结构并保存

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Vue.js 3.4的新特性

Vue.js 3.4的新特性 目前&#xff0c;Vue.js的版本已经更新到3.4&#xff0c;这次更新不仅带来了性能上的飞跃&#xff0c;还引入了许多新特性&#xff0c;进一步优化了开发效率。 1. 性能提升 在性能方面&#xff0c;Vue.js 3.4 全新重写了模板解析器。与之前基于正则表达式…

如何将视频存储云端扫码调取?扫码看视频的在线制作方法

视频二维码是现在常用的一种分享视频的方法&#xff0c;其他人只需要扫描二维码就可以在手机上播放视频内容。采用这种方式可以获得更快的传播速度&#xff0c;而且视频存储在云端也不回占用扫码者的内容&#xff0c;通过点击消耗流量就可以查看视频内容&#xff0c;有效的提升…

对HW 钓鱼简单样本分析以及制作

记录某个对某个钓鱼事件中获取的钓鱼样本进行分析&#xff0c;以及简单的制作学习 样本行为分析 首先看到是 qq 邮箱发来的某个压缩包大概本身是带密码的&#xff0c;反手就丢到虚拟机先看下大概文件&#xff0c;解压后是这样的一个快捷方式 然后打开属性查看快捷方式&#x…

智能楼宇3D可视化解决方案

什么是智能楼宇? 智能楼宇是为提高楼宇的使用合理性与效率,配置合适的建筑环境系统与楼宇自动化系统、办公自动化与管理信息系统以及先进的通信系统,并通过结构化综合布线系统集成为智能化系统的大楼。 面临的问题 信息孤岛,无法统一管理 各个子系统独立工作、独立管理,…