常见图片格式详解

JPEG图片编码格式分析 图片展示需要BGR模式的三维向量,图片的编码是把BGR图片编码成文件能存储的格式,解码则反之。目前常见的编码为jpg、png、gif等。新兴的如webp、heic。 BMP 从简单入手,BMP是最简单的编码方式,甚至数十行代码就能完成编码和解码简单的程序。 bmp由文件头和位图信息头组成 import struct import numpy as np BITMAP_FILE_HEADER_FMT = '<2sI4xI' BITMAP_FILE_HEADER_SIZE = struct. 阅读详情

RGB排列顺序
绝大多数图形库或环境是BGR/BGRA排列,cocoa中的NSImage或UIImage是RGBA排列。


http://www.cnblogs.com/xiangism/p/5311314.html

做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。

常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。

图像基本数据结构

 要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示

 

(图1)

(图2)

如果有A通道就表明这个图像可以有透明效果。

R,G,B每个分量一般是用一个字节(8位)来表示,所以图(1)中每个像素大小就是3*8=24位图, 而图(2)中每个像素大小是4*8=32位。

这里有三点需要说明:

一、图像y方向正立或倒立

图像是二维数据,数据在内存中只能一维存储,二维转一维有不同的对应方式。比较常见的只有两种方式: 按像素“行排列”从上往下或者从下往上。

如图所示的图像有9个像素点,如果从上往下排列成一维数据是(123456789), 如果是从下往上排列则为(789456123)。
只所以会有这种区别是因为,前一种是以计算机图形学的屏幕坐标系为参考(右上为原点,y轴向下 ),而另后一种是以标准的数学坐标系为参考(右下为原点,y轴向上)。这两个坐标系只是y值不一样,互相转换的公式为:

y2 = height-1-y1

y1,y2分别为像素在两个坐标系中的y坐标,height为图像的高度。

不过好像只有bmp图片格式以及windows下的GDI,GDI+是从下往上排列,其它比如DirectX,OpenGL,Cocoa(NSImage, UIImage),OpenCV等都是从上往下排列。

二、RGB排列顺序

不同图形库中每个像素点中RGBA的排序顺序可能不一样。上面说过像素一般会有RGB,或RGBA四个分量,那么在内存中RGB的排列就有6种情况,如下:

  • RGB
  • RBG
  • GRB
  • GBR
  • BGR
  • BRG

RGBA的排列有24种情况,这里就不全部列出来了。
不过一般只会有RGB,BGR, RGBA, RGBA, BGRA这几种排列据。 绝大多数图形库或环境是BGR/BGRA排列,cocoa中的NSImage或UIImage是RGBA排列。

三、像素32位对齐

如果是RGB24位图,会存在一个32位对齐的问题——
在x86体系下,cpu一次处理32整数倍的数据会更快,图像处理中经常会按行为单位来处理像素。24位图,宽度不是4的倍数时,其行字节数将不是32整数倍。这时可以采取在行尾添加冗余数据的方式,使其行字节数为32的倍数。
比如,如果图像宽为5像素,不做32位对齐的话,其行位数为24*5=120,120不是32的倍数。是32整数倍并且刚好比120大的数是128,也就只需要在其行尾添加1字节(8位)的冗余数据即可。(一个以空间换时间的例子)
有个公式可以轻松计算出32位对齐后每行应该占的字节数

byteNum = ((width * 24 + 31) & ~31)>>3;

注意结果是字节数,如果想知道位数,还得x8

图片格式的必要性

如果将图像原始格式直接存储到文件中将会非常大,比如一个5000*5000 24位图,所占文件大小为5000*5000*3字节=71.5MB, 其大小非常可观。
如果用zip或rar之类的通用算法来压缩像素数据,得到的压缩比例通常不会太高,因为这些压缩算法没有针对图像数据结构进行特殊处理。
于是就有了jpeg,png等格式,同样是图像压缩算法jpeg和png也有不同的适用场景,具体在下文再阐述。

所以可以总结如下: jpeg,png文件之于图像,就相当于zip,rar格式之于普通文件(用zip,rar格式对普通文件进行压缩)。

BMP格式

bmp格式没有压缩像素格式,存储在文件中时先有文件头、再图像头、后面就都是像素数据了,上下颠倒存储。
用windows自带的mspaint工具保存bmp格式时,可以发现有四种bmp可供选择:
单色: 一个像素只占一位,要么是0,要么是1,所以只能存储黑白信息
16色位图: 一个像素4位,有16种颜色可选
256色位图: 一个像素8位,有256种颜色可选
24位位图: 就是图(1)所示的位图,颜色可有2^24种可选,对于人眼来说完全足够了。

这里为了简单起见,只详细讨论最常见的24位图的bmp格式。

现在来看其文件头和图片格式头的结构:

                       

文件头信息
字段大小(字节)描述
bfType2一定为19778,其转化为十六进制为0x4d42,对应的字符串为BM
bfSize4文件大小
 bfReserved12 一般为0 
 bfReserved22 一般为0 
 bfOffBits 4 从文件开始处到像素数据的偏移,也就是这两个结构体大小之和

 

bmp图片结构头
 字段大小(字节) 描述 
 biSize 4此结构体的大小 
 biWidth 4 图像的宽
biHeight  4图像的高 
biPlanes  2图像的帧数,一般为1 
biBitCount  2一像素所占的位数,一般是24
biCompression  4一般为0 
biSizeImage  4像素数据所占大小,即上面结构体中文件大小减去偏移(bfSize-bfOffBits) 
biXPelsPerMeter  4 一般为0
biXPelsPerMeter  4  一般为0
biClrUsed  4  一般为0
biClrImportant  4  一般为0

 

本来在windows平台下wingdi.h文件中已经有这些结构的定义,不过为了不依赖与windows,实现为跨平台,本人将wingdi.h中的这两个结构“偷用”出来了。代码如下:

Bmp结构体

由于bmp格式比较简单,本人已实现了一份简单的c++代码,具有读取、保存bmp图片的功能,只支持24位的bmp格式。

代码在 http://git.oschina.net/xiangism/blogData 的“常见图片格式详解/ImageDemo/BmpDemo”文件夹中。

虽然这里只建立了vs2008项目,但代码在linux, mac平台下都可以编译通过。

需要说明的是为了统一处理,将bmp读取到LBitmap::m_pixel中时就将其转化为32位从上往下排列的图像格式了。并且会有y坐标的转化。
所以在读取的时候会有一个temp_line先存储文件中的24位数据,再转化为32位数据。在保存时也是先将32位数据转化到temp_line的24位数据上,然后再写入文件。(如果仅仅是处理bmp,那么这么多的一个A通道是冗余数据,但后面处理png图片时就会用到这个A通道)

如果用上面的代码来读取如图所示的图片(放大8倍后的显示图):

 


右上角像素为RGB(255, 128, 0)

1 ln::LBitmap bmp;
2 bmp.ReadBmp(L"one.bmp");
3 unsigned char *p = bmp.Pixel(0, 0);
4 printf("%d, %d, %d\n", p[0], p[1], p[2]); //显示左上角的像素值
5 bmp.WriteBmp(L"out.bmp");                 //保存到文件,可以测试是否能正确读取和保存bmp

运行的结果为: 0,128,255
可以看出像素分布为BGR

ps:

  • bmp格式也是可以压缩.
  • bmp格式也可以有颜色板。颜色板就是一个颜色的索引,上面说过bmp格式一个像素可以只有2个,16个或256个取值。就拿单色位图来说明,默认为0对应RGB(0,0,0) 1,对应RGB(255, 255, 255)
    如果颜色板这样定义: 
    0对应 RGB(255,0, 0)红
    1对应 RGB(0, 255, 0)绿
    这样黑白图就成了红绿图

JPEG格式

  1. jpeg是有损压缩格式, 将像素信息用jpeg保存成文件再读取出来,其中某些像素值会有少许变化。在保存时有个质量参数可在[0,100]之间选择,参数越大图片就越保真,但图片的体积也就越大。一般情况下选择70或80就足够了。
  2. jpeg没有透明信息。
  3. jpeg比较适合用来存储相机拍出来的照片,这类图像用jpeg压缩后的体积比较小。其使用的具体算法核心是离散余弦变换、Huffman编码、算术编码等技术,有兴趣的同学可以在网上找一大堆资料,本文就不详细介绍了。

接下来要介绍一个有关jpeg非常实用的技术——
jpeg格式支持不完全读取整张图片,即可以选择读取原图、1/2、1/4、1/8大小的图片
比如5000*5000的一张大图,可以只读取将其缩小成1/8后即625*625大小的图片。 这样比先完全读取5000*5000的图像,再用算法缩小成625*625大小不知快多少倍。
如果应用需求只需要一张小图时,这种读取方式就可以大显身手了。

在c代码中读取jpeg一般是使用libjpeg, 这个库提供了不完全读取图片的功能。

给ln::LBitmap添加有关jpeg的接口,如下ReadJpeg()第三个参数fraction可取值为1,2,4,8,分别对应1/1,1/2,1/4,1/8

JpegAPI

具体的实现在JpegDemo
用上面的函数进行jpeg的读取和保存的测试

复制代码
```
ln::LBitmap bmp;
bmp.ReadBmp(L"one.bmp");
unsigned char *p = bmp.Pixel(0, 0);
printf("%d, %d, %d\n", p[0], p[1], p[2]);
bmp.WriteJpeg(L"one.jpg", 90);
```
复制代码

读取one.bmp图片,然后保存成jpeg格式,one.jpg放大后显示如下

发现左上角的颜色发生了变化,并且也影响到周围的像素,就算将上面WriteJpeg()第二个参数换成100,也还是这种效果,这是Jpeg格式无法避免的问题
但如果读取一张风景照,再保存成Jpeg,就几乎看不出有什么差别了。

android平台下实现jpeg预读

复制代码
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeFile(info.fullPath, opt); //这里仅仅只读取jpeg的大小
opt.inJustDecodeBounds = false;
if (opt.outWidth > opt.outHeight) {
    opt.inSampleSize = opt.outWidth / phSize;//hpSize是允许的图片宽高的最大值
} else {
    opt.inSampleSize = opt.outHeight / phSize;
}
Bitmap b = BitmapFactory.decodeFile(info.fullPath, opt); 
复制代码

 将BitmapFactory.Options的inJustDecodeBounds 设置为true后,就只会读取Jpeg的大小,而不会去解析像素数据。然后再设置inSampleSize后,就可以根据这个值来读取适当大小的图片,研究android的源码后可以发现底层也是调用的libjpeg库来实现。

ios,mac

本人还没有在ios/mac中发现如何预读jpeg的官方API。Apple对图形、图像、多媒体领域提供了丰富接口,如果这个功能真没实现就太令我惊讶了! 不过ObjectC完全兼容C,可以调用libjpeg库来实现这个功能。

.NET下仅读取jpeg的大小

下面是用c#仅仅读取jpeg宽高(没有解析像素数据), 直接用C#读取1/2,1/4,1/8还不知道如何实现

FileStream stream = new FileStream(path, FileMode.Open);
Image img = Image.FromStream(stream, false, false);  //关键是将第三个参数设置为false
Console.WriteLine("size: {0},{1}", img.Width, img.Height);

 

jpeg批量转化工具

用相机拍出来的原始jpeg图片是高保真质量, 所占文件体积非常大,本人写了一个批量转化的工具,可以将jpeg的质量都转化成80, 图像的宽高不变, 这时人眼几乎看不出有什么差别, 但其体积只有原来的1/3. 如果有大量的照片需要保存时, 节约的空间就很客观了。实现原理很简单, 就是读取jpeg文件, 然后再保存.
用c#实现的,代码量非常少,在此贴出全部源码

JpegBatchConvert

 

Exif信息

另外jpeg文件一般有一个附属的exif信息,这个信息中有图像大小,拍摄时间,拍摄的相关参数,照片方向,图像缩略图等信息。

用相机拍出来的jpeg都会有这个信息。如果照片方向不是正立的话,在读取到像素取后,还得按exif所指明的方向将图像旋转下。mspaint程序就没有做这个处理,有些图片用picasa查看和用mspaint查看方向就不一样。当然为了简单起见,上面的LBitmap中也自动忽略了exif信息及其图像拍摄时的方向。

如果不用读取1/2,1/4,1/8的方法,也可以从exif中来读取缩略图,但这个缩略图一般很小。

说到exif,不得不说一款用perl实现的命令行工具:exiftool。几乎所有的多媒体文件(图像、音乐、视频)都可以用这个工具来查看其有关信息,当然如果不是jpeg文件就是指广义上的"exif"。在git中有已经编译好可执行文件exiftool.exe。使用方法是将这个文件放到系统路径下,然后在想查看的文件路径下执行 exiftool filename

在实现BatchJpeg工具时如果仅仅用上面实现的LBitmap来读取,保存, 将会失去exif信息, 而相片的拍摄时间等信息又很重要, 所以还得用另一个库exiv2来读取写入exif。如果用c#, 用上面的代码exif信息会自动保留下来。默默地向c#致敬。

intelJpeg库

如果在win32环境下对jpeg IO速度有很高的要求,可以使用interlJpeg库,不开源,但提供有*.h,*.lib文件。这个库可以大大提高jpg读取、保存速度。

当时分别用c#和c实现了jpeg批量转化工具, 在处理大量图片时发现c#用时居然只有c的一半。太奇怪了,按理说,c的速度比c#应该快才对啊, 而实事是c慢了这么多。 最后发现问题就在libjpeg上,用了intetJpeg后速度就和c#差不多了(猜想.NET内部也是用intelJpeg来处理jpeg)。

PNG格式

  1. png是一种无损压缩格式, 压缩大概是用行程编码算法。
  2. png可以有透明效果。
  3. png比较适合适量图,几何图。 比如本文中出现的这些图都是用png保存,比用joeg保存体积要小。

再强调一下: jpeg比较适合存储色彩“杂乱”的拍摄图片,png比较适合存储几何特征强的图形类图片。

png可能有24位图和32位图之分。32位图就是带有alpha通道的图片。
将图片a绘制到另一幅图片b上,如果图片a没有alpha通道,那么就会完全将b图片的像素给替换掉。而如果有alpha通道,那么最后覆盖的结果值将是c = a*alpha + b*(1-alpha)
再对LBitmap添加png的支持。
添加接口如下:

static bool ReadPngSize(const wchar_t *path, int *width, int *height);
static bool IsPngFile(const wchar_t *filename);
bool ReadPng(const wchar_t *filename);
bool WritePng(const wchar_t *filename);

具体实现在PngDemo中。有调用libpng库,并且libpng库依赖zlib库(由此可以看出png算法有用到常规的压缩算法)。

GIF格式

上面提到的bmp,jpeg,png图片都只有一帧,而gif可以保存多帧图像,如图所示

libgif库可以用来读取gif图片。gif中有个参数可以控制图片变化的快慢。在程序中可以使用这个参数,也可以自己定义一个参数,这就是为什么gif图片,在不同程序中查看时其变化速度不一样。

webp

google开发的一种有损、透明图片格式,相当于jpeg和png的合体,google声称其可以把图片大小减少40%。

 

一个强大的格式库,CxImage

CxImage几乎可以读取任何图片格式

下面是其头文件中的宏定义:

复制代码
#define CXIMAGE_SUPPORT_WINDOWS 1
#define CXIMAGE_SUPPORT_EXIF    1
#define CXIMAGE_SUPPORT_BMP 1
#define CXIMAGE_SUPPORT_GIF 1
#define CXIMAGE_SUPPORT_JPG 1
#define CXIMAGE_SUPPORT_PNG 1
#define CXIMAGE_SUPPORT_ICO 1
#define CXIMAGE_SUPPORT_TIF 1
#define CXIMAGE_SUPPORT_TGA 1
#define CXIMAGE_SUPPORT_PCX 1
#define CXIMAGE_SUPPORT_WBMP 1
#define CXIMAGE_SUPPORT_WMF 1

#define CXIMAGE_SUPPORT_JP2 1
#define CXIMAGE_SUPPORT_JPC 1
#define CXIMAGE_SUPPORT_PGX 1
#define CXIMAGE_SUPPORT_PNM 1
#define CXIMAGE_SUPPORT_RAS 1

#define CXIMAGE_SUPPORT_MNG 1
#define CXIMAGE_SUPPORT_SKA 1
#define CXIMAGE_SUPPORT_RAW 1
#define CXIMAGE_SUPPORT_PSD 1
复制代码

CxImage在针对特定格式时,也是调用了其它图片库(比如libjpeg, libpng, libtiff)。由于CxImage太过庞大,如果不想使用其全部代码,可以自己从中“偷取”特定图片格式的读取、保存代码。

 

 

版权声明:本文来自xiangism的博客。 仅供参考、学习使用。若需转载或引用本文中的方法,请标明原作者信息 http://www.cnblogs.com/xiangism 。商业用途请联系博主


图像压缩编码基础——笔记整理 图像压缩基础 1)压缩的原因:数字视频码率高达216Mb/s。数据量之大,无论是网络传输,还是存储都构成巨大压力。在保持信号质量的前提,要降低码率及数据量。 2)压缩的原理: 图像信息存在着大量的规律性或相关性,在传输的前一个样值中包含了后一个样值或后一帧中相关位置的样值内容。 3)压缩的目标:①去除信息中的相关性,去除冗余码,使样值独立,降低信息码流。②可以采用一些特殊的编码方式,使平均比特数降低,从而可进一步降低信息流码流。信源编码: 降低码率的过程,称为压缩编码,也叫信源编码。 4)压缩方法:. 阅读详情

相关推荐

【图像编解码】图像编解码技术简介

相关概念:图像采集与ISP色彩空间,从RGB到YUV。视频工程师发现,眼睛对于亮和暗的分辨要比对颜色的分辨更精细一些,也就是说,人眼对色度的敏感程度要低于对亮度的敏感程度将数字视频转换为YUV,用4:2:0采样方式获得1/2的压缩率。所谓编码算法,即寻找规律,构建模型。谁能找到更精准的规律,建立更高效的模型,谁就是厉害的算法。种类描述空间冗余静态图像中存在的主要冗余时间冗余帧序列中相邻帧包含相同的背景或物体构造冗余是不是编码冗余或熵冗余知识冗余由于先验常识导致的信息冗余视觉冗余。

持之以恒 1956

各种图片编码格式详解

感谢xiangism 常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。 图像基本数据结构  要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示   (图1) (图2) 如果有A通道就表明这个图像可以有透明效果。 R,G,B每个分量一般是

格物穷理 5万+

非华为电脑也能用!华为电脑管家完美安装教程来了

GitHub 上有一个开源项目 ​****​,专门解决“非华为设备无法安装华为电脑管家”的问题。它通过智能模拟 + DLL 劫持技术,绕过官方对硬件型号的检测,让你在联想、戴尔、华硕甚至 DIY 主机上也能流畅使用华为电脑管家!⭐ 项目已获 ​700+ Stars​,社区活跃,持续更新,兼容性优秀!科技不该有围墙。如果你成功在非华为电脑上跑起了 PCManager,欢迎在评论区晒出你的设备型号 + 使用体验!也别忘了把这篇推文分享给同样“眼馋”华为生态的朋友 ~📱 ​关注我们。

程序员朱永胜 4928

玩转图片Base64编码

什么是 base64 编码?  图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。 这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的(所有才有了 csssprites 技术的应运而生,但是 csssprites 有自身的局限性,下文会提到)。 没错,不管如何,图片的下载始终都要向服务器...

dianhang3622的博客 946

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1294

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338

android 图片格式,常见图片格式详解

做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。图像基本数据结构要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个...

weixin_32929205的博客 2492

DFRobot MGC3130电容式手势传感器库深度解析

电容式近场感应(Electric Near Field Sensing)是一种非接触、抗干扰的三维空间感知技术,其原理基于人体介电特性对高频电场的扰动响应,具备低功耗、高鲁棒性与零物理接触等核心优势。该技术广泛应用于医疗人机交互、工业HMI、智能家电等对可靠性与环境适应性要求严苛的嵌入式场景。DFRobot_MGC3130库正是面向Microchip MGC3130芯片的工程化实现,封装了I²C驱动、ASU硬件加速调度及多层抽象API,支持手势识别、触控检测与接近唤醒等功能动态切换。结合电容式近场感应与嵌入

weixin_34620658的博客 551

常见图片格式系列详解

常见图片格式系列详解(一)-简介 常见图片格式系列详解(二)--BMP 常见图片格式系列详解(三)---JPEG 常见图片格式系列详解(四)---PNG 常见图片格式系列详解(五)---GIF

517

Workbuddy+DeepSeek V4傻瓜流配置全指南:API接入、模型切换与Agent实战

AI编程助手的核心价值不在于模型本身,而在于如何稳定、安全、低门槛地调用其能力。Agent作为智能体范式,依赖可靠的运行时环境与标准化API通信;DeepSeek V4系列凭借高吞吐、低延迟和强工具调用支持,成为当前生产级Agent的理想引擎。Workbuddy则通过本地配置管理、环境变量注入与UTF-8无BOM容错等工程设计,将复杂部署简化为可复现、可版本化、可团队协同的实践流程。本文聚焦API接入路径下的真实卡点——从Key获取验证、models.json字段语义到沙箱权限控制,覆盖开发者在Window

weixin_33702545的博客 2376

重带电粒子的能量歧离(energy straggling)

能量歧离,Bethe-Bloch

G751888629的博客 2298

【超详解】一文读懂6种常见的主流图片格式区别

在日常生活里,等等这些图片格式随处可见,可你真的对它们了如指掌吗?实际上,除了这三种,还有十多种主流图片格式哦。每种格式都独具特色,也各有其适用的场景。选对图片类型,不但能够增强视觉呈现效果,还能加快加载速度,提升用户的使用感受。本文将会详尽地阐述所有主流图片格式的特性与应用范围。不管你是从事网页设计、新媒体运营、广告制作工作,还是准备参加摄影比赛,掌握图片格式都是必不可少的技能。在图片格式的丰富世界里,JPG、PNG、BMP、GIF、Webp 和 Base64 各有千秋。

weixin_62754939的博客 5479

YOLO11涨点优化:Loss魔改 | WIoU (Wise-IoU) v3版本全面替换,基于动态非单调聚焦机制,让模型更聪明地学习

YOLOv11目标检测中的WIoU v3损失函数改进 本文探讨了YOLOv11目标检测模型中CIoU损失函数的局限性,并提出了WIoU v3改进方案。关键发现包括: CIoU的缺陷:在低质量样本(小目标/遮挡目标)上过度惩罚,导致模型优化方向偏离,小目标AP往往比大目标低30%左右。 WIoU v3的创新: 动态非单调聚焦机制:根据样本"离群度"智能分配梯度 让模型重点优化中等质量样本,减少对低质量样本的无效关注 采用指数移动平均来自适应调整质量评判标准 实际效果:WIoU v3在保持大

2601_95807009的博客 422

前端开发常见图片格式详解

前端开发设计,打交道最多的就是图片啦~今天就来个图片格式讲解,也许一些围绕你的问题可以在这篇文章中找到答案

cychai的专栏 1637

【深度学习新浪潮】2025年末AI产业动态:泡沫争议、技术突破与2026投资机会解析

2025年末的AI产业在波动中完成了阶段性调整,技术突破与政策支持构筑了长期成长基石,而结构性分化与风险隐患则要求投资者更加精准地把握机会。2026年作为“风险资产的黄金年”,AI全产业链将持续成为资本聚焦的核心,无论是算力国产化的技术突破,还是应用场景的规模化落地,都有望催生一批优质企业。投资者需立足产业阶段特征,理性看待短期波动,聚焦核心技术与政策红利,方能在AI产业的成长浪潮中把握确定性机会。

专注:太空算力、AI infra、异构调度、大模型成本工程 1810

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

常见的图片格式以及对应的图像储存格式详解

BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点–占用磁盘空间过大。所以,目前BMP在单机上比较流行。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 7432

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

常见图片格式详解系列(一) ----简介

常见图片格式介绍 信息时代,丰富多彩的世界,我们用图片来感知,来记忆,来存储。多姿多彩的图片格式,你是否了解其中奥妙呢。接下来的系列文章就要带大家详细解析常见图片格式。 (一) BMP BMP格式,是windows的一种位图格式,同时也是一种未经过压缩的格式,所以占用的存储空间比较大,而且对于浏览器等网络应用并不支持,不过对于windows而言,可以搞一张bmp的图像来充当背景,相对比较清晰。 ...

weixin_33816821的博客 306

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

前端架构知识体系:常见图片格式详解与最佳实践

本文系统梳理了前端开发常用的图片格式(JPEG、PNG、GIF、WebP、SVG、BMP),分析其压缩原理、透明支持、动画特性等核心技术特点。重点对比了各格式的优缺点,并针对不同场景给出选择建议:照片类推荐JPEG/WebP,图标LOGO推荐PNG/SVG,动图推荐GIF/WebP动画。最后提供前端优化实践建议,包括格式选择、响应式图片处理、CDN缓存和使用压缩工具等方案,帮助开发者平衡图片质量与加载性能。

用于分享前端相关的知识和架构体系 1008

CLIP图文匹配工具常见问题:上传图片格式和大小限制详解

本文介绍了如何在星图GPU平台上自动化部署CLIP-GmP-ViT-L-14图文匹配测试工具,实现高效的图片与文本匹配分析。该工具支持JPG/PNG格式图片上传,适用于电商商品匹配、内容审核等场景,通过优化图片预处理可显著提升匹配准确率。

weixin_36212459的博客 197

常见图片格式详解(五)-----GIF

前几篇梳理了常见的几种图片格式,想必大家已经稍微摸出了一些门道。图片的组织格式一般都是分为多个数据段,每一个数据段代表着不同的信息,可能是图像宽高等信息,也可能是开始或结束的标识符,亦或是压缩的数据段。GIF格式也不例外,同样也是按照类似的方式组织,本篇简单梳理梳理。 01 文件头 GIF图片格式的文件头类似于其他的图片格式,同样也有文件标识符,“GIF”,在文件中以ASCII码值表示,其后跟着版...

weixin_33811539的博客 511
上一篇: QImage 图像格式小结
下一篇: qt - How can I convert a QImage of format RGB32 to OpenCV::mat? - Stack Overflow
cocoasprite
博客等级 码龄14年 72粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值