专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
生物制品圈  ·  AI书籍推荐 | 十本书籍带你探索人工智能 ·  2 天前  
BioArt  ·  Nature | ... ·  2 天前  
生物学霸  ·  中国医学科学院/北京协和医学院 ... ·  3 天前  
生物学霸  ·  34 年来,亚洲科学家首获这一奖项 ·  3 天前  
51好读  ›  专栏  ›  小白学视觉

优化图像处理中的图像格式:OpenCV中的PNG、JPG和WEBP

小白学视觉  · 公众号  ·  · 2024-12-06 10:11

正文

点击上方 小白学视觉 ”,选择加" 星标 "或“ 置顶

重磅干货,第一时间送达

扫描下方二维码,加入前沿学术论文交流星球 可以获得最新顶会/顶刊论文的idea解读、解读的PDF CV从入门到精通资料,及最前沿应用
在计算机视觉和图像处理应用中,选择正确的图像格式可以影响性能和质量。无论你是在预处理数据以训练深度学习模型、在实时系统上运行推理,还是处理大型数据集,了解PNG、JPG和WEBP的优势和劣势可以帮助你做出明智的选择。 让我们深入了解每种格式在图像处理方面的独特特性,并提供实际的代码示例,展示如何使用Python中的OpenCV加载和保存这些格式。
目录
  1. PNG(便携式网络图形)
  2. JPG/JPEG(联合图像专家小组)
  3. WEBP(网络图片格式)
1. PNG(便携式网络图形)
优势:
PNG支持无损压缩,保留所有图像细节并支持透明度。PNG通常适用于需要精确像素值的图像处理任务(例如,分割掩码或科学图像分析)。
劣势:
PNG文件通常较大,这可能会减慢处理流程,特别是在处理大型数据集时。如果存储或带宽是限制因素,这可能会影响性能,使PNG不太适合实时或资源受限的应用。
在OpenCV中的使用:
import cv2
# Reading a PNG imageimage = cv2.imread("example.png", cv2.IMREAD_UNCHANGED) # To retain transparency if present
# Saving as PNG with maximum quality (lossless compression)cv2.imwrite("output.png", image, [cv2.IMWRITE_PNG_COMPRESSION, 0]) # 0 is lossless, 9 is max compression
2. JPG/JPEG(联合图像专家小组)
优势:
JPG广泛用于照片和自然图像,具有高效的有损压缩。它非常适合在大型图像数据集中减少文件大小,或者当速度至关重要时。在计算机视觉中,JPG通常用于像素精度不太关键的数据集,如目标检测或分类任务。
劣势:
JPG的有损特性会导致一些数据丢失,特别是在多次保存后,这可能会随时间降低图像质量。它还不支持透明度,限制了其在某些应用中的使用。
在OpenCV中的使用:
import cv2
# Reading a JPG imageimage = cv2.imread("example.jpg")
# Saving as JPG with quality control (lossy compression)cv2.imwrite("output.jpg", image, [cv2.IMWRITE_JPEG_QUALITY, 90]) # Quality range: 0 to 100, 100 is best quality
3. WEBP(网络图片格式)
来自谷歌的官方文档
https://developers.google.com/speed/webp/docs/compression
优势:
WEBP提供有损和无损压缩,使其成为一个多功能的选择。它结合了PNG的透明度和JPG的压缩效率,这在需要高性能和存储效率的计算机视觉应用中是有利的。对于机器学习,使用WEBP可以节省存储空间并加快数据集加载速度,特别是对于大型数据集。
劣势:
尽管其效率高,WEBP仍然不是所有平台或旧版软件都支持的。然而,对于使用现代库的图像处理工作流程,WEBP是一个越来越强大的选择。
我还推荐查看谷歌进行的一项比较Webp和Jpg的研究。https://developers.google.com/speed/webp/docs/webp_study
在OpenCV中的使用:
# Reading a WEBP imageimage = cv2.imread("example.webp", cv2.IMREAD_UNCHANGED)
# Saving as WEBP with compression control# Lossless compression (quality=100) vs. lossy compression (quality < 100)cv2.imwrite("output_lossy.webp", image, [cv2.IMWRITE_WEBP_QUALITY, 75]) # Lossy with quality at 75cv2.imwrite("output_lossless.webp", image, [cv2.IMWRITE_WEBP_QUALITY, 100]) # 100 enables lossless
实验
作者的结果
作者的结果
作者的结果
比较总结
  • PNG:非常适合无损压缩和透明度;最适合像素精确的应用,但可能会占用大量存储空间。
  • JPG:这种格式适用于可以接受一定质量损失的自然图像。它非常适合大型数据集,但不适合需要透明度或精确像素保留的图像。
  • WEBP:多功能,提供有损和无损选项。它在保持高质量的情况下有效减少存储使用,非常适合需要快速访问和适度压缩的计算机视觉应用。
选择正确的图像格式和设置对于最大化计算机视觉和图像处理工作流程的效率和性能至关重要。无论你是在训练模型、分析数据还是部署应用,了解这些差异都允许你针对质量、速度和存储进行优化——从而实现更强大、更高效的系统。

下载1:OpenCV-Contrib扩展模块中文版教程
在「 小白学视觉 」公众号后台回复: 扩展模块中文教程 即可下载全网第一份OpenCV扩展模块教程中文版,涵盖 扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理 等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉







请到「今天看啥」查看全文