数据压缩 实验五 JPEG原理分析JPEG解码器的调试

数据压缩实验五 JPEG原理分析JPEG解码器的调试 掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。 阅读详情

实验原理

1.JPEG原理及编码流程

  JPEG是常见的一种图像格式,由ISO与CCITT建立并开发,是一个国际数字图像压缩标准。JPEG文件的扩展名为.jpg或.jpeg,用有损方式去除冗余的图像与彩色数据,在获取极高的压缩率同时能展现十分生动的静态图像,JPEG被认为是目前压缩比最高的静态图像,它被广泛地应用于多媒体与网络程序中。
  根据人眼视觉特性:眼睛对亮度的敏感程度要大于对色彩的敏感程度。在图像中,为了利用人类的种视角特性,从而降低数据量,通常将RGB空间表示的彩色图像变换到YCbCr颜色空间中。由于人眼对亮度Y的敏感度大于色差CrCb,因此可以在适当程度上对CrCb进行削弱以达到压缩的目的。由于原始图像是由很多独立的像素组成的,其实人眼对于每个细微像素的分辨能力很弱,只有众多像素集合一块,才能呈现出颜色连续变化的图像,因此图像中相邻两像素点,其彩色分量在很大程度上是接近的。在一幅图像内,包含了各种频率的分量,但大多数分量都属于低频信号,只在占图像区域比例很小的图像边缘的像素才含有高频信号。因此在对图像编码的时候,在图像质量不出现可察觉损失的情况下,对包含信息量大的低频谱区分配较多比特数,对包含信息量较低的高频谱区域分配较少的比特数,就能达到数据压缩目的。
  DCT变换是将图像的色彩空间域转换到频谱域。DCT过程并不产生压缩作用,其作用是将图像数据去相关化、能量集中,去除图像数据内部的相关性后,以便在对这些图像数据分类处理——即对不同的频路部分进行不同的量化。
  量化编码是JPEG编码中产生信息损失的根源,也是图像质量下降的最主要原因。简单的说,就是将频谱领域中的每个值,除以量化表中对应的常数,且四舍五入取最接近的整数,这样会把很多高频的成分四舍五入为0。量化后左上角的值较小,右下角的值较大,这样就保持低频分量、抑制高频分量的目的。这一步在实现的时候会对Y进行细量化,对Cr、Cb采用粗量化,依次来提高压缩比。因此存在两张不同的表。
  经过DCT变换后,图像中的低频分量会集中在左上角,而右下角有较多的0值,因此采用Z字形编排。JPEG算法使用了差分脉冲编码(DPCM)技术,对相邻图像块之间量化DC洗漱的差值进行单独编码,从而再次利用相邻特性简化数据。并对剩余的63个交流(AC)系数进行游程编码。
  为了进一步提高压缩比例,JPEG算法对DPCM编码后的直流系数与游程编码后的交流系数使用Huffman熵编码。使用huffman码表可以简单的查表进行编码。对于AC与DC所采用的码表是不同的,对于色差和亮度的霍夫曼码表也不同。因此应该有四个霍夫曼码表。
JPEG编码流程:
这里写图片描述
JPEG编码流程如图,解码为逆过程
(1)零偏置(level offset)
  对于灰度级是2n的像素,通过减去2n-1,将无符号的整数值变成有符号数;对于n=8,即将0~255的值域,通过减去128,转换为值域在-128~127之间的值。这样做的目的是: 使像素的绝对值出现3位10进制的概率大大减少。
(2)8x8 DCT变换
  DCT变换是指对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,再以8x8的图像块为一个单位进行量化和编码处理。我们可以利用DCT变换去相关的特性,去除冗余信息,提高编码效率。
(3)量化
  我们可以通过量化减少数据的编码位数,提高编码效率;因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值;根据人眼的视觉特性(对低频敏感,对高频不太敏感)对低频分量采取较细的量化,对高频分量采取较粗的量化。
(4)DC系数差分编码
  8×8图像块经过DCT变换之后得到的DC直流系数有两个特点:系数的数值比较大和相邻8×8图像块的DC系数值变化不大:冗余;根据这个特点, JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值DIFF进行编码:DIFFk=DCK−DCK−1,再对DIFF进行Huffman编码。
(5)AC系数的之字形扫描与游程编码
  由于经DCT变换后,系数大多数集中在左上角,即低频分量区,因此采用Z字形按频率的高低顺序读出,可以出现很多连零的机会。可以使用游程编码。尤其在最后,如果都是零,给出EOB (End of Block)即可。zigzag扫描如下图:
  这里写图片描述
  在经过之字形扫描排序后的AC系数,存在很多连0。为了进一步提高编码效率,因此对AC系数进行游程编码(RLC)处理之后,再进一步进行Huffman编码。
(6)AC和DC系数分别进行Huffman编码
  JPEG中共采用了四张Huffman码表:亮度DC、亮度AC、色度DC、色度AC,即分别对图像的亮度和色度,直流和交流数据进行编码处理。
2.JPEG文件格式分析

  JPEG文件的存储格式有很多种,但最常用的是JFIF格式,即JPEG File Interchange Format。JPEG文件大体可以分为两个部分:

(1)标记码:由两个字节构成,其中,前一个字节是固定值0XFF代表了一个标记码的开始,后一个字节不同的值代表着不同的含义。需要提醒的是,连续的多个0XFF可以理解为一个0XFF,并表示一个标记码的开始。另外,标记码在文件中一般是以标记代码的形式出现的。例如,SOI的标记代码是0XFFD8,即,如果JPEG文件中出现了0XFFD8,则代表此处是一个SOI标记。

(2)压缩数据:一个完整的两字节标记码的后面,就是该标记码对应的压缩数据了,它记录了关于文件的若干信息。
3.JPEG解码流程

1 .读取文件
2. 解析 Segment Marker
  解析 SOI
  解析 APP0:检查标识“ JFIF”及版本,得到一些参数
  解析 DQT: 得到量化表长度(可能包含多张量化表);
       得到量化表的精度;
       得到及检查量化表的序号(只能是 0 —— 3);
       得到量化表内容( 64 个数据)
  解析 SOF0:得到每个 sample 的比特数、长宽、颜色分量数
       得到每个颜色分量的 ID、水平采样因子、垂直采样因子、使用的量化表序号(与 DQT 中序号对应)
  解析 DHT:得到 Huffman 表的类型( AC、 DC)、序号,依据数据重建 Huffman 表
  解析 SOS:得到解析每个颜色分量的 DC、 AC 值所使用的 Huffman 表序号(与 DHT中序号对应)
3. 依据每个分量的水平、垂直采样因子计算 MCU 的大小,并得到每个 MCU 中 8*8宏块的个数
4. 对每个 MCU 解码(依照各分量水平、垂直采样因子对 MCU 中每个分量宏块解码)
  对每个宏块进行 Huffman 解码,得到 DCT 系数
  对每个宏块的 DCT 系数进行 IDCT,得到 Y、 Cb、 Cr
  遇到 Segment Marker RST 时,清空之前的 DC DCT 系数
5. 解析到 EOI,解码结束
6. 将 Y、 Cb、 Cr 转化为需要的色彩空间并保存。

代码分析

1.逐步调试JPEG解码器程序。将输入的JPG文件进行解码,将输出文件保存为可供YUVViewer观看的YUV文件。
tinyjpeg.h中增加YUV类型

enum tinyjpeg_fmt {
   TINYJPEG_FMT_GREY = 1,
   TINYJPEG_FMT_BGR24,
   TINYJPEG_FMT_RGB24,
   TINYJPEG_FMT_YUV420P,
   //Add by ts
   TINYJPEG_FMT_YUV,
   //End 
};

loadjpeg.c中判断输出格式时增加YUV类型

switch (output_format)
   {
    case TINYJPEG_FMT_RGB24:
    case TINYJPEG_FMT_BGR24:
      write_tga(outfilename, output_format, width, height, components);
      break;
    case TINYJPEG_FMT_YUV420P:
      write_yuv(outfilename, width, height, components);
      break;
      //Add by ts
    case TINYJPEG_FMT_YUV:
        write_YUV(outfilename, width, height, components);
        break;
    //End
    case TINYJPEG_FMT_GREY:
      write_pgm(outfilename, width, height, components);
      break;
   }

loadjpeg.c的main函数中增加相应代码

input_filename = argv[current_argument];
  if (strcmp(argv[current_argument+1],"yuv420p")==0)
    output_format = TINYJPEG_FMT_YUV420P;
  else if (strcmp(argv[current_argument+1],"rgb24")==0)
    output_format = TINYJPEG_FMT_RGB24;
  else if (strcmp(argv[current_argument+1],"bgr24")==0)
    output_format = TINYJPEG_FMT_BGR24;
  else if (strcmp(argv[current_argument+1],"grey")==0)
    output_format = TINYJPEG_FMT_GREY;
  //Add by ts
  else if (strcmp(argv[current_argument+1],"yuv")==0)
    output_format = TINYJPEG_FMT_YUV;
  //End
  else
    exitmessage("Bad format: need to be one of yuv420p, rgb24, bgr24, grey\n");
  output_filename = argv[current_argument+2];

在tinyjpeg.c增加case TINYJPEG_FMT_YUV项

decode_mcu_table = decode_mcu_3comp_table;//
  switch (pixfmt) {
     case TINYJPEG_FMT_YUV420P:
       ……;
     case TINYJPEG_FMT_RGB24:
       ……;
     case TINYJPEG_FMT_BGR24:
       ……;
     case TINYJPEG_FMT_GREY:
       ……;

    //Add by ts
     case TINYJPEG_FMT_YUV:
       colorspace_array_conv = convert_colorspace_yuv420p;
       if (priv->components[0] == NULL)
     priv->components[0] = (uint8_t *)malloc(priv->width * priv->height);
       if (priv->components[1] == NULL)
     priv->components[1] = (uint8_t *)malloc(priv->width * priv->height/4);
       if (priv->components[2] == NULL)
     priv->components[2] = (uint8_t *)malloc(priv->width * priv->height/4);
       bytes_per_blocklines[0] = priv->width;
       bytes_per_blocklines[1] = priv->width/4;
       bytes_per_blocklines[2] = priv->width/4;
       bytes_per_mcu[0] = 8;
       bytes_per_mcu[1] = 4;
       bytes_per_mcu[2] = 4;
       break;
    //End
     default:

2.程序调试过程中,应做到:
2.1 理解程序设计的整体框架
2.2 理解以下三个结构体的设计目的

/* 存放DC系数、AC系数的哈夫曼码表 */
struct huffman_table
{
  /* Fast look up table, using HUFFMAN_HASH_NBITS bits we can have directly the symbol,
   * if the symbol is <0, then we need to look into the tree table */
  short int lookup[HUFFMAN_HASH_SIZE];
  /* code size: give the number of bits of a symbol is encoded */
  unsigned char code_size[HUFFMAN_HASH_SIZE];
  /* some place to store value that is not encoded in the lookup table 
   * FIXME: Calculate if 256 value is enough to store all values
   */
  uint16_t slowtable[16-HUFFMAN_HASH_NBITS][256];
};
/* 存放8*8数据块组成的MCU数据值 */
struct component 
{
  unsigned int Hfactor;//水平采样
  unsigned int Vfactor;//垂直采样
  float *Q_table;       /* Pointer to the quantisation table to use */
  struct huffman_table *AC_table;//交流huffman结构体
  struct huffman_table *DC_table;//直流huffman结构体
  short int previous_DC;    /* Previous DC coefficient */
  short int DCT[64];        /* DCT coef */
#if SANITY_CHECK//SANITY_CHECK为1
  unsigned int cid;//???
#endif
};
/* 包含struct huffman_table和struct component,是一个综合的结构体 */
struct jdec_private/***/
{
  /* Public variables */
  uint8_t *components[COMPONENTS];
  unsigned int width, height;   /* Size of the image */
  unsigned int flags;

  /* Private variables */
  const unsigned char *stream_begin, *stream_end;//数据流开始、结束指针
  unsigned int stream_length;//数据流长度

  const unsigned char *stream;  /* Pointer to the current stream */
  unsigned int reservoir, nbits_in_reservoir;

  struct component component_infos[COMPONENTS];
  float Q_tables[COMPONENTS][64];       /* quantization tables YUV*/
  struct huffman_table HTDC[HUFFMAN_TABLES];    /* DC huffman tables   */
  struct huffman_table HTAC[HUFFMAN_TABLES];    /* AC huffman tables   */
  int default_huffman_table_initialized;
  int restart_interval;
  int restarts_to_go;               /* MCUs left in this restart interval */
  int last_rst_marker_seen;         /* Rst marker is incremented each time */

  /* Temp space used after the IDCT to store each components */
  uint8_t Y[64*4], Cr[64], Cb[64];

  jmp_buf jump_state;
  /* Internal Pointer use for colorspace conversion, do not modify it !!! */
  uint8_t *plane[COMPONENTS];

};

2.3 理解在视音频编解码调试中TRACE的目的和含义
会打开和关闭TRACE
会根据自己的要求修改TRACE

实验结果

1.原始图片
这里写图片描述
2.TXT输出结果
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
3.输出的DC、AC图像

图像freq
DC这里写图片描述这里写图片描述
AC这里写图片描述这里写图片描述
JPEG编码压缩率调整 图像质量 u32Qfactor:量化表因子范围为[1, 99],u32Qfactor 越大,量化表中的量化系数越小,得到的图像质量会更好,同时,编码压缩率更低。同理 u32Qfactor 越小,量化表中的量化系数越大,得到的图像质量会更差,同时,编码压缩率更高。具体的 u32Qfactor 与量化表的关系请见 RFC2435 标准。 量化表的的量化系数越大,得到的量化系数就越小,高频信息消失的更多。因此量化表因子其实就是控制图像所保留各个频率信息的范围,如果想压缩更低,那就保留频率信息越少。 ... 阅读详情

相关推荐

数据压缩【实验五】JPEG原理分析及JPEG解码器的调试

文章目录一、实验目的二、实验原理 一、实验目的 掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。 二、实验原理

weixin_48930495的博客 1277

JPEG格式压缩算法

一、JPEG原理概述 二、JPEG原理详细分析及压缩算法过程 1、Color Model Conversion (色彩模型) 2、DCT (Discrete Cosine Transform 离散余弦变换) 3、数据量化 4、重排列 DCT 结果 5、基于差分脉冲编码调制的DC编码 6、RLE编码 7、范式Huffman编码 8、JPEG压缩过程总结 ...

a5615024的博客 1881

数据压缩实验五——JPEG原理分析及JPEG解码器的调试

实验原理概述JPEG是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。JPEG图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。 在ISO公布的JPEG标准方案中,包含了两种压缩方式。一种是基于DCT变换的有损压缩编码方式,它包含了基本功能和扩展系统两部分。有损压缩编码去除冗余的图

willshant的博客 915

影像算法解析——JPEG 压缩算法

影像算法解析——JPEG 压缩算法 如云般飘过 调色师 / 剪辑师 / Mac重度用户/ 摄影爱好者 309 人赞同了该文章 由于视频是由一帧帧图像构成的,研究视频编码首先先要研究图像编码。这篇文章就详细说一下 JPEG 是如何压缩一个图像的。 先简单介绍一下 JPEG(JointPhotographicExpertsGroup,联合图像专家小组):此团队创立于1986年,其于1992年发布的 JPEG 标准在1994年获得了 ISO 10918-1 的认定,成为了图片压缩标准。 JP...

hi_zhengjian的专栏 4917

数据压缩实验五:JPEG原理分析及JPEG解码器的调试

一、JPEG原理分析 编码部分 1.零偏置(Level Offset) 对于灰度级是 2n\ 2^n 2n的像素,通过减去  2n−1\ 2^{n-1} 2n−1,将无符号的整数值变成有符号数。 例:对于 n=8 ,即将 0~255 的值域,通过减去 128 ,转换为值域在[128 ~127] 内。 2.DCT变换 DCT变换的全称是离散余弦变换(DCT),能够将空域的信号转换到频域上。 图像的存储过程中,高频部分往往占用了很大的空间,而低频部分却占用的不多,因此,

m0_46338411的博客 1008

【数据压缩】实验五——JPEG原理分析及JPEG解码器的调试

JPEG原理分析及JPEG解码器的调试

weixin_49587657的博客 701

JPEG文件格式及其解码流程

jpeg是1992年发布的图片编码标准,20多年过去了,它在如今图片压缩领域仍然占据着重要地位。本文主要针对标准ISO/IEC 10918-1 分析jpeg文件结构以及解码流程。 1.文件结构 1.1 基本单元 Jpeg文件由一个一个段来存储。段的一般结构为:前两个字节为段标识(第一个字节为0xff,第二个字节对于不同段,这个值是不同的),后面紧跟两个字节为该段的长度,该长度不包含段标识的两个字节。 名称 字节数 数据 说明 段标识 1 0xff 每个段的开始标识 段类型 1 段类型标

qq_42139383的博客 8504

数据压缩实验五|JPEG原理分析及JPEG解码器的调试

JPEG原理分析及JPEG解码器的调试 实验目的 掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。 实验设备 安装Windows和Visual Studio软件的个人计算机 实验内容 1.JPEG编解码原理 JPEG编码的过程如上图所示。解码是编码的逆过程。 2.JPEG文件格式 见附件:JPEG解码调试报告。 实验步骤 1.逐步调试JPEG解码器程序。将输入的JPG文件进行解码,将输出文件保存为可供YUVViewer观看的YUV文件。 2.

m0_55764256的博客 275

数据压缩 实验五 JPEG原理分析 JPEG解码器的调试

实验原理1.JPEG原理及编码流程  JPEG是常见的一种图像格式,由ISO与CCITT建立并开发,是一个国际数字图像压缩标准。JPEG文件的扩展名为.jpg或.jpeg,用有损方式去除冗余的图像与彩色数据,在获取极高的压缩率同时能展现十分生动的静态图像,JPEG被认为是目前压缩比最高的静态图像,它被广泛地应用于多媒体与网络程序中。

Hou_Violet的博客 605

数据压缩原理 实验五 JPEG原理分析及JPEG解码器的调试

数据压缩原理 实验五 JPEG原理分析及JPEG解码器的调试

liu_yuchang的博客 480

数据压缩 | 实验五_JPEG原理分析及JPEG解码器的调试

数据压缩 | MPEG音频编码实验二、实验要求(基本) 二、实验要求(基本) ◼ 理解程序设计的整体框架 ◼ 理解感知音频编码的设计思想 两条线 时-频分析的矛盾! ◼ 理解心理声学模型的实现过程 临界频带的概念 掩蔽值计算的思路 ◼ 理解码率分配的实现思路 主页 ◼ 输出音频的采样率和目标码率 ◼ 选择三个不同特性的音频文件 噪声(持续噪声、突发噪声) 音乐 混合 ◼ 某个数据帧,输出 该帧所分配的比特数 该帧的比例因子 该帧的比特分配结果 ...

xxxx4moon_的博客 223

数据压缩 实验五 JPEG原理分析及JPEG解码器的调试

JPEG原理分析及JPEG解码器的调试 JPEG文件格式 JPEG( Joint Photographic Experts Group)即联合图像专家组,是用于连续色调静态图像压缩的一种标准,文件后缀名为.jpg或.jpeg,是最常用的图像文件格式。其主要是采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码的联合编码方式,以去除冗余的图像和彩色数据,属于有损压缩格式,它能够将图像压缩在很小的储存空间,一定程度上会造成图像数据的损伤。 JPEG编解码原理 上图为JPEG编码的过程,JPEG解码为其

CurtiaYu的博客 415

数据压缩(十一)——JPEG原理分析及JPEG解码器调试

文章目录一、JPEG编码原理二、JPEG解码原理三、调试JPEG解码器程序2.1 理解程序设计的整体框架2.2 理解三个结构体的设计目的2.2.1 struct huffman_table2.2.2 struct component2.2.3 struct jdec_private2.3 理解在视音频编解码调试中TRACE的目的和含义四、修改JPEG解码器将输出文件保存为YUV文件以TXT文件输出所有量化矩阵和HUFFMAN码表输出DC图像并统计其概率分布输出某一个AC值图像并统计其概率分布 一、JPEG

CRR的博客 2769

数据压缩实验五 JPEG原理分析及JPEG解码器的调试

一、实验原理 1、JPEG图像压缩标准基本介绍       JPEG 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。JPEG图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。       JPEG本身只有描述如何将一个影像转换为字节的数据串流(streaming),但并没

zgyggy的博客 2196

存内计算路线再获加持,清华存内芯片登Science

通过这种方法,可以比较有效的控制二氧化铪忆阻层中的微观变化,以及内部的温度和电场,使得器件具有非常优异的电学特性,而且可以在工厂里大规模生产,推动了高性能忆阻器阵列的诞生。团队搭建了全硬件构成的完整存算一体系统,如下图7所示,在系统里集成了多个忆阻器阵列,并在该系统上高效运行了卷积神经网络算法,成功验证了图像识别功能,证明了存算一体架构全硬件实现的可行性,并且成功实现了以更小的功耗和更低的硬件成本完成复杂的计算[6]。根据测试,在一般神经网络中权重更新的最后阶段,调整步长非常接近0,如图9(C)所示,

PXX12345678的博客 1555

【实战指南】Green Hills MULTI-IDE 从零安装到工程创建全流程

本文详细介绍了Green Hills MULTI-IDE从零安装到工程创建的全流程,包括系统要求检查、安装步骤、工程配置及调试技巧。特别适合嵌入式开发新手快速上手这款专业IDE工具,提升开发效率。

weixin_28740299的博客 474

数据压缩实验五:JPEG原理分析及解码器调试

JPEG是JointPhotographicExpertsGroup的缩写,即ISO和IEC联合图像专家组,负责静态图像压缩标准的规定。这个专家组开发的算法称为JPEG算法,并已成为当前的通用标准,即JPEG标准。遵照JPEG标准建立的图像文件使用的格式称为JFIF格式,文件名称的后缀为“.jpg”或者“.jpeg”。JPEG主要是采用预测编码(DPCM)、离散余弦变换(DCT)以及熵编码的联合编码方式,以去除冗余的图像和彩色数据,属于有损压缩格式,它能够将图像压缩在很小的储存空间,一定程度上会造成图。..

qq_51210935的博客 840

Auto.js凉了之后,我们该用啥?AutoX.js保姆级环境搭建与第一个脚本实战(2024最新)

本文详细介绍了AutoX.js作为Auto.js替代方案的环境搭建与脚本开发实战指南。从技术生态现状分析到2024最新环境配置,再到编写第一个实用脚本和进阶调试技巧,帮助开发者无缝迁移至AutoX.js平台。特别适合需要手机自动化的JavaScript开发者,涵盖从基础到企业级应用的全套解决方案。

weixin_28737073的博客 391

数据压缩原理与应用 实验五 JPEG 原理分析及 JPEG 解码器的调试

一、基本原理1.JPEG文件格式介绍1.1 SOI(Start of Image)图像开始 标记代码:固定值0xFFD8(2字节) 1.2 APP0(Application)应用程序保留标记 标记代码 :固定值0xFFE0(2字节) 包含9个具体字段: 序号 内容 字节数 取值 1 数据长度 2字节 ①~⑨9个字段的总长度

ttsss99的博客 705

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 802

开源Agent Skill让AI画图不再翻车:从数据到专业图表全流程

在人工智能与数据可视化交叉领域,让模型直接生成图表往往伴随字体乱码、坐标轴密集、配色失调等高频问题。Agent Skill作为一种可复用的能力封装机制,将专业绘图流程固化为标准化操作手册,从数据特征识别、图表类型决策到代码生成与渲染校验形成完整闭环。它不再依赖临时提示词的一次性发挥,而是让AI按领域专家的思维执行任务,显著提升出图质量与稳定性。这种能力在数据分析报告、运营日报、论文插图等场景具有广泛实用价值,尤其适用于需要快速产出规范化图表的工作流。本文即从这一技术范式出发,介绍一个GitHub上获得2.5

weixin_33851429的博客 954
上一篇: 数据压缩 实验四 DPCM压缩系统的实现和分析
下一篇: 数据压缩 实验六 MPEG音频编码实验
MayNine
博客等级 码龄10年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值