import numpy as np
from bitstring import BitArray
from DC_AC_extract import *
from bitarray import *
import sys
# dc分量,亮度的哈夫曼表
# 见pdf 这里的01234是位数的意思
'''
dc差分编码后一个值是-8,则表示为1010111
8的二进制是1000,经过decompose_int_to_size_value函数返回了4和0111
然后4的哈夫曼是101
所以 -8就变味了1010111
'''
huffman_table_DC = {
'0':bitarray('00'),
'1':bitarray('010'),
'2':bitarray('011'),
'3':bitarray('100'),
'4':bitarray('101'),
'5':bitarray('110'),
'6':bitarray('1110'),
'7':bitarray('11110'),
'8':bitarray('111110'),
'9':bitarray('1111110'),
'a':bitarray('11111110'),
'b':bitarray('111111110')
}
# ac分量,Cb和Cr的哈夫曼表
huffman_table_AC = {
(0,0): bitarray('1010'),
(0,1): bitarray('00'),
(0,2): bitarray('01'),
(0,3): bitarray('100'),
(0,4): bitarray('1011'),
(0,5): bitarray('11010'),
(0,6): bitarray('1111000'),
(0,7): bitarray('11111000'),
(0,8): bitarray('1111110110'),
(0,9): bitarray('1111111110000010'),
(0,10):bitarray('1111111110000011'),
(1,1): bitarray('1100'),
(1,2): bitarray('11011'),
(1,3): bitarray('1111001'),
(1,4): bitarray('111110110'),
(1,5): bitarray('11111110110'),
(1,6): bitarray('1111111110000100'),
(1,7): bitarray('1111111110000101'),
(1,8): bitarray('1111111110000110'),
(1,9): bitarray('1111111110000111'),
(1,10):bitarray('1111111110001000'),
(2,1): bitarray('11100'),
(2,2): bitarray('11111001'),
(2,3): bitarray('1111110111'),
(2,4): bitarray('111111110100'),
(2,5): bitarray('1111111110001001'),
(2,6): bitarray('1111111110001010'),
(2,7): bitarray('1111111110001011'),
(2,8): bitarray('1111111110001100'),
(2,9): bitarray('1111111110001101'),
(2,10):bitarray('1111111110001110'),
(3,1): bitarray('111010'),
(3,2): bitarray('111110111'),
(3,3): bitarray('111111110101'),
(3,4): bitarray('1111111110001111'),
(3,5): bitarray('1111111110010000'),
(3,6): bitarray('1111111110010001'),
(3,7): bitarray('1111111110010010'),
(3,8): bitarray('1111111110010011'),
(3,9): bitarray('1111111110010100'),
(3,10):bitarray('1111111110010101'),
(4,1): bitarray('111011'),
(4,2): bitarray('1111111000'),
(4,3): bitarray('1111111110010110'),
(4,4): bitarray('1111111110010111'),
(4,5): bitarray('1111111110011000'),
(4,6): bitarray('1111111110011001'),
(4,7): bitarray('1111111110011010'),
(4,8): bitarray('1111111110011011'),
(4,9): bitarray('1111111110011100'),
(4,10):bitarray('1111111110011101'),
(5,1): bitarray('1111010'),
(5,2): bitarray('11111110111'),
(5,3): bitarray('1111111110011110'),
(5,4): bitarray('1111111110011111'),
(5,5): bitarray('1111111110100000'),
(5,6): bitarray('1111111110100001'),
(5,7): bitarray('1111111110100010'),
(5,8): bitarray('1111111110100011'),
(5,9): bitarray('1111111110100100'),
(5,10):bitarray('1111111110100101'),
(6,1): bitarray('1111011'),
(6,2): bitarray('111111110110'),
(6,3): bitarray('1111111110100110'),
(6,4): bitarray('1111111110100111'),
(6,5): bitarray('1111111110101000'),
(6,6): bitarray('1111111110101001'),
(6,7): bitarray('1111111110101010'),
(6,8): bitarray('1111111110101011'),
(6,9): bitarray('1111111110101100'),
(6,10):bitarray('1111111110101101'),
(7,1): bitarray('11111010'),
(7,2): bitarray('111111110111'),
(7,3): bitarray('1111111110101110'),
(7,4): bitarray('1111111110101111'),
(7,5): bitarray('1111111110110000'),
(7,6): bitarray('1111111110110001'),
(7,7): bitarray('1111111110110010'),
(7,8): bitarray('1111111110110011'),
(7,9): bitarray('1111111110110100'),
(7,10):bitarray('1111111110110101'),
(8,1): bitarray('111111000'),
(8,2): bitarray('111111111000000'),
(8,3): bitarray('1111111110110110'),
(8,4): bitarray('1111111110110111'),
(8,5): bitarray('1111111110111000'),
(8,6): bitarray('1111111110111001'),
(8,7): bitarray('1111111110111010'),
(8,8): bitarray('1111111110111011'),
(8,9): bitarray('1111111110111100'),
(8,10):bitarray('1111111110111101'),
(9,1): bitarray('111111001'),
(9,2): bitarray('1111111110111110'),
(9,3): bitarray('1111111110111111'),
(9,4): bitarray('1111111111000000'),
(9,5): bitarray('1111111111000001'),
(9,6): bitarray('1111111111000010'),
(9,7): bitarray('1111111111000011'),
(9,8): bitarray('1111111111000100'),
(9,9): bitarray('1111111111000101'),
(9,10):bitarray('1111111111000110'),
(10,1): bitarray('111111010'),
(10,2): bitarray('1111111111000111'),
(10,3): bitarray('1111111111001000'),
(10,4): bitarray('1111111111001001'),
(10,5): bitarray('1111111111001010'),
(10,6): bitarray('1111111111001011'),
(10,7): bitarray('1111111111001100'),
(10,8): bitarray('1111111111001101'),
(10,9): bitarray('1111111111001110'),
(10,10):bitarray('1111111111001111'),
(11,1): bitarray('1111111001'),
(11,2): bitarray('1111111111010000'),
(11,3): bitarray('1111111111010001'),
(11,4): bitarray('1111111111010010'),
(11,5): bitarray('1111111111010011'),
(11,6): bitarray('1111111111010100'),
(11,7): bitarray('1111111111010101'),
(11,8): bitarray('1111111111010110'),
(11,9): bitarray('1111111111010111'),
(11,10):bitarray('1111111111011000'),
(12,1): bitarray('1111111010'),
(12,2): bitarray('1111111111011001'),
(12,3): bitarray('1111111111011010'),
(12,4): bitarray('1111111111011011'),
(12,5): bitarray('1111111111011100'),
(12,6): bitarray('1111111111011101'),
(12,7): bitarray('1111111111011110'),
(12,8): bitarray('1111111111011111'),
(12,9): bitarray('1111111111100000'),
(12,10):bitarray('1111111111100001'),
(13,1): bitarray('11111111000'),
(13,2): bitarray('1111111111100010'),
(13,3): bitarray('1111111111100011'),
(13,4): bitarray('1111111111100100'),
(13,5): bitarray('1111111111100101'),
(13,6): bitarray('1111111111100110'),
(13,7): bitarray('1111111111100111'),
(13,8): bitarray('1111111111101000'),
(13,9): bitarray('1111111111101001'),
(13,10):bitarray('1111111111101010'),
(14,1): bitarray('1111111111101011'),
(14,2): bitarray('1111111111101100'),
(14,3): bitarray('1111111111101101'),
(14,4): bitarray('1111111111101110'),
(14,5): bitarray('1111111111101111'),
(14,6): bitarray('1111111111110000'),
(14,7): bitarray('1111111111110001'),
(14,8): bitarray('1111111111110010'),
(14,9): bitarray('1111111111110011'),
(14,10):bitarray('1111111111110100'),
(15,0):bitarray('11111111001'),
(15,1):bitarray('1111111111110101'),
(15,2):bitarray('1111111111110110'),
(15,3):bitarray('1111111111110111'),
(15,4):bitarray('1111111111111000'),
(15,5):bitarray('1111111111111001'),
(15,6):bitarray('1111111111111010'),
(15,7):bitarray('1111111111111011'),
(15,8):bitarray('1111111111111100'),
(15,9):bitarray('1111111111111101'),
(15,10):bitarray('1111111111111110'),
# trouble:不会出现16,1 18,2这种吗,如何保证的
(16,1):bitarray('111111111111111111000'),
(17,1):bitarray('111111111111111111001'),
(18,1):bitarray('111111111111111111010'),
(19,1):bitarray('111111111111111111011'),
(20,1):bitarray('111111111111111111100'),
(21,1):bitarray('111111111111111111101'),
(22,1):bitarray('111111111111111111110'),
}
#not the pythonic way of writing this, but at least it works
def DPCM(dc):
'''
差分编码 \n
dc是一个矩阵 1*n的矩阵 长度就是8*8块的个数 每一个item是一个8*8块的dc分量 \n
a0, a1, a2, a3, a4 -> a0, a1-a0, a2-a1, a3-a2, a4-a3
demo:
形如[1,20,30,40] 差分编码后 变为 [1,19,10,10] 使得数字变小,二进制位数就变少了
'''
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于python实现的jpeg算法优化源码(毕业设计).zip
资源推荐
资源详情
资源评论
收起资源包目录
基于python实现的jpeg算法优化源码(毕业设计).zip (23个子文件)
code_20105
source_2.jpg 48KB
temp_1 153KB
test3.py 2KB
zigzag.py 2KB
test2.py 11KB
padding_image.py 2KB
DC_AC_extract.py 3KB
lqs.py 2KB
decoder.py 4KB
file_format.py 726B
source_1.jpg 285KB
entropy_encoding.py 14KB
result_1.jpg 198KB
full_test.py 3KB
encoder.py 5KB
DCT_quant.py 3KB
__pycache__
DC_AC_extract.cpython-39.pyc 2KB
padding_image.cpython-39.pyc 1KB
zigzag.cpython-39.pyc 2KB
DCT_quant.cpython-39.pyc 2KB
file_format.cpython-39.pyc 662B
entropy_encoding.cpython-39.pyc 11KB
source_3.jpg 1.21MB
共 23 条
- 1
资源评论
- 2301_804768822024-04-30感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
土豆片片
- 粉丝: 1556
- 资源: 5641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功