顯示具有 2012hw05 標籤的文章。 顯示所有文章
顯示具有 2012hw05 標籤的文章。 顯示所有文章

2013年1月13日 星期日

期末報告 99360781 王鈺


JPEG影像處理壓縮


  Joint Photographic Experts Group (聯合圖像專家小組),在1992年發表JPEG的標準,而JPEG的壓縮通常會將圖像的品質受到可見的破壞,但卻是最普遍用來儲存照片的模式。JPEG最常被使用的副檔名為.jpg,也有其他常用的副檔名為.jpeg .jpe .jfif  和.jif。

首先我們先找到一張jpeg的圖片,再利用PSPad將圖片打開顯示16近位的格式。

網路上找到的一張jpeg的圖片,利用這張圖片進行壓縮

再利用PSPad將影像打開就可以看到影像16進位的顯示

量化表:
             從 FFDB開始看0043--->代表長度為 67 
             後面得00代表QT所以從02開始往後找  
             有兩個不同的量化表一個為亮度量化表 ,另一個為色彩量化表
          
FFDB


接下來要將16進位的值,依照S型填入8X8的格子裡,就可以完成量化表
下圖為依照S型填入後的量化表的結果

亮度量化表

色彩量化表


FFC4 Huffman表:

 Huffman表格

有16編碼,從L1開始依依將值填入,有1個2,3個5然後4~9都各一個,
如果為0就可以不用管, 一開始長度為2的二進制值為000, 
當長度改變就將二進制加1,還要左移一位元,如果長度沒改變,只要加一即可,最後要依照順序排好,如下圖。

Huffman表格

總結:
      我們生活常常使用到JPEG的影像,但沒想到經過影像處理的課程後才發現原來沒我想像的那麼簡單,如果光靠人力,會是很繁複的程序也要花許多時間,而且中間一個步驟或運算錯誤就要找到錯誤得地方然後重新再來,其實非常累人。經過一學期麼影像處理課程現在看影像的角度也會有所不同,不是只光看影像的表面,也會想到是如何修改這張影像,也可以看看這張影像是不是很單純,有可能裡面有藏著訊息。這次的報告,經過同學的指導順利的完成,也了解壓縮得程序和方法,讓我學到許多東西,也很感謝老師這學期的教導
          

2013年1月12日 星期六

99360453 陳胤霖


JPEG影像壓縮處理

99360453 陳胤霖 資工三乙

流程

JPEG影像壓縮標準為JPEG(Joint Photographic Experts Group, 聯合圖像專家小組)所制定出來,基本上要轉換成JPEG前的影像是採用RGB色彩模型,第一步需轉換成YCbCr色彩模型,第二步為DCT(Discrete Cosine Transform, 離散餘弦變換),可將影像的色彩轉換為頻率,第三步為量化(Quantization),利用人類眼睛對於高頻的影像不敏感特性,把高頻率的部份為0,可以大幅實線影像壓縮,最後為熵編碼(Entropy Coding),使用霍夫曼編碼會轉換成Z字型的8X8矩陣(Huffman Table),轉換步驟完成後即輸出JPEG檔案格式影像。



這次實作的影像,拍攝於日月潭

利用PSPad能顯示檔案的16進位格式


JPEG格式分為檔頭(Header)與影像資訊,上圖能看到FFD8利用JPEG說明文件可以了解是開始的標記,最後面當然會有FFD9做為結束的標記;FFDB為量化表;FFC4Haffman Table
 
FFDB
FFDB量化表


FFDB開始,0043表示長度為6700表示QT訊息,後面為64DQT量化表,下圖

實作DCT表格


16進位編碼需Z字形轉換成DCT表格完成表格後,可以看到有兩個FFDB標記,一個是亮度量化表,另一個是色度的亮化表。

FFC0
 FFC0 圖像資訊
 
 
 
FFC4

FFC4 Haffman

第一個表長度為3100DC TABLE00表示HT ID0;第二個表長度為18110AC TABLE00表示HT ID0;第三個表長度為3100DC TABLE01表示HT ID1;第四個表長度為18111AC TABLEHT ID1,前兩個表格為亮度DC/AC,後兩個為色度分量DC/AC
 
以第一個為例實作Huffman表格
 
Huffman表格

編碼為1的有0個,編碼為2的有1個,編碼為3的有5個,編碼為49的各有1個,編碼為10~16的各有0個。


對應到上面表格 Huffman表格
 
FFDA

FFDA SCAN開始

長度為12Component3個,之後為ID,再來就是影像資訊直到FFD9結束標記。

心得

JPEG為目前廣為大眾使用的影像壓縮格式,常用於數位相機失真壓縮,網路圖片傳輸等等,影像處理課程也在JPEG壓縮做一個完美的結束,了解JPEG運作的核心,也了解到如何去看16進位碼,看照片不再只是看漂不漂亮,現在可以看出裡面的編碼,身為資工人算是基本的實務經驗,至於研究上還可以把資訊隱藏在JPEG圖檔編碼,當然知道JPEG壓縮如何運作之後,或許也可以偵測是否有被更動過,我想這學期的最大收穫是可以寫出程式完成以前利用繪圖軟體可以做的事,例如黑白、反相,還有Histogram直方圖,色彩的三原色,再來就是JPEG壓縮,受益良多,感謝老師的教導,也向老師拜早年。

2013年1月10日 星期四

98360826 資工四甲 王至嘉 Hw05 JPEG

這是我選擇用於這次作業的JPEG圖檔
以下是以手動讀取Header的截圖
Baseline DCT

 Define quantization tables
Reserved for application segments 
Define Huffman tables

接下來是用程式讀出的數值
start: ffd8


marker: ffe0 
length: 010


Application Segments


marker: ffdb 
length: 043


Quantization Table:

element precision: 0

destination id: 0

elements: 
2 1 1 2 1 1 2 2 2 2 2 2 2 2 3 5 3 3 3 3 3 6 4 4 3 5 7 6 7 7 7 6 7 7 8 9 11 9 8 8 10 8 7 7 10 13 10 10 11 12 12 12 12 7 9 14 15 13 12 14 11 12 12 12 


marker: ffdb 
length: 043

Quantization Table:

element precision: 0

destination id: 1

elements:
2 2 2 3 3 3 6 3 3 6 12 8 7 8 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 


marker: ffc0 
length: 011

Frame Header:

type: 
Baseline DCT

sample precision: 8 bits

height: 427 pixels

width: 640 pixels

image component: 3

The 1 Component:

component id: 1

horizontal sampling factor: 2

vertical sampling factor: 2

quantization table: 0

The 2 Component:
 component id: 2

horizontal sampling factor: 1

vertical sampling factor: 1

quantization table: 1

The 3 Component:
 component id: 3

horizontal sampling factor: 1

vertical sampling factor: 1

quantization table: 1


marker: ffc4 
length: 01f

Huffman Table: 

tc: 0 
th: 0  (DC Table)

bits:  0 1 5 1 1 1 1 1 1 0 0 0 0 0 0 0 

Before Value Ordering:

size:  2 3 3 3 3 3 4 5 6 7 8 9 

value: 0 1 2 3 4 5 6 7 8 9 a b 

code:  0 2 3 4 5 6 14 30 62 126 254 510 

After Value Ordering:

size:  2 3 3 3 3 3 4 5 6 7 8 9 

value: 0 1 2 3 4 5 6 7 8 9 a b 

code:  0 2 3 4 5 6 14 30 62 126 254 510 


marker: ffc4 
length: 0b5

Huffman Table: 

tc: 1 
th: 0  (AC Table)

bits:  
0 2 1 3 3 2 4 3 5 5 4 4 0 0 1 7d 

Before Value Ordering:

size:  
2 2 3 4 4 4 5 5 5 6 6 7 7 7 7 8 8 8 9 9 9 9 9 10 10 10 10 10 11 11 11 11 12 12 12 12 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 

value:
0/1 0/2 0/3 0/0 0/4 1/1 0/5 1/2 2/1 3/1 4/1 0/6 1/3 5/1 6/1 0/7 2/2 7/1 1/4 3/2 8/1 9/1 a/1 0/8 2/3 4/2 b/1 c/1 1/5 5/2 d/1 f/0 2/4 3/3 6/2 7/2 8/2 0/9 0/a 1/6 1/7 1/8 1/9 1/a 2/5 2/6 2/7 2/8 2/9 2/a 3/4 3/5 3/6 3/7 3/8 3/9 3/a 4/3 4/4 4/5 4/6 4/7 4/8 4/9 4/a 5/3 5/4 5/5 5/6 5/7 5/8 5/9 5/a 6/3 6/4 6/5 6/6 6/7 6/8 6/9 6/a 7/3 7/4 7/5 7/6 7/7 7/8 7/9 7/a 8/3 8/4 8/5 8/6 8/7 8/8 8/9 8/a 9/2 9/3 9/4 9/5 9/6 9/7 9/8 9/9 9/a a/2 a/3 a/4 a/5 a/6 a/7 a/8 a/9 a/a b/2 b/3 b/4 b/5 b/6 b/7 b/8 b/9 b/a c/2 c/3 c/4 c/5 c/6 c/7 c/8 c/9 c/a d/2 d/3 d/4 d/5 d/6 d/7 d/8 d/9 d/a e/1 e/2 e/3 e/4 e/5 e/6 e/7 e/8 e/9 e/a f/1 f/2 f/3 f/4 f/5 f/6 f/7 f/8 f/9 f/a 

code:  
0 1 4 10 11 12 26 27 28 58 59 120 121 122 123 248 249 250 502 503 504 505 506 1014 1015 1016 1017 1018 2038 2039 2040 2041 4084 4085 4086 4087 8176 16354 16355 16356 16357 16358 16359 16360 16361 16362 16363 16364 16365 16366 16367 16368 16369 16370 16371 16372 16373 16374 16375 16376 16377 16378 16379 16380 16381 16382 16383 16384 16385 16386 16387 16388 16389 16390 16391 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 16403 16404 16405 16406 16407 16408 16409 16410 16411 16412 16413 16414 16415 16416 16417 16418 16419 16420 16421 16422 16423 16424 16425 16426 16427 16428 16429 16430 16431 16432 16433 16434 16435 16436 16437 16438 16439 16440 16441 16442 16443 16444 16445 16446 16447 16448 16449 16450 16451 16452 16453 16454 16455 16456 16457 16458 16459 16460 16461 16462 16463 16464 16465 16466 16467 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 

After Value Ordering:

size:  
4 2 2 3 4 5 7 8 10 16 16 4 5 7 9 11 16 16 16 16 16 5 8 10 12 16 16 16 16 16 16 6 9 12 16 16 16 16 16 16 16 6 10 16 16 16 16 16 16 16 16 7 11 16 16 16 16 16 16 16 16 7 12 16 16 16 16 16 16 16 16 8 12 16 16 16 16 16 16 16 16 9 15 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 10 16 16 16 16 16 16 16 16 16 10 16 16 16 16 16 16 16 16 16 11 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 11 16 16 16 16 16 16 16 16 16 16 

value: 
0/0 0/1 0/2 0/3 0/4 0/5 0/6 0/7 0/8 0/9 0/a 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/a 2/1 2/2 2/3 2/4 2/5 2/6 2/7 2/8 2/9 2/a 3/1 3/2 3/3 3/4 3/5 3/6 3/7 3/8 3/9 3/a 4/1 4/2 4/3 4/4 4/5 4/6 4/7 4/8 4/9 4/a 5/1 5/2 5/3 5/4 5/5 5/6 5/7 5/8 5/9 5/a 6/1 6/2 6/3 6/4 6/5 6/6 6/7 6/8 6/9 6/a 7/1 7/2 7/3 7/4 7/5 7/6 7/7 7/8 7/9 7/a 8/1 8/2 8/3 8/4 8/5 8/6 8/7 8/8 8/9 8/a 9/1 9/2 9/3 9/4 9/5 9/6 9/7 9/8 9/9 9/a a/1 a/2 a/3 a/4 a/5 a/6 a/7 a/8 a/9 a/a b/1 b/2 b/3 b/4 b/5 b/6 b/7 b/8 b/9 b/a c/1 c/2 c/3 c/4 c/5 c/6 c/7 c/8 c/9 c/a d/1 d/2 d/3 d/4 d/5 d/6 d/7 d/8 d/9 d/a e/1 e/2 e/3 e/4 e/5 e/6 e/7 e/8 e/9 e/a f/0 f/1 f/2 f/3 f/4 f/5 f/6 f/7 f/8 f/9 f/a 
 code:  10 0 1 4 11 26 120 248 1014 16354 16355 12 27 121 502 2038 16356 16357 16358 16359 16360 28 249 1015 4084 16361 16362 16363 16364 16365 16366 58 503 4085 16367 16368 16369 16370 16371 16372 16373 59 1016 16374 16375 16376 16377 16378 16379 16380 16381 122 2039 16382 16383 16384 16385 16386 16387 16388 16389 123 4086 16390 16391 16392 16393 16394 16395 16396 16397 250 4087 16398 16399 16400 16401 16402 16403 16404 16405 504 8176 16406 16407 16408 16409 16410 16411 16412 16413 505 16414 16415 16416 16417 16418 16419 16420 16421 16422 506 16423 16424 16425 16426 16427 16428 16429 16430 16431 1017 16432 16433 16434 16435 16436 16437 16438 16439 16440 1018 16441 16442 16443 16444 16445 16446 16447 16448 16449 2040 16450 16451 16452 16453 16454 16455 16456 16457 16458 16459 16460 16461 16462 16463 16464 16465 16466 16467 16468 2041 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 


marker: ffc4 
length: 01f

Huffman Table: 

tc: 0 
th: 1  (DC Table)

bits:  
0 3 1 1 1 1 1 1 1 1 1 0 0 0 0 0 

Before Value Ordering:

size:  
2 2 2 3 4 5 6 7 8 9 10 11 

value: 
0 1 2 3 4 5 6 7 8 9 a b 

code:  
0 1 2 6 14 30 62 126 254 510 1022 2046 

After Value Ordering:

size:  
2 2 2 3 4 5 6 7 8 9 10 11 

value: 
0 1 2 3 4 5 6 7 8 9 a b 

code:  
0 1 2 6 14 30 62 126 254 510 1022 2046 


marker: ffc4 
length: 0b5

Huffman Table: 

tc: 1 
th: 1  (AC Table)

bits:  0 2 1 2 4 4 3 4 7 5 4 4 0 1 2 77 

Before Value Ordering:

size:  
2 2 3 4 4 5 5 5 5 6 6 6 6 7 7 7 8 8 8 8 9 9 9 9 9 9 9 10 10 10 10 10 11 11 11 11 12 12 12 12 14 15 15 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 

value: 
0/0 0/1 0/2 0/3 1/1 0/4 0/5 2/1 3/1 0/6 1/2 4/1 5/1 0/7 6/1 7/1 1/3 2/2 3/2 8/1 0/8 1/4 4/2 9/1 a/1 b/1 c/1 0/9 2/3 3/3 5/2 f/0 1/5 6/2 7/2 d/1 0/a 1/6 2/4 3/4 e/1 2/5 f/1 1/7 1/8 1/9 1/a 2/6 2/7 2/8 2/9 2/a 3/5 3/6 3/7 3/8 3/9 3/a 4/3 4/4 4/5 4/6 4/7 4/8 4/9 4/a 5/3 5/4 5/5 5/6 5/7 5/8 5/9 5/a 6/3 6/4 6/5 6/6 6/7 6/8 6/9 6/a 7/3 7/4 7/5 7/6 7/7 7/8 7/9 7/a 8/2 8/3 8/4 8/5 8/6 8/7 8/8 8/9 8/a 9/2 9/3 9/4 9/5 9/6 9/7 9/8 9/9 9/a a/2 a/3 a/4 a/5 a/6 a/7 a/8 a/9 a/a b/2 b/3 b/4 b/5 b/6 b/7 b/8 b/9 b/a c/2 c/3 c/4 c/5 c/6 c/7 c/8 c/9 c/a d/2 d/3 d/4 d/5 d/6 d/7 d/8 d/9 d/a e/2 e/3 e/4 e/5 e/6 e/7 e/8 e/9 e/a f/2 f/3 f/4 f/5 f/6 f/7 f/8 f/9 f/a 

code:  
0 1 4 10 11 24 25 26 27 56 57 58 59 120 121 122 246 247 248 249 500 501 502 503 504 505 506 1014 1015 1016 1017 1018 2038 2039 2040 2041 4084 4085 4086 4087 8176 16354 16355 32712 32713 32714 32715 32716 32717 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 32728 32729 32730 32731 32732 32733 32734 32735 32736 32737 32738 32739 32740 32741 32742 32743 32744 32745 32746 32747 32748 32749 32750 32751 32752 32753 32754 32755 32756 32757 32758 32759 32760 32761 32762 32763 32764 32765 32766 32767 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 32786 32787 32788 32789 32790 32791 32792 32793 32794 32795 32796 32797 32798 32799 32800 32801 32802 32803 32804 32805 32806 32807 32808 32809 32810 32811 32812 32813 32814 32815 32816 32817 32818 32819 32820 32821 32822 32823 32824 32825 32826 32827 32828 32829 32830 

After Value Ordering:

size:  
2 2 3 4 5 5 6 7 9 10 12 4 6 8 9 11 12 16 16 16 16 5 8 10 12 15 16 16 16 16 16 5 8 10 12 16 16 16 16 16 16 6 9 16 16 16 16 16 16 16 16 6 10 16 16 16 16 16 16 16 16 7 11 16 16 16 16 16 16 16 16 7 11 16 16 16 16 16 16 16 16 8 16 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 9 16 16 16 16 16 16 16 16 16 11 16 16 16 16 16 16 16 16 16 14 16 16 16 16 16 16 16 16 16 10 15 16 16 16 16 16 16 16 16 16 

value: 0/0 0/1 0/2 0/3 0/4 0/5 0/6 0/7 0/8 0/9 0/a 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/a 2/1 2/2 2/3 2/4 2/5 2/6 2/7 2/8 2/9 2/a 3/1 3/2 3/3 3/4 3/5 3/6 3/7 3/8 3/9 3/a 4/1 4/2 4/3 4/4 4/5 4/6 4/7 4/8 4/9 4/a 5/1 5/2 5/3 5/4 5/5 5/6 5/7 5/8 5/9 5/a 6/1 6/2 6/3 6/4 6/5 6/6 6/7 6/8 6/9 6/a 7/1 7/2 7/3 7/4 7/5 7/6 7/7 7/8 7/9 7/a 8/1 8/2 8/3 8/4 8/5 8/6 8/7 8/8 8/9 8/a 9/1 9/2 9/3 9/4 9/5 9/6 9/7 9/8 9/9 9/a a/1 a/2 a/3 a/4 a/5 a/6 a/7 a/8 a/9 a/a b/1 b/2 b/3 b/4 b/5 b/6 b/7 b/8 b/9 b/a c/1 c/2 c/3 c/4 c/5 c/6 c/7 c/8 c/9 c/a d/1 d/2 d/3 d/4 d/5 d/6 d/7 d/8 d/9 d/a e/1 e/2 e/3 e/4 e/5 e/6 e/7 e/8 e/9 e/a f/0 f/1 f/2 f/3 f/4 f/5 f/6 f/7 f/8 f/9 f/a 

code:  
0 1 4 10 24 25 56 120 500 1014 4084 11 57 246 501 2038 4085 32712 32713 32714 32715 26 247 1015 4086 16354 32716 32717 32718 32719 32720 27 248 1016 4087 32721 32722 32723 32724 32725 32726 58 502 32727 32728 32729 32730 32731 32732 32733 32734 59 1017 32735 32736 32737 32738 32739 32740 32741 32742 121 2039 32743 32744 32745 32746 32747 32748 32749 32750 122 2040 32751 32752 32753 32754 32755 32756 32757 32758 249 32759 32760 32761 32762 32763 32764 32765 32766 32767 503 32768 32769 32770 32771 32772 32773 32774 32775 32776 504 32777 32778 32779 32780 32781 32782 32783 32784 32785 505 32786 32787 32788 32789 32790 32791 32792 32793 32794 506 32795 32796 32797 32798 32799 32800 32801 32802 32803 2041 32804 32805 32806 32807 32808 32809 32810 32811 32812 8176 32813 32814 32815 32816 32817 32818 32819 32820 32821 1018 16355 32822 32823 32824 32825 32826 32827 32828 32829 32830 


marker: ffda 
length: 0c



這次的作業,是用手動/程式讀取JPEG的Header,在上JPEG檔案的格式的時候,精神狀況實在不是很好,頻頻打瞌睡,只知道要交一份作業是有關於JPEG的Header讀取的作業,用程式或是PSPad都可以,所以我就上網去找了一些有關於JPEG檔案格式的相關資訊,在其中我印象最深刻的是Zig-Zag scan,對其印象深刻的原因是因為之前有上過數位電視的課程,裡面有講到MPEG-2的壓縮方式,所以對其印象最深刻。

之後從老師的Blogger中去找到老師研究的成果,從老師的文章中找到一張記錄JPEG header裡面相對應的16進位編碼,再使用PS PAD解讀,完成此次作業。