几种主流贴图压缩算法的实现原理

TA入门笔记(二十) 你所需要了解的几种纹理压缩格式原理 特定于平台的覆盖的纹理压缩格式 图形3.6 纹理压缩 纹理压缩 纹理压缩是为了解决内存、带宽问题,专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术 图片与纹理 图片格式:图片格式是图片文件的存储格式,通常在磁盘、内存中存储和传输文件时使用,如 jpg、png、gif、bmp等 纹理格式:纹理格式是显卡能直接进行采样的纹理数据格式,通常在向显卡中加载纹理时使用 纹理管线 在拿到一张贴图之后,如果设置了纹理压缩格式,CPU就会按照我们设定的格式进行压缩,传递给GPU. 阅读详情

前段时间一直在搞项目上线前的各种优化,关于贴图压缩这块也是需要针对不同的平台做不同的设置,这里备忘一下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。关于移动平台和硬件设备与压缩格式的对应关系可以参考下这里,基本上比较清楚了。

1. DXTC

DXTC(或BC)为微软为DX而推出的基于block的贴图压缩格式,其主要采用调色板的原理来进行压缩。

BC1:

基于4x4block来进行,不含有alpha通道,每个block内记录两个16bits的颜色做为基准颜色,然后解压时再使用两个基准色调制出另外两个颜色做为块内4个压缩颜色。其计算方式为:

basecolor2 = 2/3 *basecolor0 + 1/3 * basecolor1

basecolro3 = 1/3 *basecolor0 + 2/3 * basecolor1

对于每个块内的texel,存储2bits的索引,用来指向到4个基准颜色中的一个。所以对于BC1的压缩状态为64bits:

  • 32bits:两个RGB565格式的基准颜色;
  • 32bits:16个2bits的索引;

BC3:

在BC1的基础上支持alpha通道。首先,颜色的存储方式与BC1相同,需要64bits;对于alpha部分,使用与颜色部分相同的策略来处理。在block存储两个基准的alpha值,然后在其基础上插值得到其它6个共计8个alpha值,来做为alpha的调色板;然后对于每个texel存储一个3bits的索引,用来指向到这8个alpha中的一个。所以其对应的存储状态为:

  • 32bits:两个RGB565格式的基准颜色;
  • 32bits:16个2bits的颜色索引;
  • 48bits:16个3bits的alpha索引;
  • 16bits:2个8bits的基准alpha;

同时,两个alpha值中的不同的标记情况也对应着不同的插值操作:

若alpha0 > alpha1
alphai = (7 - i) / 7 *alpha0 + i/7 * alpha1;(2<=i<=7);
若alpha0 < alpha1
alphai = (5 - i) / 5 *alpha0 + i/5 * alpha1;(2<=i<=5);

alpha6 = 0;

alpha7=255;

2. ETC

ETC压缩算法采用将图像中的chromatic和luminance分开存储的方式,而在解码时使用luminance对chromatic进行调制进而重现原始图像信息。

ETC也主要有两种方法:ETC1和改进后的ETC2。

ETC1:

采用4x2的block进行分割(原始为4*2*24=192,压缩后为32,压缩率为6):

对于所有图片都使用一个全局的16个组table codeword,每组中有四个数值,且其中是有规律可循的,如下所示:

0123456789101112131415
-8-12-31-34-50-47-80-127-16-24-62-68-100-94-160-254
-2-4-6-12-8-19-28-42-4-8-12-24-16-38-56-84
24612819284248122416385684
81231345047801271624626810094160254

  • 12bits:RBG444的一个basecolor,其在使用是需要被扩展到8bits;每个block使用32bits进行编辑存储;比如对于RGB=(0,2,15) -> (0000 ,0010 , 1111),扩展后为(000000,00100010 , 11111111)->(0 , 34 , 255),扩展方法为直接将原始4位复制后拼接为8位即可;
  • 4bits:用来索引16个table codeword中的一组,比如{-10 , -1 , 4 , 7};
  • 16bits:对于block中的每个pixel分配2bits,就有4个值,用来索引当前像素对应于table codeword中的每个modifier,该modifier需要组成三个通道的调整值,比如,对于某个pixel其对应的modifier索引值为2,也即对应上述table codeword中的4,如此一来该pixel的RGB = (0,34,255) + (4,4,4)=(4,38,259),最后需要将其clamp至0,255,因而即为(4,38,255)。

改进后采用4x4的block进行分割(原始为4*4*24= 384, 压缩后为64, 压缩率为6):

主要针对某两个4x2的block间的颜色差异相对较小,因而可以使用一个更多的bit来表示一个更高精度的basecolor,而另外一个basecolor则在其基础上通过一个bit较小的diff来进行动态计算得来。

对于所有图片都使用一个全局的8个组table codeword,每组中有四个数值:

01234567
-8-17-29-42-60-80-106-183
-2-5-9-13-18-24-33-47
2591318243347
81729426080106183

  • 1bit:用来记录两个字block是采用常规的4*2编码还是基于差值的编码; 
  • 1bit:用来记录4x4的block内两个子block的朝向(可以两个4*2,也可以两个2*4)
  • 32bits:对于16个pixel,每个分配2bits的索引,指向到对应的modifier;
  • 6bits:对于每个子block,有一个3bits的索引,指向8个table codeword中的某一个(由原始的16组codeword缩减为8个);
  • 24bits: 分别对应两个basecolor。对于常规编码时,则是两个RGB444,然后对每个扩展到RGB888;对于差值编码时,则是一个RGB555(精度较高)的basecolor和一个差值RGB333(较低精度),先计算出先求值,然后再扩展。

ETC2:

根据ETC1的实现方式,如果其块内的颜色分布不均匀的话,则其存储的两个basecolor会较远的分布于插值趋线的较远的两侧,进行解压后会得到较低的压缩质量,

 

因而ETC2就是解决如何针对这些较为特殊的颜色分布来选择更加优化的压缩策略。

改进主要针对ETC1中的diff为1的情况下展开,即basecolor为RGB555和差值RGB333,此时另外一个颜色值= RGB555 + dRGB333,而其中的三个通道也是可以独立开来计算的,比如对于红色通道即为R = R5 + dR3,此时,若其中的R5为0且dR3为负值时得到的红色通道值就没有意义,此种情况下就可以对该block重新定义编码方式。

1. 对于红色通道的溢出情况:

  • 1bit: diff mode
  • 8bits: R5,dR3,

剩余64-1-8 =55bits可用来存储其它的信息,但是注意这些其中的R5与dR3之间的溢出方式有不同的16种,而也可以将其转换为对应的数据存储(可以存储4bits的信息),因而整个信息存储位数为59bits.

2. 对于绿色通道的溢出情况:

  • 1bit: diff mode
  • 8bits: R5,dR3
  • 8bits: G5, dG3

剩余64-1-8-8 =47bits可用来存储其它的信息,但是注意此时R通道是没有溢出的,共有256-16种状态,因而其可以存储7bits的信息,G通道是有溢出的,其与R通道的溢出相同,也有16种不同的状态,而也可以将其转换为对应的数据存储(可以存储4bits的信息),所以通过RG两通道的状态可以额外存储的信息bits数为7+4=11bits。所有在这种情况下的信息存储总数量为47+11=58bits。

3. 对于蓝色通道的溢出情况:

  • 1bit: diff mode
  • 8bits: R5,dR3
  • 8bits: G5, dG3
  • 8bits:B5, dB3

剩余64-1-8-8-8=39bits可用来存储其它的信息。同样对于RGB三个通道进行额外的信息存储之后的存储空间为7+7+4=18bits。所以此种情况下的信息存储空间即为:39+18=57bits。

上述操作就巧妙地利用了三个通道中的信息,来得到扩展的存储空间,然后使用这些存储空间来对图像信息进行编码与压缩即可。但注意:这些通过三个通道的溢出情况来确定对应模式,并将其中的溢出状态也利用为对应的存储空间,看起来比较绕,为什么不直接使用1位之外的其它63bits进行数据存储呢?这里主要是因为原始的ETC1采用了三个通道这样的存储方式,而ETC2又必须要兼容ETC1,所以只能使用如此的方法。

接下来即需要合理利用57,58,59这三种情况下的bits存储空间来进行原始数据的压缩。针对颜色分布不均匀的状态,将其细分为了三种不同的分布情况:

T字型分布,一部分颜色沿插值趋线分布,另外的颜色分布于距离较远的位置上,这里将颜色分为不同的两组,每组颜色统计出其对应的basecolor0,basecolor1(对应图中的蓝色点),每个basecolor为RGB444,而对于位于右下方的basecolor0存储一个3bits的索引值,用来索引到一个operator(共有8个),然后得到其周围的两上basecolor3, basecolor4,如此一来就有4个basecolor,而block中的每个pixel均索引到4个basecolor中的一个。因而共需要存储位数为:

  • 12bits: RGB444 basecolor0
  • 12bits: RGB444 basecolor1
  • 3bits: operator
  • 32bits: 对于16个pixel,每个2bits的索引值

共计为:59bits

H字型分布,两部分的颜色均有不同的分布趋向,同样的原理,统计出两组的basecolor,然后使用operator分别对两个basecolor扩展为两个basecolor(注意:对T字型只需要扩展一个),然后用4个新的basecolor来重建block中每个像素的颜色信息。

  • 24bits: RGB444,RGB444两个basecolor
  • 3bits: operator
  • 32bits:对于16个pixel,每个2bits的索引值

平面分布型,其主要针对block块内的颜色分布于4个角落上的情形,如下所示:

这里对应的计算模型也就比较简单直观,可以直接存储C0,CH与CV三个颜色值,可将其处理为三角形(或四边形)上的三个顶点(对应的顶点坐标为00,30,03,33),然后对block内每个pixel点上的颜色通过插值的方法得到即可,这里每个pixel点的坐标可以使用其在block块内的位置即可(如00,01,02,03,10,11,12,13...)。此种情况下不需要其它的信息,所有我们可以直接把bits信息全部用来存储c0,ch,cv三个basecolor即可,在57bits的情况下可得到三个颜色的存储为19,因而每个basecolorr的存储格式为RGB676。

通过上述可以看出,ETC2对于原始图像的分析比ETC1要更为多样,且要兼容ETC1的格式,因而对应的压缩算法会更加复杂。ETC存储格式是没有处理alpha信息,因而其不能直接应用于半透明图像的压缩,但是这里也有可先的方案来在ETC的基础上使用alpha通道:ETC Texture compression and alphachannel handling

3. PVRTC

PVRTC的不是基于block的方式生成的,但是却也可以理解为以block方式组织的。其生成压缩后包含两张(w/4,h/4)大小的缩略图(w,h为原始图片的宽和高,可以理解为第4级的mipmap,但生成过程会比较mipmap的复杂),其中的每个pixel映射并对应到原始图像中的一个64x64的block上;然后使用1张与原始图像大小相同的modulate图,对应的每个pixel占2个bits,也即可对应四种调制方式,通过几种不同的调制方式还原出近似的原始像素值。

压缩后的一个4x4的block中的bits的组成内容为:

  • 1bit:对应的融合方式,透明或不透明;
  • 32bits:对应于16个pixel,每个pixel有2bits的调制因子;
  • 31bits:对应两个缩略图中的该块映射到的两个像素上的颜色,若是透明模式,则两个颜色为RGBA44431,RGBA34431;若是不透明模式,则两个颜色为RGBA5551,RGBA4551;

两种模式下的调制因子分别为:


不透明透明
000/80/8
013/84/8
105/8--
118/88/8

透明情况下的10调制因子会强制设置当前pixel的alpha为0;

通过调节上述两张缩略图的大小,可以相应的改变对应的压缩比,比如由(w/4,h/4)修改为(w/8,h/4),而其它的映射方式不变,即可将压缩比增大一倍。

4. ASTC

ASTC中ARM研发的一种较新的贴图压缩格式,相对于上述几种方法具有较多的优势,其应该会慢慢成为之后移动设备上贴图压缩的主要标准和主流。其主要具有如下的特性:

  1. 较高的灵活性;
  2. 可变的压缩率;
  3. 支持2d/3d贴图;
  4. 适用于移动平台;
  5. 支持LDR/HDR贴图内容;

ASTC同样是基于block的压缩方式,但块的大小却较支持多种尺寸,比如从基本的4x4到12x12,而且块的宽高也不限于pot,比如6x5;每个块内的内容用128bits来进行存储,因而不同的块就对应着不同的压缩率。

对于每个块,同样存储两个插值端点,称为endpoints,但是这里的endpoints不一定是基于颜色的(RGBA),也可以基于layer,比如对于R,G,B,A甚或其中的组合如RG等,这样的话就可以用来对normal map或alpha map进行更好的压缩;

对于块中的每个texel,存储其对应于endpoints的插件weight,但是存储的weight数量可以比texel少,特别是对于规格较大的块(比如12x12),这种情况下会首先对于每个texel通过线性插值得到其对就应的weight,然后再进行颜色的计算;

对于块内颜色分布较为复杂的情况,分析块内颜色的分布,然后做partition,对于每个partition进行分别的处理(与ETC2中将颜色分布对应到具体的预知分布模式中的处理方法不同),分别存储其对应的endpoints;这样一来对于块内的某个texel进行取值时就先定位其对应的partition,然后再计算在其在对应的小子块内的颜色。

块内信息的存储采用了BISE的方式来进行压缩,尽可能的节省对应的存储空间。比如对于一组5个表示范围已知的整型数值,采用BISE存储后可节省两个bits,这样就使用每个块内较大量的数据存储于128bits内成为可能;

对于单layer的一个block内的bits组织大概如下所示:

  • 11bits: 存储weight, height, 以及特殊块的标识,比如void-extent等;
  • 2bits: part数量;
  • 4bits: 存储16种不同的endpoints的模式,比如是LDR或HDR,RGB或是RGBA;
  • 111bit:其中存储endpoints,texel weight以及其它的配置信息,(注意,每种具体的存储大小是可变的,因其采用BISE进行压缩放置);
更多的细节可以看这里

4.1 Bounded Integer sequence encoding

主要是针对范围限定的整数序列进行压缩存储进而节省空间。比如对于三个数4,78,55,其直接用binary的表示为0000100,1001110,0110111,直接存储二进制序列的话需要7bits * 3 = 21bits(在已知最大范围为78的情况下,不需要存储满8bits)。但是能不能在21bits的基础上再减少呢?BISE就是实现这样的目的的。

假设序列的范围为N,对应的bit位数为n:

  • 若N<= 3*2^n-2,则其可用基于5的BISE压缩;
  • 若N<=5*2^n-3,则其可用基于3的BISE压缩。

这里的背后其实是基于这样的一个事实,比如在基于3的压缩中,如果N<=3*2^n-2,那么在N的最高两位bit上,其并不会出现2^2种情况的所有组合(因其大小是受限的),到少11这样的组合就是没有的,否则其对应的值必定大于N。所以BISE压缩就是将受限的整数序列中的前两位数据中的无效bits进行合理使用。比如,在上述4,78,55的序列中,78 <= 5 * 2^4 = 80,所以可以使用基于5的BISE,将三个数的二进制序列构造为{000 0100, 100 1100, 011 0111},高三位的组合为{000,100,011},因这三个3位bits序列中的最大值是5,所以每三个bits最多有5种情况,那么这个高三位组合的序列共可能有5^3=125种组合情况,这样的话就可以使用7bits的空间来存储所有的这些组合,如此一来就可以将原来3*3=9bits的存储空间存储在7bits中,进而达到压缩的目的。


【算法】深入了解数据压缩算法(无损压缩和有损压缩) 数据压缩是计算机领域中一项重要的技术,它可以将数据在占用更小的存储空间或通过更低的传输带宽进行表示和传输,压缩算法基于对数据的统计特性和重复模式的利用,可以分为两大类:无损压缩算法和有损压缩算法。 阅读详情

相关推荐

图形性能优化基石:纹理压缩原理、主流格式与实战工作流详解

在实时图形渲染领域,纹理资源是影响性能的关键因素之一。其核心原理在于通过基于块的固定速率压缩算法,将纹理分割为独立编码的小块,从而实现GPU对任意纹素的快速随机访问,这从根本上解决了内存带宽瓶颈和显存占用问题。这项技术的核心价值在于,它能显著降低内存与显存占用,提升数据加载与采样效率,是保障高帧率、低功耗渲染的工程实践基础。其应用场景广泛覆盖了移动游戏、桌面应用、WebGL及XR等所有实时图形领域。本文聚焦于纹理压缩这一核心优化手段,深入解析了包括BC、ETC、ASTC在内的主流格式选型策略,并提供了从预处

weixin_34116482的博客 271

剖析虚幻渲染体系(12)- 移动端专题Part 2(GPU架构和机制)

剖析虚幻渲染体系

ttod的博客 877

unity图像压缩算法原理

概述 在计算机图形学中,存在许多纹理压缩方案。压缩既减少了纹理内存占用,又降低了使用纹理的带宽要求。本文中,“纹理压缩”与“图像压缩”不同,因为纹理压缩方案的设计允许作为纹理采样的一部分进行有效的随机访问。“图像压缩”可以通过将图像视为一个整体来进一步减少图像冗余,但这样做对于有效的纹理访问操作是不切实际的。本文主要介绍几种unity当前主流的图像压缩算法,并给出推荐理由。 unity图像压缩算法原理概述目的术语算法S3TC1. BC1 with no alpha2. BC1 with alpha3. B

qq_17347313的博客 6230

几种主流贴图压缩算法的实现原理详解

前段时间一直在搞项目上线前的各种优化,关于贴图压缩这块也是需要针对不同的平台做不同的设置,这里备忘一下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。 1. DXTC   DXTC(或BC)为微软为DX而推出的基于block的贴图压缩格式,其主要采用调色板的原理来进行压缩。 BC1: 基于4x4block来进行,不含

痞子龙3D编程 5423

图片压缩技术全解析:从原理到实战的完整解决方案

图片压缩是数字图像处理中的基础技术,通过特定算法减少图片文件存储空间。其核心原理分为有损压缩和无损压缩两种类型:有损压缩通过舍弃人眼不敏感信息实现高压缩比,无损压缩则通过优化编码方式保持图像完整性。在工程实践中,图片压缩技术价值体现在提升页面加载性能、降低存储成本和优化带宽消耗等方面。现代Web开发中,图片压缩广泛应用于电商平台、社交媒体、移动应用等场景,特别是结合Python的Pillow库和Node.js的Sharp库,能够实现高效的批量处理和精准的文件大小控制。本文基于图片压缩和文件大小控制等热词,深

cuemes08808的博客 353

Unity纹理压缩实战指南:ASTC/ETC2/PVRTC格式选择与性能优化

纹理压缩是实时图形渲染中的关键技术,其核心原理是通过基于块的有损压缩算法,将纹理数据以压缩形式存储于显存,GPU采样时无需完全解压,从而大幅节省内存带宽与显存占用。这项技术对于移动端和性能敏感的应用场景尤为重要,能有效解决因纹理资源过大导致的加载卡顿、内存溢出及渲染效率低下等问题。在Unity开发中,开发者需根据目标平台(如Android、iOS、PC)选择适配的硬件压缩格式,例如Android平台常用ETC2与ASTC,iOS平台适用PVRTC,桌面端则主要采用BC系列。正确的格式配置不仅能优化包体大小,

weixin_28040125的博客 287

【Unity优化】贴图压缩

主流的贴图压缩格式 DXT(桌面(Windows, Mac)) ETC1(Andriod) Unity的UGUI中使用ETC1+Alpha的格式 Unity内存优化(贴图层面) PVRTC(苹果IPhone IOS系统) 【参考博文】[Unity3D]关于U3D贴图格式压缩 【参考博文】几种主流贴图压缩算法的实现原理 【参考博文】干货:Unity游戏开发图片纹理压缩方案

VinChy的博客 1053

ASTC贴图压缩:手游性能优化的秘密武器

ASTC(Adaptive Scalable Texture Compression)格式可根据数据进行灵活的自适应压缩,以达到更高的质量,且相较于传统方案拥有性能优势,是贴图压缩的首选格式。接着,将比较ASTC与其他贴图格式的优势,强调其在质量和性能上的优越性。在了解ASTC的基本原理后,本文将深入探讨ASTC的压缩方法以及如何控制压缩的参数,以便开发者能够根据具体需求进行优化。通过有效的压缩技术,开发者可以在保持视觉质量的同时,显著减少内存占用和带宽需求,从而提升游戏的整体性能和用户体验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 804

你所需要了解的几种纹理压缩格式原理

你所需要了解的几种纹理压缩格式原理

whl0071的专栏 1369

大数据领域 Hadoop 数据压缩算法的选择与应用

本文将从“为什么需要压缩”讲起,带你系统理解Hadoop数据压缩的核心价值;然后逐一拆解主流压缩算法(Gzip、Snappy、LZO、Bzip2、LZ4)的原理、特性与适用场景;接着通过关键指标对比(压缩比、速度、可分割性等)建立选型框架;再手把手教你在Hadoop各组件(HDFS、MapReduce、Hive、Spark)中配置和应用压缩;最后通过实战案例(日志数据、结构化数据、归档数据)演示如何根据实际场景选择最优算法,并给出性能优化建议。Hadoop支持自定义压缩编解码器(通过实现。

AI Python 编程之道的博客 844

游戏地图贴图算法,图形算法

基于动态存储结构的地图贴图算法的改进与实现 一片理论文章 还是值得看看的

游戏引擎纹理压缩工具开发:从原理到C++实现与性能优化

纹理压缩是计算机图形学和游戏开发中的一项基础且关键的技术,其核心原理在于通过有损块压缩算法,将纹理划分为固定大小的像素块进行编码和量化,从而在GPU硬件层面实现高效解码。这项技术的核心价值在于能大幅降低纹理内存占用和包体大小,并利用GPU硬件加速提升渲染效率。在游戏引擎、移动应用和高性能图形渲染等应用场景中,纹理压缩是保障流畅体验和跨平台兼容性的基石。本文聚焦于C++游戏引擎的自研需求,深入探讨了如何构建一个高效、自适应的纹理压缩工具链,涵盖了ETC2、ASTC、BCn等主流格式的选型策略,并详细解析了并行

weixin_30315723的博客 417

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2387

纹理理压缩

移动设备的纹理压缩方案 http://gad.qq.com/article/detail/72 Unity的优化系列1 - 图形优化 http://blog.youkuaiyun.com/u010019717/article/details/51465512 几种主流贴图压缩算法的实现原理 http://blog.youkuaiyun.com/bugrunner/article/details/50538770...

weixin_30528371的博客 121

vcenter server6.0上vmware inventory 、virtualvcenter等服务无法开启

描述:一天,vcenter访问不了,因此Windows远程到vcenter server上。相关服务未开启,开启virtualCenter server服务提示相关依赖服务未开启,于是开启依赖项服务Inventory服务报错。然后打算使用 C:\Program Files\VMware\vCenter Server\bin\servcivce-control来开启vmware服务 1....

Pespi_Co1a的博客 3065

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

Hive文件存储格式选型指南:ORC、Parquet与TextFile性能对比

在大数据存储领域,列式存储与行式存储是核心概念。列式存储按列组织数据,支持列裁剪和高效压缩,显著降低I/O与存储成本;行式存储则适合整行读取。在Hive数仓中,ORC和Parquet作为主流列式格式,通过谓词下推和压缩算法优化查询性能,广泛应用于ODS、DWD、DWS等分层场景。TextFile虽可读性好,但性能较差,仅适合数据接入。合理选择存储格式与压缩算法,能有效提升查询效率并降低存储开销。

weixin_33139275的博客 244

从入门到精通:dirmap 高级 Web 目录扫描实战指南

本文提供了一份从环境搭建到高级配置的dirmap Web目录扫描实战指南。详细解析了工具安装、核心配置文件dirmap.conf的深度调优,包括递归扫描、四种扫描模式(字典、爆破、爬虫、Fuzz)的实战应用,并演示了分阶段资产发现的完整工作流程,帮助安全人员高效发现隐藏目录与敏感文件。

rnn9storyteller的博客 479

如何高效实现CNN模型小型化:从架构设计到部署优化的完整指南

AISystem 是一个专注于AI全栈底层技术的开源项目,涵盖AI芯片、AI编译器、AI推理和训练框架等核心领域。其中,CNN模型小型化技术作为边缘设备部署的关键支撑,通过创新架构设计与模型压缩算法,在保持精度的同时显著降低计算资源需求。本文将系统解析MobileNet、EfficientNet等经典轻量化模型的设计原理,以及量化、剪枝等实用压缩技术,帮助开发者快速掌握模型小型化的核心方法。 #

gitblog_00750的博客 630

长上下文技术的底层逻辑:Attention、压缩、缓存与跨页推理

如果把模型的参数视为“固化智能”,动态智能(Dynamic Intelligence)——模型不必依赖训练时的记忆,而是可以随时调用外部信息。这一点正在改变大模型的范式:Prompt 不再是输入,而是“操作系统事件”文档不再是知识,而是“模型的临时记忆”模型不再是一段神经网络,而是一个“具备阅读循环的推理引擎”当我们把上下文从 128K 拉到百万级,我们做的不是扩容,而是让模型第一次拥有阅读、回溯、定位、跨页分析的能力。这是一种新的智能。

aifs2025的博客 996

调节桌面图标大小的方法(编程)

如果你对其他操作系统或编程语言有类似的需求,可以根据具体的情况进行相应的调整和搜索相关的库和方法。在编程中,我们可以使用各种桌面应用程序来调节桌面图标的大小。库提供的函数,我们获取了桌面图标的窗口句柄,并使用Windows消息发送方式设置图标的大小。你可以根据自己的需求修改代码中的图标大小值,并在运行代码后观察桌面图标的变化。函数并传入所需的图标大小,这里设置为48x48像素。首先,我们需要使用Python的第三现的方法。首先,我们需要使用Python的第三方库。首先,我们需要使用实现的方法。

CyberFlare的博客 437

Hive文件存储格式深度解析:从TextFile到ORC的选型与优化

在大数据仓库中,文件存储格式是影响查询性能与存储成本的关键因素。行式存储与列式存储的底层差异决定了IO效率,列存通过按列读取大幅减少数据扫描量,并借助压缩算法进一步提升效率。合理选择存储格式能显著加速分析查询、降低存储开销,广泛应用于Hive、Spark等引擎的ETL与交互式分析场景。本文深入拆解TextFile、ORC、Parquet等六种格式的底层原理与实战选型,助你优化数仓架构。

weixin_29051149的博客 161

YOLOv11-seg改进系列 | 引入CMTFNet(TGRS2023)+TransNeXt(CVPR2024)的C3k2_MSMHSA_CGLU模块,多尺度空洞注意力扩大感受野,增强复杂背景下

本文提出一种改进YOLOv11分割模型的C3k2_MSMHSA_CGLU模块,融合多尺度多头自注意力(MSMHSA)和卷积门控线性单元(CGLU)。MSMHSA通过多尺度空洞卷积提取不同感受野特征,生成跨尺度注意力,降低计算量同时保留全局上下文。CGLU采用卷积门控机制增强特征变换能力。实验表明,改进后模型参数量仅增加7.8%,GFLOPs增加4.2%,显著提升了多尺度目标检测性能,尤其适用于遥感图像等复杂场景。该模块有效解决了原始C3k2感受野有限、缺乏全局建模能力的问题。

qq_44224801的博客 199

图像格式深度解析:从RGB到BMP/JPG/PNG的核心原理与实战

数字图像在磁盘上的存储本质是像素数据与组织规则的结合,RGB作为颜色描述模型,是理解一切图像格式的基础。从BMP的裸数据直读与文件头解析,到JPG利用色度下采样与DCT实现高压缩比,再到PNG通过滤波与DEFLATE实现无损压缩和Alpha透明通道,不同格式在体积、画质与功能上各有取舍。掌握像素顺序(如BGR/RGB)、文件头magic number等底层原理,能有效解决Python读图、格式转换、微信dat恢复等实际工程问题。围绕RGB、BMP、JPG、PNG四种核心格式,讲解原理、适用边界与选型策略,为

weixin_34239169的博客 300

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

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

上一篇: Unity Notes之屏幕触点轨迹的平滑
下一篇: 基于Web3D的VR
BugRunner
博客等级 码龄17年 791粉丝 77原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值