精华内容
下载资源
问答
  • 遗传算法混合编码

    千次阅读 热门讨论 2019-09-01 16:23:33
    例如变量中既有连续的实数,又有整数,某些变量还满足排列编码(即多个变量之间互不相等)的特征,这个时候需要混合编码才能很好地对问题进行求解。 本文采用Python高性能实用型进化算法工具箱Geatpy来进行相关的...

    对于大多数复杂的实际问题,单靠一种编码是很难甚至是完全无法进行求解的。例如变量中既有连续的实数,又有整数,某些变量还满足排列编码(即多个变量之间互不相等)的特征,这个时候需要混合编码才能很好地对问题进行求解。

    本文采用Python高性能实用型进化算法工具箱Geatpy来进行相关的实验探究,Geatpy工具箱内置支持复杂混合编码的进化优化,并且只需把待求解的问题编写在”问题类“中,然后调用内置的进化算法模板便能求解问题,通用性很强。

    Geatpy的官方教程如下:

    http://geatpy.com/index.php/geatpy%E6%95%99%E7%A8%8B/

    Geatpy的染色体本身有三种最基础的编码方式:'BG'(二进制/格雷编码)、'RI'(实数整数混合编码)以及'P'(排列编码),这意味着一条染色体只能是这三种编码方式的其中一种。因此当需要更加复杂的编码时,需要用多条染色体来进行协同表达。 

    Geatpy的四个大类中的Population种群类只支持单染色体,其Chrom属性(种群染色体矩阵)中每一行对应的是种群的一条染色体,因此只支持'BG'、'RI'或'P'中的一种编码方式。

    这里引入PsyPopulation种群类,它是继承了Population类的一个新的类,它用Linds列表代替Population中的Lind来存储各染色体的长度;用Encodings代替Population中的Encoding来存储各染色体的编码方式;用Fields代替Population中的Field来存储各染色体的译码矩阵;用Chroms代替Population中的Chrom来存储各个染色体矩阵。PsyPopulation和Population的UML类图对比如下所示:

    上图中的Field, Chrom, ObjV, FitnV, CV, Phen等均满足Geatpy的数据结构(详见“Geatpy数据结构”章节)。

    如果在进化过程中采用的是PsyPopulation类的种群,而不采用Population,那么原有的算法模板都要作出一定的修改。首先是染色体的初始化,需要遍历各种编码的染色体进行初始化操作。然后对于重组和变异,也是需要遍历各种编码的染色体分别进行重组和变异;因此Geatpy为各个算法模板提供其对应的多染色体版本,并且用“psy”字符串加以标识。比如多目标优化NSGA2的算法模板“moea_NSGA2_templet”,其对应的多染色体版本为“moea_psy_NSGA2_templet”(算法的源码可点开超链接进行查看)。

    下面以一个单目标带约束问题为例,阐述如何使用多染色体混合编码求解问题:

    该问题本来可以像以往那样,直接使用实整数编码'RI'的染色体来表达所有的变量,然后加一个不等式约束使得x3 ≠ x4 ≠ x5 ≠ x6 。但这里我们采用另一种编码方法:不难发现x3, x4, x5, x6 ∈ {1, 2, 3, 4, 5, 6, 7}和x3 ≠ x4 ≠ x5 ≠ x6 正好符合排列编码的特征,即x3, x4, x5, x6 是从{1,2,3,4,5,6,7}中任意挑选出4个数字的排列。因此前两个变量用'RI'编码(实整数编码)的染色体(把对应的varTypes设为0标记这2个变量为连续型变量);后4个变量用'P'编码(排列编码)的染色体。实验代码如下:

    第一步:编写问题类MyProblem,写在MyProblem.py文件中。

    # -*- coding: utf-8 -*-
    """MyProblem.py"""
    import numpy as np
    import geatpy as ea
    class MyProblem(ea.Problem): # 继承Problem父类
    	def __init__(self):
    		name = 'MyProblem' # 初始化name(函数名称,可以随意设置)
    		M = 1 # 初始化M(目标维数)
    		# 初始化maxormins(目标最小最大化标记列表,1:最小化;-1:最大化)
    		maxormins = [-1]
    		Dim = 6 # 初始化Dim(决策变量维数)
    		# 初始化决策变量的类型,元素为0表示变量是连续的;1为离散的
    		varTypes = [0,0,1,1,1,1]
    		lb = [-1.5,-1.5,1,1,1,1] # 决策变量下界
    		ub = [2.5,2.5,7,7,7,7] # 决策变量上界
    		lbin = [1] * Dim # 决策变量下边界
    		ubin = [1] * Dim # 决策变量上边界
    		# 调用父类构造方法完成实例化
    		ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)
    	def aimFunc(self, pop): # 目标函数
    		X = pop.Phen # 得到决策变量矩阵
    		x1 = X[:, [0]]
    		x2 = X[:, [1]]
    		x3 = X[:, [2]]
    		x4 = X[:, [3]]
    		x5 = X[:, [4]]
    		x6 = X[:, [5]]
    		pop.ObjV = np.sin(2*x1) - np.cos(x2) + 2*x3**2 -3*x4 + (x5-3)**2 + 7*x6 # 计算目标函数值,赋值给pop种群对象的ObjV属性

    第二步:编写执行脚本,写在main.py文件中。

    # -*- coding: utf-8 -*-
    """main.py"""
    import geatpy as ea  # import geatpy
    from MyProblem import MyProblem  # 导入自定义问题接口
    if __name__ == '__main__':
        """================================实例化问题对象==========================="""
        problem = MyProblem()  # 生成问题对象
        """==================================种群设置=============================="""
        NIND = 40  # 种群规模
        # 创建区域描述器,这里需要创建两个,前2个变量用RI编码,剩余变量用排列编码
        Encodings = ['RI', 'P']
        Field1 = ea.crtfld(Encodings[0], problem.varTypes[:2], problem.ranges[:, :2], problem.borders[:, :2])
        Field2 = ea.crtfld(Encodings[1], problem.varTypes[2:], problem.ranges[:, 2:], problem.borders[:, 2:])
        Fields = [Field1, Field2]
        population = ea.PsyPopulation(Encodings, Fields, NIND)  # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化)
        """================================算法参数设置============================="""
        myAlgorithm = ea.soea_psy_EGA_templet(problem, population)  # 实例化一个算法模板对象
        myAlgorithm.MAXGEN = 25  # 最大进化代数
        myAlgorithm.logTras = 1  # 设置每隔多少代记录日志,若设置成0则表示不记录日志
        myAlgorithm.verbose = True  # 设置是否打印输出日志信息
        myAlgorithm.drawing = 1  # 设置绘图方式(0:不绘图;1:绘制结果图;2:绘制目标空间过程动画;3:绘制决策空间过程动画)
        """===========================调用算法模板进行种群进化========================"""
        [BestIndi, population] = myAlgorithm.run()  # 执行算法模板,得到最优个体以及最后一代种群
        BestIndi.save()  # 把最优个体的信息保存到文件中
        """==================================输出结果=============================="""
        print('评价次数:%s' % myAlgorithm.evalsNum)
        print('时间已过 %s 秒' % myAlgorithm.passTime)
        if BestIndi.sizes != 0:
            print('最优的目标函数值为:%s' % (BestIndi.ObjV[0][0]))
            print('最优的控制变量值为:')
            for i in range(BestIndi.Phen.shape[1]):
                print(BestIndi.Phen[0, i])
        else:
            print('没找到可行解。')

    代码解析:

    Geatpy的问题类是不用管种群用何种编码方式的,只需把问题描述清楚。上面的代码中,种群染色体采用何种编码方式是在执行脚本main.py中进行设置的;由于上述问题中前两个变量是实数,后四个变量是互不相等的整数,于是设置两个Encoding,把它存储在Encodings列表中,因此有“Encodings = ['RI', 'P']”,由于有两种编码,因此需要创建两个译码矩阵Field1和Field2,最后把它们存储到Fields列表中。在随后的实例化种群对象时,要注意用的种群类是PsyPopulation而不是Population。因为PsyPopulation是Population衍生出来的支持多染色体混合编码的种群类。最后在实例化算法模板对象时,要注意挑选的算法模板的名称要带有“psy”字符串,表示这是一个支持多染色体混合编码的算法模板。由于本例是一个单目标优化问题,因此可以采用“soea_SEGA_templet”的多染色体版本:“soea_psy_SEGA_templet”算法模板进行求解(算法的源码可点开超链接进行查看)。

    运行main.py,得到如下结果:

    以下是Geatpy目前内置的多染色体版本的进化算法模板,其具体代码均可在源码中查看到:
    • soea_psy_EGA_templet (精英保留的多染色体遗传算法模板)
    • soea_psy_SEGA_templet (增强精英保留的多染色体遗传算法模板)
    • soea_psy_SGA_templet (最简单、最经典的多染色体遗传算法模板)
    • soea_psy_GGAP_SGA_templet (带代沟的多染色体简单遗传算法模板)
    • soea_psy_studGA_templet (多染色体种马遗传算法模板)
    • soea_psy_steady_GA_templet (多染色体稳态遗传算法模板)
    • moea_psy_awGA_templet (基于awGA 算法的多染色体多目标进化算法模板)
    • moea_psy_NSGA2_archive_templet (带全局存档的多染色体多目标进化NSGA-II 算
    法模板)
    • moea_psy_NSGA2_templet (基于NSGA-II 算法的多染色体多目标进化算法模板)
    • moea_psy_NSGA3_templet (基于NSGA-III 算法的多染色体多目标进化算法模板)
    • moea_psy_RVEA_templet (基于RVEA 算法的多染色体多目标进化算法模板)
    • moea_psy_RVEA_RES_templet (基于带参考点再生策略的多染色体RVEA 算法的多
    目标进化算法模板)

    更多相关介绍可以详见博客:

    https://blog.csdn.net/qq_33353186/article/details/82014986

    https://blog.csdn.net/qq_33353186/article/details/82020507

    https://blog.csdn.net/qq_33353186/article/details/82047692

    https://blog.csdn.net/qq_33353186/article/details/82082053

    欢迎继续跟进!感谢!

    展开全文
  • 基于群体智能优化算法的图像聚类分析,大多数都采用单一的编码方式,使搜索空间过于局限,算法很容易陷入局部最优,为了解决这个问题,提出一种混合编码方式的图像聚类分析算法(HEICA)。该算法构建一种基于图像...
  • 混合编码方式的图像聚类算法.pdf
  • MALTAB和C混合编码

    2012-01-03 16:57:19
    C和MATLAB混合编码参考资料;相互补充;
  • 基于统一LZ和混合编码的复合图像压缩
  • 基于重复累积码和极性码的混合编码方案
  • MATLAB 与VS混合编码教程 需要自行现在 适用性 谢谢 。。。
  • 基于混合编码的射频识别无芯片标签设计.pdf
  • 提出一种混合编码差异演化求解武器—目标分配优化问题。在差异演化算法中增加违反边界约束处理操作,确保由变异和交叉操作生成的每个新个体满足边界约束条件;对差异演化算法中的选择操作重新定义,使其可以直接处理...
  • ffmpeg 和 opengl 混合编码出H264
  • 传感器节点通常由电池供电,充电和更换电池比较...依此提出了一种基于混合编码的传感器节点数据无损压缩算法,与传感器网络中的经典无损压缩算法相比,本算法以更少的性能开销获得了更高的压缩率.实验结果也证明了这一点.
  • 针对典型的一类NP完全问题——背包问题,提出一种混合编码的差异演化求解方法。该方法基于差异演化算法框架,采用混合编码机制,每个决策变量均由一个实数和一个二进制数的组合表示。利用新定义的映射算子,构建混合...
  • 目前软件水印技术还不是很成熟...结合基数[k]枚举编码方案和PPCT编码方案进行混合编码,使叶子节点的右指针可以指向所有节点,利用叶子节点进行编码,提高了数据的嵌入率,利用叶子节点的左指针进行校验,提高鲁棒性。
  • 该案例展示了一个需要混合编码种群来进化的最大化目标的单目标优化问题。 模型: max f = sin(2x1) - cos(x2) + 2x3^2 -3x4 + (x5-3)^2 + 7x6 s.t. -1.5 <= x1,x2 <= 2.5, 1 <= x3,x4,x5,x6 <= 7,且x3...
  • 提出了一种结合浮点数编码与二进制编码的混合编码遗传算法,该算法在同一条染色体上同时使用浮点数编码与二进制编码,有机结合了两者的优点,并与BP算法结合用于优化神经网络的结构和系数,获得具有更好泛化能力的...
  • 鉴于布里渊光时域分析(BOTDA)传感系统中空间分辨率和传感距离存在相互制约的关系,提出了一种结合格雷(Golay)编码技术与差分脉冲对(DPP)技术的混合编码方法。该方法结合了Golay编码可提高系统信噪比以及DPP可改善...
  • 采用混合编码方式构造染色体结构,对 RBF网络的结构和参数进行编码,可以在遗 传算法的一个优化过程中同时训练网络的结构和参数,简化了问题的求解过程。仿真表明,利用该 算法训练 RBF网络,能使网络具有简单的结构形式...
  • 在分析总结浮点数编码和格雷码编码各自特点的基础上,提出了一种用浮点数和格雷码混合编码的 遗传算法来实现匹配追踪算法 .该算法有机结合了遗传算法和匹配追踪算法的优点,不仅能够得到较高精度 的最佳匹配参数,而且...
  • 电信设备-基于周期互质混合编码的目标物体三维信息获取方法.zip
  • 提出了一种基于混合编码的差分演化(DE)算法设计小行星探索最优轨迹的新方法。 在我们的方法中,将天体序列和时间序列一起编码到DE的染色体中,并同时对其进行优化。染色体设计包括天体序列,探索类型,时间序列和...
  • CTF密码学--混合编码--writeup

    千次阅读 2019-10-21 22:13:21
    混合编码 题目来源: poxlove3 题目描述: 经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧你们都有,你和小鱼越来越入迷。那么走向了下一个题目,这个题目好长 好长,你知道你们只要细心...

    混合编码

    题目来源: poxlove3
    题目描述: 经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧你们都有,你和小鱼越来越入迷。那么走向了下一个题目,这个题目好长 好长,你知道你们只要细心细致,答案总会被你们做出来的,你们开始慢慢的尝试,慢慢的猜想 ,功夫不负有心人,在你们耐心的一步步的解答下,答案跃然纸上,你俩默契一笑,相视击掌 走向了下面的挑战。格式为cyberpeace{小写的你解出的答案}


    下载下来,打开发现一长串字符:

    JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==

    根据结尾的==,还有全部是大小写字母及数字判断是base64,解码得到:

    在这里插入图片描述

    又是一种编码,查编码与加密那本小册子,发现是Unicode编码
    在这里插入图片描述
    Unicode转ASCII,得到:

    LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw

    虽然结尾没有==,但是猜测应该还是用的base64,base64解码,果然是,得到:

    /119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100

    这回就很明显了,全是小于128的整数,还贴心的用/给隔开了,就是ASCII了,解码之后,得到flag:

    welcometoattackanddefenceworld

    展开全文
  • [攻防世界]crypto新手练习区混合编码

    千次阅读 2020-05-03 00:46:30
    [攻防世界]crypto新手练习区混合编码 混合编码最佳Writeup由Viking •ZER0_Nu1L提供 难度系数: 2.0 题目来源:poxlove3 题目描述:经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧...

    [攻防世界]crypto新手练习区混合编码

     

    混合编码最佳Writeup由Viking • ZER0_Nu1L提供

    难度系数: 2.0

    题目来源: poxlove3

    题目描述:经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧你们都有,你和小鱼越来越入迷。那么走向了下一个题目,这个题目好长 好长,你知道你们只要细心细致,答案总会被你们做出来的,你们开始慢慢的尝试,慢慢的猜想 ,功夫不负有心人,在你们耐心的一步步的解答下,答案跃然纸上,你俩默契一笑,相视击掌 走向了下面的挑战。格式为cyberpeace{小写的你解出的答案}

    题目场景: 暂无

    题目附件: 附件1

    附件内容:

    JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==

     

     

    解题

    拿到附件内容是一串字母和数字的组合,结尾虽然有明显的填补符号=,经过base64解密后,发现是一堆由&#;划分的数字,立马想到ASCII对照表,tiltle里写出是小写字母的形式,发现这之中的数字不都是大于等于97小于等于119,所以应该不是flag。tiltle中表明是混合加密。在base64解密的基础上尝试Unicode解码,结果又回到了base64的形式,继续进行base64解密,得到的数字都是大于等于97小于等于119。看到了希望。对照ASCII转换得到flag。

    可以选择在线解密。

    题目:flag->ASCII->base编码->Unicode编码->base编码。
    解题:base解码->Unicode解码->base解码->对照ASCII得出flag

    https://base64.us/

    http://tool.chinaz.com/tools/unicode.aspx

    http://ascii.911cha.com/

     

    输入多次解密结果后,立即拿到了flag,完成解题。

    welcometoattackanddefenceworld

    cyberpeace{welcometoattackanddefenceworld}

     

    代码的实现

    博主也找了base64相关的代码实现,如下。

    Java版本,可以直接导入java.util.Base64;库文件,调用getDecoder()方法,用decode();解码。

    Golang版本,调用系统库

    package main
    
    import (
    	"encoding/base64"
    	"fmt"
    )
    
    func BaseEncodeFunc(str string)(string) {
        data := base64.StdEncoding.EncodeToString([]byte(str))
        return data
    }
    
    func BaseDecodeFunc(str string)(string,error) {
        data, err := base64.StdEncoding.DecodeString(str)
        if err != nil {
    	    return "",err
        }
        return string(data),nil
    }
    
    func main() {
        str := "内容"
        data, err := BaseDecodeFunc(str)
        if err != nil {
            fmt.Println("error:", err)
        }
        fmt.Printf("解码前=====%q\n", str)
        fmt.Printf("解码后=====%q\n", data)
    }

    python

    
    import base64
    from io import BytesIO
    
    print(base64.decodestring("内容"))

    什么是Base64呢(百度百科)

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

    Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

    Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

    博主认为对于base64的变种来说,就是转换表和填充符号的区别,基本原理都是大同小异的。所以拿到编码后,要搞清楚转换表才是关键。

    Unicode

    Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

    ASCII可显示字符

    二进制十进制十六进制图形
    0010 00003220(空格)(␠)
    0010 00013321!
    0010 00103422"
    0010 00113523#
    0010 01003624$
    0010 01013725 %
    0010 01103826&
    0010 01113927'
    0010 10004028(
    0010 10014129)
    0010 1010422A*
    0010 1011432B+
    0010 1100442C,
    0010 1101452D-
    0010 1110462E.
    0010 1111472F/
    0011 000048300
    0011 000149311
    0011 001050322
    0011 001151333
    0011 010052344
    0011 010153355
    0011 011054366
    0011 011155377
    0011 100056388
    0011 100157399
    0011 1010583A:
    0011 1011593B;
    0011 1100603C<
    0011 1101613D=
    0011 1110623E>
    0011 1111633F?
     
    二进制十进制十六进制图形
    0100 00006440@
    0100 00016541A
    0100 00106642B
    0100 00116743C
    0100 01006844D
    0100 01016945E
    0100 01107046F
    0100 01117147G
    0100 10007248H
    0100 10017349I
    0100 1010744AJ
    0100 1011754BK
    0100 1100764CL
    0100 1101774DM
    0100 1110784EN
    0100 1111794FO
    0101 00008050P
    0101 00018151Q
    0101 00108252R
    0101 00118353S
    0101 01008454T
    0101 01018555U
    0101 01108656V
    0101 01118757W
    0101 10008858X
    0101 10018959Y
    0101 1010905AZ
    0101 1011915B[
    0101 1100925C\
    0101 1101935D]
    0101 1110945E^
    0101 1111955F_
     
    二进制十进制十六进制图形
    0110 00009660`
    0110 00019761a
    0110 00109862b
    0110 00119963c
    0110 010010064d
    0110 010110165e
    0110 011010266f
    0110 011110367g
    0110 100010468h
    0110 100110569i
    0110 10101066Aj
    0110 10111076Bk
    0110 11001086Cl
    0110 11011096Dm
    0110 11101106En
    0110 11111116Fo
    0111 000011270p
    0111 000111371q
    0111 001011472r
    0111 001111573s
    0111 010011674t
    0111 010111775u
    0111 011011876v
    0111 011111977w
    0111 100012078x
    0111 100112179y
    0111 10101227Az
    0111 10111237B{
    0111 11001247C|
    0111 11011257D}
    0111 11101267E~

    附录:

    https://baike.baidu.com/item/base64

    https://baike.baidu.com/item/Unicode

    http://ascii.911cha.com/

     

    展开全文
  • 基于图像纹理分析的分形和SPIHT混合编码基于图像纹理分析的分形和SPIHT混合编码
  • HEVC混合编码方法引入的亮点

    千次阅读 2013-03-29 12:40:48
    HEVC混合编码方法引入的亮点:(翻译能力有限,不当之处,欢迎指正,谢谢) 1) 编码树单元(CTU,coding tree units)和编码树块(CTB,coding tree block)结构 以前标准编码层的核心是宏块,通常是4:2:0格式,包含...

    HEVC混合编码方法引入的亮点:(翻译能力有限,不当之处,欢迎指正,谢谢)

    1)             编码树单元(CTU,coding tree units)和编码树块(CTB,coding tree block)结构

    以前标准编码层的核心是宏块,通常是4:2:0格式,包含一个16x16亮度采样块和两个相应的8x8色度采样块。然而,HEVC中类似的结构是CTU,它的大小由编码器决定,并且它可以比传统的宏块要大。一个CTU由一个亮度CTB(CTB, coding tree block),相应的两个色度CTBs和语法元素组成。一个LxL大小的亮度CTU可以是L=16,32,或者64采样;一般而言,大的CTU有利于提高压缩性能。HEVC支持CTBs通过树结构分割成更小的块和像四叉树的信号。

    2)             编码单元(CU,coding units)和编码块(CB, coding block

    CTU的四叉树语言结构指定了它亮度和色度CTBs的大小和位置。

    四叉树的根部在CTU。因此,一个亮度CB最大为一个CTB。一个CTU分割成多个亮度和色度CTBs有分割信号控制。一个CU由一个亮度CB,两个相应的色度CBs和语法元素组成。一个CTB可能只含有一个CU,或者分割成多个CUs,并且每个CU有一个相应的分割的多个预测单元(PUs, prediction units)和一个树变换单元(TUs, transform units)。

    3)             预测单元(PUs,prediction units)和预测块(PBs,prediction blocks)

    在CU级决定一个编码一个图像区域用帧间预测还是帧内预测。一个PU分割结构的根部在CU级。依据基本的预测类型选择,亮度和色度的CBs可以进一步分割大小,这些分割子块通过亮度和色度PBs进行预测。HEVC支持的PB大小从64x64到4x4。

    4)             变换单元(TUs,transform units)和变换块(TBs, transform blocks)

    预测残差通过块变换进行编码。一个TU树结构的根部在CU级。亮度CB残差可能和亮度变换块TB一样,或者进一步分割成多个亮度TBs。色度TBs也是一样的。定义了一个类似离散余弦变换(DCT, discrete cosine transform)的整数基函数用于正方形TB块,如4x4,8x8,16x16和32x32。对于4x4的亮度帧内预测残差块,定义了一个源于离散正弦变换(DST, discrete sine transform)的整数变换。

    5)             运动矢量信号

    使用了一个先进的运动矢量预测(AMVP, advanced motion vector prediction),它包含基于相邻PBs和参考帧数据的最可能候选模式。同时,使用一个针对MV编码的融合模式,它允许从时域或空域相邻PBs继承MVs。而且,和H.264/MPEG-4AVC相比,还定义了改善的skip的和直接运动推断。

    6)             运动补偿(MC,motion compensation

    MVs采用1/4采样精度,7抽头和8抽头的滤波器用于分数采样内插。(和H.264/MPEG-4 AVC相比,H.264/MPEG-4 AVC采用6抽头滤波器用于1/2像素位置采样,然后通过线性内插的1/4位置采样)。和H.264/MPEG-4AVC相似,HEVC采用了多参考帧。对于每一个PB,传输一个或者两个运动矢量,将相应导致单向预测或者双向预测编码。像H.264/MPEG-4 AVC一样,HEVC采用一个扩充和偏移操作来实现权重预测。

    7)             帧内预测(Intrapictureprediction

    在帧间预测不能实现的图像区域,相邻块的已编码边界采样点用作空域预测的参考数据。帧内预测支持33种方向模式(H.264/MPEG-4AVC支持8种这样模式),一种平面模式和一种DC预测模式。选择的帧内预测模式通过基于之前相邻以解码的PBs的最可能模式(MPM,most probable prediction modes)之一进行编码。

    8)             量化控制

    和H.264/MPEG-4AVC中一样,HEVC采用一种统一的重建量化机制,同时针对不同大小的TB伸缩量化矩阵。

    9)             熵编码

    HEVC采用基于内容自适应的二进制算术编码(CABAC, context adaptive binary arithmeticcoding)进行熵编码。这个和H.264/MPEG-4 AVC中的CABAC很相似,但是做了一些改进以提高它的处理速度和压缩性能,并减少它的内容内存存储要求。

    10)         内部环路去块滤波器

    HEVC在帧间预测循环中,采用一个类似H.264/MPEG-4 AVC用的去块滤波器。然而,这种滤波器针对决策机制和滤波处理过程设计的简单些,并且能很好的用于并行处理之中。

    11)         采样自适应偏移(SAO,sample adaptive offset

    HEVC在帧间预测循环的去块滤波后,引入了一个非线性的幅度映射。它的目的是用查表的方法更好的重建原来信号的幅度。这个查表同个一些在编码端通过直方图分析获得的额外参数进行设置。(注:转载请注明出处,谢谢)

    展开全文
  • 时间相位编码
  • JSP JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。从这一点来看,非常类似Microsoft ASP、PHP等技术。借助形式上的内容和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面...
  • 利用整数小波变换和零树编码算法对医学图像进行了压缩研究,在对嵌入零树小波编码(Embedded Zero-tree Wavelet,EZW)算法研究的基础上提出一种基于小波系数的嵌人零树小波编码算法。其主要包括:对小波图像的低频...
  • setBinding(new Binding([gradle: this])) evaluate(new File( settingsDir.path, 'module_flutter/.android/include_flutter.groovy' ))

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,683
精华内容 51,073
关键字:

混合编码