前端超分辨率技术应用:图像质量提升与场景实践探索-设计篇

news2024/11/26 16:53:07
超分辨率!

引言

在数字化时代,图像质量对于用户体验的重要性不言而喻。随着显示技术的飞速发展,尤其是移动终端视网膜屏幕的广泛应用,用户对高分辨率、高质量图像的需求日益增长。然而,受限于网络流量、存储空间和图像源质量等因素,获取高分辨率图像并非总是可行的。

超分辨率技术简介

超分辨率图像技术(Super-Resolution Image Technology,简称“超分”)应运而生,旨在通过智能化方法放大图像,提升分辨率,同时去除压缩噪声,从而获得更清晰、更锐利的图像。这项技术的应用场景广泛,包括提升压缩图像的画质、节省存储和流量、以及高质量放大图像等。

为何选择超分辨率技术?

随着显示设备分辨率的逐步提高,尤其是移动终端视网膜屏幕的广泛应用,人们对高分辨率、高质量图像的需求越来越突出。但是,由于网络流量、存储、图像源等诸多原因,我们往往无法获得高分辨率的图像,或者因为JPEG压缩,导致图像质量显著降低。

超分辨率技术的应用场景

  • 抑制压缩噪声:1倍的超分辨率用于提升高压缩率JPEG图像的画质,因为它可以有效去除JPEG的压缩噪声,对于无法找到更清晰图像源的图片,这是一个有效的解决方案。

  • 节省存储和流量:作为图像资源的提供方,我们还可以人为加大JPEG图像的压缩率(主动降低画质),将高压缩率的图像存储,并在网络上传送。图像传送到终端后,再使用1倍超分辨率提升画质,我们就可以在更少的画质损失前提下,进一步压缩图像,节省存储空间,减少流量。

  • 高质量放大图像:3倍的超分辨率不仅能将图像放大3倍(每边各3倍),得到比传统放大更清晰的细节,还能有效抑制原图像中的JPEG压缩噪声,面对越来越高的手机屏幕分辨率,这将大大改善小图像放大浏览时的体验。

业务简介

随着显示设备的分辨率逐步提高,尤其是移动终端视网膜屏幕的广泛应用,人们对高分辨率、高质量图像的需求越来越突出。但是,因为网络流量、存储、图片源等诸多原因,我们往往无法得到高分辨率的图像,或者因为JPEG压缩,导致图像质量显著降低。

总结收益

对于厂商

显著提升商品图片画质,节省流量流量成本,有效改善图片加载卡顿问题。

对于用户:

同等清晰度,数据流量消耗大大降低,图片加载速度更快。

各种不同模型效果对比

How怎么做?

如何选择打造适合项目的超分组件呢

下面以Android为例子

1. 选择合适的深度学习框架

以Android为例,我们进行了多组数据测试,并将部分数据进行汇总。通过比较不同框架的优缺点,我们发现使用华为NPU能力能够充分发挥手机性能、能够满足项目使用。先使用华为官方接口实现相关功能跑通流程,再去使用支持的华为NPU能力第三方框架增加通用性,并选择适合的模型。

类型

厂商

描述

图片

耗时

评价

原图

/

3kb 50x50

/

Tensorflow lite

google

4倍后的图片

gpu

440ms

优点:具有通用性(Android/ios),tensorflow一条龙全家桶很香

缺点:性能相对较差

HUAWEI HIAI

huawei

3倍后的图片

npu

首次初始化30ms

之后就3ms

优点:速度快

缺点:仅华为npu设备可用

ncnn

Tencent

3倍后的图片 gpu

使用的是cli模式运行模型

898ms

陪跑而已 该模式下数据不重要

另一组数据

2. 集成到项目中

当然要跟图片框架结合了,超分辨率技术需要与图片框架结合使用。

我们可以选择老牌王者Glide,或者新晋黑马Coil。Coil是一个高效、轻量级且易于使用的Android图片加载库,它首选Kotlin语言开发,并且使用包含Coroutines、OkHttp、Okio和AndroidX Lifecycles在内的最流行的开源库。

Coil与Glide对比

Coil & Glide v4 快速高效的Android图片加载库

描述

大家对glide比较了解 不清楚的朋友看👆那个官方文档, 说下新晋黑马

Coil特点

1.Coil 首选 Kotlin 语言开发并且使用包含 Coroutines, OkHttp, Okio 和 AndroidX Lifecycles 在内最流行的开源库。

2.动态采样(Dynamic image sampling),简而言之就是可以在内存中只缓存了一个低质量的图片而此时需要显示同一个高质量的图片时,Coil可以先把低质量的图片作为 ImageView 的 placeHolder 并同时去磁盘缓存中读取对应的高质量图片最后以“渐进式”的方式替换并最终显示到视图中,例如最常见的从图片列表到预览大图的场景。对项目有帮助 看看能不能学习一下这个机制,渐进式替换原有生成高清图。

  • 更快: Coil 在性能上做了很多优化,包括内存缓存和磁盘缓存、对内存中的图片进行采样、复用 Bitmap、支持根据生命周期变化自动暂停和取消图片请求等

  • 更轻量级: Coil 大约会给你的 App 增加两千个方法(前提是你的 App 已经集成了 OkHttp 和 Coroutines),Coil 的方法数和 Picasso 相当,相比 Glide 和 Fresco 要轻量级很多

  • 更容易使用: Coil's API 充分利用了 Kotlin 语言的新特性,简化并减少了很多重复代码

  • 更流行: Coil 首选 Kotlin 语言开发,并且使用包含 Coroutines、OkHttp、Okio 和 AndroidX Lifecycles 在内的更现代化的开源库

性能对比

参考数据:coil:1.4.0、glide:4.12.0

在当时版本情况下coil与gilde性能对比

不管是小图还是大图都有些许差距,但现在coil都2.6.0了 可以再对比一次

500k相对大图加载对比
小图加载对比
总结

如果是新项目用到 Coroutines、OkHttp、Okio 和 AndroidX Lifecycles,还是很推荐用Coil的,至于本次项目,当然是全适配咯.

3.具体怎么设计?

1.0版本 在设计超分辨率组件时,可以将核心处理流程封装在一个处理核心库中,并根据不同的图片加载框架(如Glide和Coil)提供相应的包装库。这样的设计既保证了功能的复用性,又提高了组件的灵活性和扩展性。

一个处理核心和为glide和coil框架提供插件

展望

Android移动端超分辨率调研 本来跟着这个填坑来的, 结果埋了更多的坑。目前具体代码 项目已经写完了,再整理一版。

参考资源

华为 HiAI Engine 指南

深度学习框架大PK:TNN决战MNN,ncnn依旧经典

Coil 和 Glide 的 Bitmap 缓存复用机制

Glide VS Coil 性能对比 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件安装】(十四)Ubuntu22.04安装Psensor硬件监视器

一个愿意伫立在巨人肩膀上的农民...... Ubuntu系统硬件运行查询输入指令太繁琐,终端展示不直观,因此这款具有可视化监控Ubuntu系统下当前电脑的硬件CPU(中央处理器)、GPU(显卡)和硬盘等温度等功能&#xff…

HCIP(DSVPN)实验

HCIP(DSVPN)实验 一,实验要求: 1、r5为isp,只能进行ip地址的配置,其所有ip地址均为共有ip地址 2、r1和r5使用ppp的PAP认证,r5为主认证方 r2和r5之间使用ppp的chap认证,r5为主认证方…

vue基础教程(4)——十分钟吃透vue路由router

同学们可以私信我加入学习群! 正文开始 前言一、路由概念二、路由使用三、创建路由对应的组件四、给整个项目一个入口总结 前言 前面的文章运行成功后,页面显示如下: 在这个页面中,点击Home和About都会切换右面的页面内容&#…

HTML网站的概念

目录 前言: 1.什么是网页: 2.什么是网站: 示例: 3.服务器: 总结: 前言: HTML也称Hyper Text Markup Language,意思是超文本标记语言,同时HTML也是前端的基础&…

python实战之PyQt5桌面软件

一. 演示效果 二. 准备工作 1. 使用pip 下载所需包 pyqt5 2. 下载可视化UI工具 QT Designer 链接:https://pan.baidu.com/s/1ic4S3ocEF90Y4L1GqYHPPA?pwdywct 提取码:ywct 3. 可视化UI工具汉化 把上面的链接打开, 里面有安装和汉化包, 前面的路径还要看…

小白python爬虫基础教程(看这一篇就完了)

爬虫的五个步骤: 1)需求分析,找到需求相关的网址 2)获取网址的返回信息(urllib,requests) 3)定位需要的信息所在位置(re正则表达式,XPATH, CSS selector) 4&#xff…

开通幻兽帕鲁游戏多人联机服务器多少钱?价格意想不到

2024年全网最全的幻兽帕鲁服务器租用价格表,阿里云幻兽帕鲁游戏服务器26元1个月、腾讯云32元一个月、京东云26元一个月、华为云24元1个月,阿腾云atengyun.com整理最新幻兽帕鲁专用4核16G、8核16G、8核32G游戏服务器租用价格表大全: 阿里云幻…

在微信上处理小程序用户反馈具体的方法

想必大家在开发小程序的时候,一定遇到这种情况: 为了用户有更好的体验,我们会定期登陆微信小程序来查看用户反馈并对用户的问题进行回复和处理,但是这种方法的缺点就是最多间隔48小时要进行登陆一次以及回复用户不及时。 这样的话…

codesys通过moudbus TCP连接西门子1214c,西门子做客户端

思路在codesys中发送数据到西门子,西门子原封不动的将数据传回。 1.首先配置codesys; 我设置了500个,但是好像发不这么多,只能120多个。因为什么来我忘了。但是这里不影响。 2.配置映射: 3.写代码 PROGRAM PLC_PRG VARarySendDa…

大模型助力学术图谱挖掘!OAG-Challenge @ KDD Cup 2024正式开始

如何用大模型推动学术知识图谱挖掘任务?OAG-Challenge KDD Cup 2024 邀你来赛! 竞赛网址:https://www.biendata.xyz/kdd2024/ 竞赛背景 自 1997 年创办以来,知识发现和数据挖掘会议 ACM SIGKDD 上举办的 KDD Cup 被誉为全球最…

【微服务】Sentinel(流量控制)

文章目录 1.基本介绍1.Sentinel是什么2.Sentinel主要特性3.Sentinel核心功能1.流量控制2.熔断降级3.消息削峰填谷 4.Sentinel两个组成部分 2.Sentinel控制台显示1.需求分析2.下载3.运行1.进入cmd2.输入java -jar sentinel-dashboard-1.8.0.jar3.查看默认端口8080 4.访问1.账号和…

考研数学|《660》完全不会做怎么办?【注意】

很多人有一个误区: 不仅仅是做660题的误区,很多人做其他的习题册都有这个误区,就是以为太依靠答案,如果一道题目做不出来,也不去思考,就直接去看答案怎么做,然后把答案看会了,就认为…

如何利用OpenCV4.9 更改图像的对比度和亮度

返回:OpenCV系列文章目录(持续更新中......) 上一篇:使用 OpenCV 添加(混合)两个图像 下一篇:如何利用OpenCV4.9离散傅里叶变换 ​目标 在本教程中,您将学习如何: 访问像素值用零…

路由的完整使用

多页面和单页面 多页面是指超链接等跳转到另一个HTML文件,单页面是仍是这个文件只是路由改变了页面的一部分结构. 路由的基本使用 使用vue2,则配套的路由需要是第3版. 1)下载vue-router插件 2)引入导出函数 3)new 创建路由对象 4)当写到vue的router后只能写路由对象,因此只…

Git版本管理使用手册 - 8 - 合并分支、解决冲突

合并整个开发分支 切换到本地test分支,选择右下角远程开发分支,选择Merge into Current。然后提交到远程test仓库。 合并某次提交的代码 当前工作区切换成test分支,选择远程仓库中的dev开发分支,选择需要合并的提交版本右击&a…

cmd小黑框——命令行基础语句与实操效果演示

cmd小黑框——命令行学习 初识cmd小黑框cmd命令缩写含义介绍cmd基础操作cmd实操效果演示cmd命令行快捷键 初识cmd小黑框 CMD,全称Command,是Windows系统中自带的一个命令行解释器,它允许用户通过输入命令来对系统进行各种操作。CMD命令在Win…

从运营层面看财务管理:如何做好项目的财务预算

有效的项目运营是企业发展进步的主要活动,企业管理者的项目财务管理主要针对项目财务预算。项目财务预算管理是企业财务管理的一个分支,也是项目财务管理的核心部分,其表现形式为一个综合性的财务计划,主要包括预算编制、报告、执…

SQL Server 实验二:数据库视图的创建和使用

目录 第一关 相关知识 什么是表 操作数据表 创建数据表 插入数据 修改表结构 删除数据表 编程要求 第一关实验代码: 第二关 相关知识 视图是什么 视图的优缺点 视图的优点 视图的缺点 操作视图 创建视图 通过视图向基本表中插入数据 通过视图修改基本表的…

武汉星起航引领跨境电商新潮流,一站式方案助力创业者快速崛起

在跨境电商领域,武汉星起航电子商务有限公司以其独特的一站式解决方案,为众多创业者提供了通往成功的捷径。该公司凭借专业的团队和丰富的经验,为创业者提供全方位的支持,助力他们在跨境电商领域实现快速发展。 随着全球经济的不…

线性规划-非线性规划-非线性规划遗传算法

遗传算法当前获得的最优值作为非线性寻优的初始解,随后进行求解。