选择最佳图像处理工具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,但是限制图片分辨率必须为下面三种1024x576、576x1024、768x768。项目基于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
相关文章:
选择最佳图像处理工具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,但是限…...
微信小程序版本更新检测
app.vue文件 <script>export default {onLaunch: function() {console.log(App Launch)// #ifdef MP-WEIXINthis.getUpdateManager();// #endif},methods: {// 检测小程序更新getUpdateManager() {const updateManager wx.getUpdateManager();updateManager.onCheckFor…...
【每日力扣】343. 整数拆分与63. 不同路径 II
🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使…...
洛谷 Cut Ribbon
思路:我们可以看出,这是一道完全背包问题,但是呢,有一点需要注意:那就是我们在装背包的时候并不能保证一定能装满背包,但是这里的背包要求是让我们装满的,所以我们需要判断这个背包装满才行&…...
#AS,idea,maven,gradle
Jdk,sdk。提前都是需要下好的。 Maven与gradle的思考: 用AS开发app时,gradle本就有,自己也可以指定,AGP同样。要注意gradle,AGP,jdk版本的事情。还有依赖库。 用idea开发网络程序时,也有内置的maven&…...
FPGA结构与片上资源
文章目录 0.总览1.可配置逻辑块CLB1.1 6输入查找表(LUT6)1.2 选择器(MUX)1.3 进位链(Carry Chain)1.4 触发器(Flip-Flop) 2.可编程I/O单元2.1 I/O物理级2.2 I/O逻辑级 3.布线资源4.其…...
【分布式】——分布式事务
分布式事务 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏👉https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专…...
第6章:“让我们思考这个”的提示
“让我们思考这个”这一提示词,是深度对话的钥匙,鼓励ChatGPT生成反思性、沉思性的文本。 对于论文写作、诗歌创作或创意任务的完成,非常实用。 当你想要深究某主题时,只需向ChatGPT提问。 它会基于提示,结合算法和…...
安卓Activity上滑关闭效果实现
最近在做一个屏保功能,需要支持如图的上滑关闭功能。 因为屏保是可以左右滑动切换的,内部是一个viewpager 做这个效果的时候,关键就是要注意外层拦截触摸事件时,需要有条件的拦截,不能影响到内部viewpager的滑动处理…...
使用conda管理python环境
为什么需要管理环境? 每个python程序依赖的库版本可能不同,因此我们需要隔离不同的环境。 创建环境: conda create --name myenv python3.8这将创建一个名为myenv的新环境,并在其中安装Python 3.8版本。 列出所有环境…...
MR混合现实情景实训教学系统在军事演练课堂中的教学应用
MR混合现实情景实训教学系统在军事演练课堂中的教学应用具有以下优势: 1. 增强现实感:通过MR技术,学生可以在军事演练中更真实地感受到战场环境,增强他们的实战经验。 2. 提高训练效率:通过MR技术,可以模…...
vant checkbox 复选框 样式改写
修改前 修改后 基于 vant: 4.8.3 unocss: 0.53.4 <van-checkbox-group v-model"query.zczb" shape"square" class"text-16 w-100% flex flex-wrap"><template v-for"item in registerCapitalOption"><v…...
物联网实战--入门篇之(一)物联网概述
目录 一、前言 二、知识梳理 三、项目体验 四、项目分解 一、前言 近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网…...
将yolov5s部署到安卓上实战经验总结
最近需要在手机端实现一个目标检测的功能,于是选择了小巧又在目标检测方面表现很好的yolov5s,官网下载yolov5代码,用自己做的数据集进行了训练,然后把模型转换成torchscript格式,这些过程网上都有很多讲解,…...
算法日记————对顶堆(4道题)
对顶堆的作用主要在于动态维护第k大的数字,考虑使用两个优先队列,一个大9999999999根堆一个小根堆,小根堆维护大于等于第k大的数字的数,它的堆顶就是堆内最小,第k大的数字,另外一个大根堆维护小于等于k的数…...
【I.MX6ULL移植】Ubuntu-base根文件系统移植
1.下载Ubuntu16.04根文件系统 http://cdimage.ubuntu.com/ 1 2 3 4 5 2.解压ubuntu base 根文件系统 为了存放 ubuntu base 根文件系统,先在 PC 的 Ubuntu 系统中的 nfs 目录下创建一个名为 ubuntu_rootfs 的目录,命令如下: 【注意&…...
unity3d for web
时光噶然 一晃好多年过去了(干了5年的u3d游戏),记得最后一次使用的版本好像是 unity 2017。 那个是 unity3d for webgl 还需要装个插件。用起来很蛋疼。 最近做一个小项目 在选择是用 Layabox 还是 cocosCreate 的时候 我想起了老战友 Uni…...
大宋咨询(深圳问卷调研)关于消费者研究的流程
消费者研究是一项至关重要的任务,它有助于企业了解目标市场的需求、偏好和行为,从而制定更加精准的营销策略。在执行消费者研究时,需要遵循一定的步骤和方法,以确保研究的准确性和有效性。开展消费者研究需要一系列的步骤和方法。…...
STM32看似无法唤醒的一种异常现象分析
1. 引言 STM32 G0 系列产品具有丰富的外设和强大的处理性能以及良好的低功耗特性,被广泛用于各类工业产品中,包括一些需要低功耗需求的应用。 2. 问题描述 用户使用 STM32G0B1 作为汽车多媒体音响控制器的控制芯片,用来作为收音机频道存贮…...
iOS - Runtime-isa详解(位域、union(共用体)、位运算)
文章目录 iOS - Runtime-isa详解(位域、union(共用体)、位运算)前言1. 位域介绍1.1 思路1.2 示例 - 结构体1.3 示例 - union(共用体)1.3.1 说明 1.4 结构体 对比 union(共用体) 2. a…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
