1. JND算法背景/意义
最小可觉察误差(JND, Just Noticeable Distortion)用于表示人眼不能察觉的最大图像失真,体现了人眼对图像改变的容忍度。在图像处理领域,JND 可以用来度量人眼对图像中不同区域失真的敏感性。目前已有多个 JND 模型被提出,这些 JND 模型主要可以分为 2 类:基于像素域的 JND模型和基于变换域的 JND 模型。
像素域 JND 模型能在像素域上更为直观地给出 JND 阈值,在视频编码时常常用于运动估计以及预测残差的滤波。主要方法有:
在变换域中,人类视觉系统 HVS 的某些特性可以方便地结合到应用中,以增强算法的整体性能。比如变换域的JND模型可以方便地把对比度敏感函数(CSF, contrast sensitivity function)引入模型中,具有较高的精度。变换域JND 模型又可以分为基于DCT域的 JND模型以及基于DWT域的JND模型。
算法的意义
传统的图像/视频编码技术主要针对空间域冗余、时间域冗余以及统计冗余进行压缩编码, 但很少考虑到人眼视觉系统特性和心理效应, 因此大量视觉冗余数据被编码并传输, 为了进一步提高编码的效率, 研究人员开始了致力于去除视觉冗余的研究。目前一个表征视觉冗余的有效方法就是基于心理学和生理学的最小可察觉失真模型, 即人眼不能感知的变化, 由于人眼的各种屏蔽效应, 人眼只能觉察超过某一阈值的噪声, 该阈值就是人眼的恰可觉察。
算法适用范围
JND模型常用来指导图像或视频的感知编码和处理, 如预处理、 自适应量化、 码流控制、 运动估计等。近年来, JND 模型在基于视觉特性的视频图像编码、数字水印、图像质量评价等方面受到广泛关注。
考虑到ROI和SPECK算法都在小波域进行,重点考虑基于DWT域的 JND模型。目前的图像视频编码标准主要建立在香农信息论基础之上,用概率统计模型描述信源,其压缩思想主要从去除数据冗余方面出发,如果考虑视觉上的冗余特性。人眼对不同类别区域的敏感度不同,因此可以将体现敏感程度的JND 阈值结合到量化过程中,在不同敏感区域使用不同的量化步长。
最后就能保证压缩的不可察觉性。
DWT 域中最常见的视觉模型是文献[6]描述的 JND模型 ,其 JND 阈值的计算方法如下:
整体框架为:
图2-1 系统总体流程图
它是一种时频变换分析方法,将信号展开成一族基函数(小波)加权之和,通过伸缩平移运算对信号逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节。与变换域相比,小波变换具有良好的能量集中特性,其良好的时频分解特性更符合人类视觉系统的特点。
图像经过小波变换后生成的小波图像的数据总量与原图像的数据量相等,即小波变换本身并不具有压缩功能。之所以将它用于图像压缩,是因为生成的小波图像具有与原图像不同的特性,表现在图像的能量主要集中于低频部分,而水平、垂直和对角线部分的能量则较少;水平、垂直和对角线部分表征了原图像在水平、垂直和对角线部分的边缘信息,具有明显的方向特性。低频部分可以称为亮度图像(近似图像),水平、垂直和对角线部分可以称为细节图像。人眼对亮度图像(低频)部分的信息特别敏感,对这一部分的压缩应尽可能减少失真或者无失真,其它部分可以用允许失真来提高压缩率。
图2-4 图像经三级小波变换示意图
任何共轭滤波器都可以用来刻画一种小波,它能产生实数空间中的正交基,而且快速离散小波变换何以串联这些共轭镜像滤波器来实现。这就是著名的Mallat快速算法,它把小波分解与多采样滤波器组联系起来,并且符合人体视觉系统对各频段的视觉敏感特性。Mallatt算法是是一种求解小波系数的塔形算法思想,对一幅图像完成一次一维小波变换,需要对图像的行和列分别进行一次水平和垂直滤波。小波变换将原始图像分成4个子带,即1个低频子带(LL)与3个高频子带(LH,HL,HH)。如图所示为二维图像的(一级)分解。
令I(x,y)表示大小为M*N的原始图像,L(i)表示相对于小波变换的低通滤波器系数,i=0,1,2,..Nl-1, Nl表示滤波器L的支撑长度。H(i)表示相对于小波变换的高通滤波器系数,i=0,1,2,..Nh-1, Nh表示滤波器H的支撑长度。
其中,x=0,1,…,M/2-1;y=0,1,…N-1
得到如下四个表达式
其中,x=0,1,…,M/2-1;y=0,1,…N-1
图2-5 Mallat快速算法的图像小波变换
改进方向
图2-6 提升结构的小波变换示意图
[7] 朱锦华,许茹,陈华宾《给予提升小波变换的SPECK图像编码算法》
[8] 张岩,聂永丹,唐国维《一种基于小波包变换的 SPECK 图像编码算法》,2012年10月
在JND模型中,主要考虑,frequency (频率),luminance(F:\JND\JND_img),texture (纹理)的综合影响。
如果对原始图像进行1层小波变换。人类视觉系统对图像第l个频带上方向为s的频率敏感度为
人类视觉系统对像素点(x,y)的亮度敏感性可由下式 表示
像素点(x,y)所在的区域的纹理复杂度可由下式表示
3.1.1与JPEG算法对比(有优势)
(1)JPEG在图像区块编码采用DCT(离散余弦变换),SPECK采用的是DWT(离散小波变换)。DCT相比DWT有劣势,需要将图像分为8*8或者16*16的块(常见的两种),这样随着压缩率的增加,会产生块效应。图像边缘变得模糊,产生“马赛克”失真,约束了图像压缩率。
(2)采用SPECK在Internet图像浏览和传输上,提供质量、分辨率上图像渐进式的分级结构更有优势。
(3)JPEG目前应用广泛,SPECK目前较少。
(4)SPECK编码时间长于JPEG。
3.1.2与JPEG2000算法对比
(1)同样采用小波变换
(2)JPEG2000核心算法是EBCOT,采用两重编码,压缩比例更高。
(3)JPEG2000时间复杂性更大。
/* 1. 有哪些算法跟该算法的适用范围是类似的?2. 该算法与其他类似的算法有什么优势或者劣势? */
3.2.1在图像变换上与DCT变换类似
对于传统的DCT块变换,小波变换具有以下优点:
3.2.2图像编码方式对比
可以通过编码数据的特点选择最佳的编码方式。
3.2.3 其他几种嵌入式编码对比
EZW算法是一种基于零树的嵌入式图象编码算法,虽然在小波变换系数中,零树是一个比较有效的表示不重要系数的数据结构,但是,在小波系数中还存在这样的树结构,它的树根是重要的,除树根以外的其它结点是不重要的。对这样的系数结构,零树就不是一种很有效的表示方法。根据基本思想,提出了一种新的且性能更优的实现方法,即基于多级树集合分裂排序(SPIHT)的编码算法。它采用了空间方向树表述系数结构,从而提高编码效率。而SPECK在EZW的基础上,利用小波系数分布特点,使得重要的小波系数优先被编码。SPIHT和EZW只能等前一棵数编码完毕才能进行下一棵数的编码,误码将影响整个树的结构,SPECK算法块之间可以独立编码,对整个图像还原不造成影响。是近期嵌入式分级图像编码算法中性能较好的一种,其中最主要的操作仅包含对小波系数幅值和阈值的比较判断,因此计算复杂度低,运行效率高,并能达到与 EZW、SPIHT 算法相似或更好的编码效率。
yang
zhou
图1 基于像素域的JND变换
JND求解结果灰度图,头发等条纹复杂的JND系数高,平滑区域比较暗,结果合理。
图2 基于小波域的JND变换
SPECK算法(参数可调)