860 likes | 1.99k Views
การบีบอัดข้อมูลภาพ ( Image Compression ). Outline. วัตถุประสงค์ของการบีบอัดข้อมูล ความซ้ำซ้อนของการแทนค่าข้อมูล แบบจำลองของการบีบอัดข้อมูลภาพ ทฤษฎีข่าวสารเบื้องต้น การบีบอัดแบบไม่สูญเสียข่าวสาร การบีบอัดแบบสูญเสียข่าวสาร JPEG. วัตถุประสงค์
E N D
การบีบอัดข้อมูลภาพ (Image Compression)
Outline • วัตถุประสงค์ของการบีบอัดข้อมูล • ความซ้ำซ้อนของการแทนค่าข้อมูล • แบบจำลองของการบีบอัดข้อมูลภาพ • ทฤษฎีข่าวสารเบื้องต้น • การบีบอัดแบบไม่สูญเสียข่าวสาร • การบีบอัดแบบสูญเสียข่าวสาร • JPEG
วัตถุประสงค์ การลดความซ้ำซ้อนของข้อมูล(redundancy)ในรูปแบบต่างๆในขณะเดียวกันก็ยังคงคุณภาพที่ดีของภาพไว้
ความซ้ำซ้อนของข้อมูล(Data Redundancy) • ความซ้ำซ้อนของการแทนค่าข้อมูล • ความซ้ำซ้อนทางตำแหน่ง • ความซ้ำซ้อนของข้อมูลอันเกิดจากข้อจำกัดของความสามารถทางด้านการรับรู้ภาพ
ความซ้ำซ้อนของการแทนค่าข้อมูล (coding redundancy) • โดยจุดภาพที่เกิดขึ้นบ่อยจะต้องถูกแทนด้วยข้อมูลที่มีจำนวนบิตที่สั้นจุดภาพที่เกิดขึ้นไม่บ่อยจะถูกแทนด้วยข้อมูลที่มีจำนวนบิตที่ยาวกว่า • เป็นการกระทำแบบกลับคืนได้(reversible)
ความซ้ำซ้อนทางตำแหน่ง (spatial or inter-pixel redundancy) • เปรียบเทียบลักษณะทางแสงของจุดภาพใดๆและจุดภาพเพื่อนบ้านข้างเคียงถ้าจุดภาพคู่ใดมีความเหมือนกันเราสามารถลดความซ้ำซ้อนของข้อมูลตรงบริเวณนี้ได้ • เป็นการกระทำแบบกลับคืนได้(reversible)
200 200 200 200 200 201 201 200 200 200 200 200 201 201 200 200 200 200 200 201 201 200 200 200 200 201 201 201 200 200 200 200 200 200 201 201 201 200 200 200 200 201 201 201 201 201 201 201 201
ความซ้ำซ้อนของข้อมูลอันเกิดจากข้อจำกัดของความสามารถทางด้านการรับรู้ภาพ (visual or psycho-visual redundancy) • เกิดจากข้อจำกัดของความสามารถทางด้านการรับรู้ภาพของมนุษย์(Human Visual System - HVS) • เป็นการกระทำแบบกลับคืนไม่ได้(non-reversible)
100 100 100 104 104 104 104 100 100 100 104 104 104 104 104 100 100 104 104 104 104 100 100 104 104 104 104 104 100 100 104 104 104 104 104 100 100 100 104 104 104 104 100 200 100 104 104 104 104
Encoder Decoder Source Encoding Channel Decoding Source Decoding Channel Encoding Channel Screen Display Save As Bus
Encoder Decoder Source Encoding Channel Decoding Source Decoding Channel Encoding Channel Truncation FT SymbolicEncoding Mapper Quantization การเข้ารหัส “0” และ “1”
แบบจำลองของการบีบอัดข้อมูลภาพ(Image Compression Models) • Source Coding: Coding for efficient representation of information. (Also called Compression) • Channel Coding: Coding for error free transmission of information through a noisy medium
ทฤษฎีข่าวสารเบื้องต้น(Elements of Information Theory) • ข้อมูล(data) • ข่าวสาร(information) • การบีบอัดข้อมูลจะแทนข้อมูลเดิมด้วยสัญลักษณ์(symbol)หรือcode wordหรือletterซึ่งเป็นข้อมูลใหม่
ค่าเฉลี่ยของจำนวนบิตที่ต้องใช้สำหรับข้อมูลที่กำลังพิจารณาค่าเฉลี่ยของจำนวนบิตที่ต้องใช้สำหรับข้อมูลที่กำลังพิจารณา • ข่าวสารที่ถูกบรรทุกมากับข้อมูลE ซึ่งเรียกว่าthe self-informationของEจะอยู่ในรูปของ • เมื่อพิจารณาฐาน x=2
entropy หรือความไม่เป็นระเบียบ(disorder)หรือความไม่แน่นอน(uncertainty)ของข่าวสารที่มากับข้อมูลE • ความสัมพันธ์ระหว่างthe self-informationและEntropy
E = {1 2 1 2 3 3 3 3 1 2 3 3 3 3 1 2 3 3 1 2} • ก่อนการบีบอัด • 1 แทนด้วย 01, 2 แทนด้วย 10,3 แทนด้วย 11 • ความยาวบิตข้อมูลเฉลี่ย n1=2 • หลังการบีบอัด • P(1) = 5/20 = 1/4, • P(2) = 5/20 = 1/4, หาProbability • P(3) = 10/20 = ½
หลังการบีบอัด • จาก จะได้
หลังการบีบอัด • จาก จะได้ • bits • 1 แทนด้วย 01, 2 แทนด้วย 10,3 แทนด้วย 1 • ความยาวบิตข้อมูลเฉลี่ย n2=1.5
Compression Ratio • Relative Data Redundancy
Lossless and Lossy Compression • Lossless Compression: • No loss of information • Original data exactly recovered from compressed data • Lower compression ratio • Lossy Compression: • Loss of information • Perceptual loss of information reduced (controlled) • Higher compression ratio
Encoder Decoder Source Encoding Channel Decoding Source Decoding Channel Encoding Channel Lossy Compression SymbolicEncoding Mapper Quantization Lossless Compression
Taxonomy of Image Compression Lossless Coding techniques (Entropy Coding) Repetitive Sequence Encoding Lossless Predictive Coding StatisticalEncoding Bitplane Encoding RLE Huffman ArithmeticLZW DPCM
Taxonomy of Image Compression Lossy Coding techniques (Source Coding) Block Truncation Coding Lossy PredictiveCoding Transform Coding Subband Coding Fractal Coding Vector quantization DPAM ADPCM Delta modulation DFTDCT Haar Hadamard Subbands Wavelets
1) Huffman Coding • คำนวณความน่าจะเป็นของข้อมูล • เรียงลำดับข้อมูลตามค่าความน่าจะเป็น • กำหนดสัญลักษณ์ที่ข้อมูลคู่ท้ายสุด • รวมค่าความน่าจะเป็นของข้อมูลคู่ท้ายสุด ใส่ผลลัพธ์ในคอลัมน์ใหม่ทางขวา • สร้างสัญลักษณ์ (เข้ารหัส) โดยไล่ย้อนกลับลูกศร
ตัวอย่างจงใช้วิธีHuffman Codingทำการบีบอัดข้อมูลต่อไปนี้โดยใช้alphabet A = {a1, a2, a3, a4, a5} โดยที่กำหนดให้ค่าความน่าจะเป็นของการเกิดของแต่ละข้อมูล คือ • P(a1) = P(a3) = 0.2, • P(a2) = 0.4 และ • P(a4) = P(a5) = 0.1
ก่อนการเข้ารหัส1101 1111 1110 1001 0010 ข้อมูล A = {a1, a2, a3, a4, a5} ใช้เนื้อที่ในการจัดเก็บข้อมูลละ 4 บิต จะได้ n1 = 4x5 = 20 bits……..(1)
หลังการเข้ารหัส a1ใช้เนื้อที่ในการจัดเก็บ 2 บิต a2 ใช้เนื้อที่ในการจัดเก็บ 1 บิต a3 ใช้เนื้อที่ในการจัดเก็บ 3 บิต a4 ใช้เนื้อที่ในการจัดเก็บ 4 บิต a5 ใช้เนื้อที่ในการจัดเก็บ 4 บิต จะได้ n2 = 14 bits……..(2)
Compression Ratio • Relative Data Redundancy
จงบีบอัดจุดภาพต่อไปนี้ด้วยวิธี Huffmann พร้อมคำนวณหา CR
N1 = 512 bits • P(50)=14/64 P(51)=10/64 • P(52)=12/64 P(53)=9/64 • P(54)=6/64 P(55)=5/64 • P(56)=4/64 P(57)=4/64
000 011 010 0000 011 0001
1 0 00 01 1 01 0 00 1 0 000 01 10 000 11 1 010 001 011
N1 = 512 bits • จำนวน P(50)=14x2=28 bits • จำนวน P(51)=10x3=30 bits • จำนวน P(52)=12x2=24 bits • จำนวน P(53)=9x3=27 bits • จำนวน P(54)=6x4=24 bits N2 = 185 bits • จำนวน P(55)=5x4=20 bits • จำนวน P(56)=4x4=16 bits • จำนวน P(57)=4x4=16 bits
2) Run-length Coding (RLC) - RLE • ลักษณะการ scan • แบบจบบรรทัด(คอลัมน์)แล้วตั้งต้นใหม่ • แบบ Zigzag • สร้างคู่ลำดับ (ค่าความเข้ม,จำนวนจุดภาพ) • หาจำนวนบิตที่ใช้เก็บค่าความเข้ม • หาจำนวนบิตที่ใช้เก็บตัวเลขจำนวนจุดภาพ
Ex ภาพ b/w ก่อนการเข้ารหัส n1 = 49 บิต
ให้ scan แบบ zigzag ในแนวระดับ • จะได้ (0;7),(1;25),(0;6),(1;4),(0;7) • ใช้เนื้อที่ n2 = (1+5) x 5 วงเล็บ = 30 bits
Compression Ratio • Relative Data Redundancy
3) Lossless Predictive Coding • แบบจบบรรทัด(คอลัมน์)แล้วตั้งต้นใหม่ (เก็บค่าความเข้มที่จุดตั้งต้นทุกบรรทัด(คอลัมน์)) • แบบ zigzag (เก็บค่าความเข้มที่จุดตั้งต้นตัวเดียว) • หาผลต่างระหว่างความเข้มของจุดข้างหน้าและหลัง • ส่งข้อมูลเหล่านี้เลย หรือ • เข้าสัญลักษณ์โดยใช้ Huffman Codingอีกครั้ง
Ex • ภาพ gray-scale • Pixel ละ 8 bits ก่อนการเข้ารหัส n1 = 8x25 = 200 บิต
กรณีส่งผลต่างโดยตรง • แบบ zigzag ในแนวระดับ • จะได้ 100: 0, 2, 1, 1, -1, 0, -1, -1, 0, 0, 0, 2, 1, 0, 0, 0, -1, -1, -1, 0, -1, 2, 2, 0 • n2 = (1x8 + (24x3)) = 80 bits • 2
Compression Ratio • Relative Data Redundancy
กรณีนำผลต่าง (-1,0,1,2) มาเข้ารหัสโดยใช้ Huffman Coding ก่อนแล้วส่งไป
พบว่า 0 แทนด้วยรหัส ‘0’, • -1 แทนด้วยรหัส ‘11’, • 2 แทนด้วยรหัส ‘100’, และ • 1 แทนด้วยรหัส ‘101’ • n2 = (10x1)+(7x2)+(4x3)+(3x3)+8 = 53 • 0 -1 1 2 ตัวหน้า
Compression Ratio • Relative Data Redundancy
4) Lossless Block CodingหรือDictionary Coding ต้องการเข้ารหัสข้อมูลต่อไปนี้ abracadabra ซึ่ง n1 = 11x3 = 33 bits
เริ่มต้นด้วยการอ่านข้อมูล3 ตัวอักษรคือabrแล้วตรวจสอบกับdictionaryซึ่งไม่พบในdictionaryให้ลดความยาวข้อความลงเป็น2ตัวคือab แล้วตรวจสอบกับdictionary อีกครั้งและแทนข้อมูลนี้ด้วยรหัส 101 (abracadabra)
2. จากนั้นอ่านข้อมูล3ตัวถัดไปคือ rac ซึ่งไม่พบในdictionaryจึงต้องพิจารณาข้อมูลนี้เพียง2ตัวคือra ซึ่งไม่พบในdictionary อีกเช่นกัน จึงแทนrด้วย 100 (abracadabra)