ProcessOn流程图版本丢失找回方法

      遇到过一次使用processOn好不容易辛苦画的图,网页刷新之后流程图 不是期望的修改版本,心里一下慌了起来,真心不想再花费精力再画一次,还好processOn可以恢复期望的历史版本。干货如下:

1. 打开网页版processOn, 右边显示栏,有一个“历史版本”, 如图:

2. 打开历史版本,可以看到不同时间节点的多个版本,单击可以查看对应版本的 流程图:

 3. 选择自己期望的 对应流程图版本,点击右上角,还原到此版本:

点击确定就大功告成啦,啦啦啦啦, 就是如此简单:

哈哈哈哈,一下子就放心啦,记录下来,希望也可以帮到你们。 

### JPEG 图像压缩编码与解码过程详解 #### 一、JPEG图像压缩编码流程 JPEG图像的压缩主要分为以下几个阶段: - **颜色空间转换** 对于彩色图像,通常先从RGB色彩模型转换到YCbCr色彩模型。这是因为人类视觉系统对亮度(Y)的变化更为敏感,而对色度(Cb, Cr)变化不那么敏感,在后续处理中可以针对不同分量采取不同的采样率以减少数据量[^1]。 - **子采样** 颜色通道可能被降采样,比如常见的4:2:0模式下,每两个像素共享相同的色差样本,进一步减少了表示相同区域所需的数据量。 - **离散余弦变换(DCT)** 将每个8×8像素块经过DCT变换映射至频率域,使得大部分能量集中于少数低频系数之中,特别是位于矩阵左上角的位置;其余高频成分则往往接近零或很小[^5]。 - **量化** 应用量化表对DCT系数进行舍入操作,这是造成信息丢失的关键环节之一。量化步长越大,则损失越多但压缩效率越高。此步骤极大地降低了数值范围并引入了不可逆的信息缩减。 - **熵编码** 经过上述预处理之后得到的一系列量化后的DC/AC系数序列会被采用霍夫曼编码或者算术编码等方式来进行无损压缩,从而最终形成紧凑的比特流形式用于存储或传输。 ```python import numpy as np from scipy.fftpack import dct,idct def apply_dct(image_block): """Apply DCT to an image block.""" return dct(dct(image_block.T, norm='ortho').T, norm='ortho') def quantize(block,dqt_table): """Quantization of a transformed block using the provided table""" return (block / dqt_table).round().astype(int) # Example usage with dummy data and tables. dummy_image_block=np.random.rand(8,8)*255 # A random 8x8 pixel intensity matrix simulating part of an image dqt_example=np.array([[16,11,10,16,24,40,51,61], [12,12,14,19,26,58,60,55], ...]) # Simplified example Q-table; actual ones vary by quality setting. transformed=apply_dct(dummy_image_block) quantized=quantize(transformed,dqt_example) print("Transformed Block:\n",transformed,"\n\nQuantized Coefficients:\n",quantized) ``` #### 二、JPEG图像解码恢复流程 当接收到压缩过的JPEG文件时,接收端按照相反顺序执行一系列反向运算来重建原始图片近似版本: - **熵解码** 利用先前定义好的统计特性解析出之前经由霍夫曼或其他方法编译而成的短字节串所代表的实际整数列表——即那些曾经被量化的DCT系数组合[^3]。 - **去量化** 使用相应的除法计算逆转之前的乘法规则,尽可能精确地还原每一个原本存在的浮点型DCT系数值。 - **IDCT(Inverse Discrete Cosine Transform)** 执行逆离散余弦变换把重构出来的频谱图重新变换成空间域内的灰度级分布情况,获得初步复原的小方格阵列。 - **重排与合成** 把所有单独处理完毕的小单元拼接起来构成完整的画面,并视具体情况决定是否需要做额外的颜色校正等工作以便更好地匹配源素材特征。 ```python def dequantize(q_block,q_table): """Dequantization process reversing previous step's effect.""" return q_block*q_table.astype(float) def inverse_dct(frequencies): """Perform Inverse DCT on frequency domain coefficients.""" return idct(idct(frequencies.T,norm="ortho").T,norm="ortho") recovered_frequencies=dequantize(quantized,dqt_example) restored_image_part=inverse_dct(recovered_frequencies) print("\nRestored Image Part from Quantized Data:\n",restored_image_part) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值