[Week2.5]图像量化——JPEG在此压缩

  图像经过分块、DCT变化,已经为压缩作好准备了。纳尼!折腾了大半天才算“作好准备”,你大爷逗我吧?客官请息怒,“量化”就正式开始压缩啦,3天瘦20斤,效果显著,无用退款!

JPEG量化:更多地保留低频信息

02_05 - Video -[00_06_01][20140415-234055-0]
  经过DCT变换后,图像低频部分都集中在左上角,这部分信息对人类理解图像内容非常重要;图像高频部分集中在右下角,这部分记录图像的细微变化,人眼几乎不能察觉。
  所以,更多地保留DCT左上方的低频信息,去除DCT右下方的高频信息,既能大大压缩图像大小,同时较好地保证了图像质量。
  说得容易,实现方法也很容易,那就是“量化”。

  Soga!那...量化是啥?
  简单地说,“量化”是将“连续量”转换为“离散量”的过程。“四舍五入”、“向下取整”就是典型的量化。
  比如,设量化器(Quantizer)为8,那么,16,21,24,59的量化结果是:
  [16/8] * 8 = 16;
  [21/8] * 8 = 16;
  [24/8] * 8 = 24;
  [59/8] * 8 = 56;
  ( 这里[ ]表示向下取整 )
继续阅读“[Week2.5]图像量化——JPEG在此压缩”

[Week2.4]图像DCT变换

均方差(Mean Square Error, MSE)

02_04 - Video -[00_03_19][20140411-000348-0]
  评价一幅图像压缩前和压缩还原后的差异,有两种常用方法:
  ①大家来找茬——进化程度高的人类可轻易识别;
  ②数学方法——压缩前和还原后的图像作均方差;
均方差计算方法:


显然,MSE越小,图像的质量越好。

K-L 转换:

  要想获得最小均方差的转换,可以使用K-L转换。K-L转换(Karhunen-Loève Transform)是建立在统计特性基础上的一种转换,它是均方差(MSE, Mean Square Error)意义下的最佳转换,因此在资料压缩技术中占有重要的地位。K-L转换是对输入的向量x,做一个正交变换,使得输出的向量得以去除数据的相关性。
  简单地说,只要能不辞劳苦地算出图像的K-L转换,就能找到MSE最小的转换。
  我的天啊,这听起来真棒!等等,K-L转换的计算复杂度奇高,半天压缩才压缩一副图片,恐怕自拍狂们会hold不住。
  那有没有简单的变换方法,计算简单,又能保证图像质量?
继续阅读“[Week2.4]图像DCT变换”

[Week2.2]数据压缩之经典——哈夫曼编码(Huffman)

(笔记图片截图自课程Image and video processing: From Mars to Hollywood with a stop at the hospital的教学视频,使用时请注意版权要求。)

JPEG用哈夫曼编码(Huffman Encoder)作为其符号编码。哈弗曼编码是压缩算法中的经典,它理论上可以将数据编成平均长度最小的无前缀码(Prefix-Free Code)。

为什么要进行编码?

图像处理
关于Lena:莱娜图(Lenna)是指刊于1972年11月号《花花公子》(Playboy)杂志上的一张裸体插图照片的一部分,是一张大小为512x512像素的标准测试图。该图在数位影像处里学习与研究中颇为知名,常被用作数位影像处里各种实验(例如资料压缩和降噪)及科学出版物的例图。(几乎每一本图像处理相关的书都会出现这张图片~)
Lena的直方图(Histogram):从Lena的直方图中可以看出,图片中每个灰度值出现的概率是不相同的。这里,中间灰度值部分出现的概率比较高,两边灰度值出现概率非常低。所以,如果每个灰度值都进行同样长度的编码,似乎就太浪费了。

继续阅读“[Week2.2]数据压缩之经典——哈夫曼编码(Huffman)”

[Week2.1]图像为什么非压缩不可?

图像和视频的压缩技术应用广泛,每天刷微博的图片,盗版回来的小电影,无一不用压缩技术。

压缩的必要性

图像压缩
  某天陈老师要录动作大片,经过长期艰苦奋斗,他制成了这样一段视频:画面大小1000×1000pixel,24位真彩色,每秒30帧,时长2小时。
  如果不进行任何压缩,存储这段视频需要1000*1000*24*30*60*120=5.184 ×1012 bit ≈ 648GB的空间。(2014年4月5日,500GB硬盘最低价格是299元~)
  用4M宽带下载这部大片,最少需要360小时 = 15天。
  可见,要保障人民群众的切身利益,压缩技术非常有必要。
继续阅读“[Week2.1]图像为什么非压缩不可?”

【MATLAB】P图神器,初露锋芒:第一周作业(剧透)

做完第一周Matlab作业,深感MatLab之强大。(都第几周了,才做第一周作业...)
不在上图像处理这门课的同学,也可以试试在Matlab敲这些代码哦~ 用Matlab P图可有意思呢~

第一周是粗略地体验图像处理,先把题目要求贴上来:

Write a computer program capable of reducing the number of intensity levels in an image from 256 to 2, in integer powers of 2. The desired number of intensity levels needs to be a variable input to your program.
Using any programming language you feel comfortable with (it is though recommended to use the provided free Matlab), load an image and then perform a simple spatial 3x3 average of image pixels. In other words, replace the value of every pixel by the average of the values in its 3x3 neighborhood. If the pixel is located at (0,0), this means averaging the values of the pixels at the positions (-1,1), (0,1), (1,1), (-1,0), (0,0), (1,0), (-1,-1), (0,-1), and (1,-1). Be careful with pixels at the image boundaries. Repeat the process for a 10x10 neighborhood and again for a 20x20 neighborhood. Observe what happens to the image (we will discuss this in more details in the very near future, about week 3).
Rotate the image by 45 and 90 degrees (Matlab provides simple command lines for doing this).
For every 3×3 block of the image (without overlapping), replace all corresponding 9 pixels by their average. This operation simulates reducing the image spatial resolution. Repeat this for 5×5 blocks and 7×7 blocks. If you are using Matlab, investigate simple command lines to do this important operation.
=======================

实验用图

图像处理的第一件事,是找张图片。
盗用一张自诩为艺术家的好基友拍的照片,这是我们在拉萨约会时拍的.()
图片版权归好基友,转图请注明出处。
goof
所谓的牦牛肉牛排,好韧的肉,要用好大力气吃... 还是肉牛做的牛排比较靠谱。
继续阅读“【MATLAB】P图神器,初露锋芒:第一周作业(剧透)”

[Week1.3]采样和量化——数字图像之所以是数字图像

数字图像与模拟图像的重要区别,在与它是数字的。(还能有更废的话吗...)
数字,意味着它的离散的:图像空间上的像素点是离散的,像素点的灰度值(颜色值)也是离散的。
相反,模拟图像(比如胶卷)出来的图像空间上和数值上都是连续的。

下图是JPEG的压缩编码流程,本节介绍的,是其中的“量化”(Quantizer)部分。
JPEG压缩流程
JPEG的压缩方法,可以所是非常聪明。
人眼看图像,不会太注重细节。左边一个像素与右边一个像素灰度值相差10或是11,基本不会影响理解。
简单地说,JPEG用最多的空间,来存储对人理解最重要的信息,而一些微乎其微的小细节,基本不会储存。
继续阅读“[Week1.3]采样和量化——数字图像之所以是数字图像”