_______________ _Data Compression_ by malj

VIEWS: 76 PAGES: 33

									การบีบอัดขอมูล
(Data Compression)

KITTISAK ONUEAN
kittisak@buu.ac.th
    การบีบอัดขอมูล
                                     ้
    ขอมูลมีจํานวนมาก ขนาดใหญ เปลืองเนือที่ในการจัดเก็บ
   หากตองการสงขอมูลผานเครือขายต้องใช้เวลานาน
    เพราะมีขอมูลที่ตองการสงมาก
    จึงมีความจําเปนที่จะตองลดขนาดของขอมูลลงเพื่อให
    สามารถจัดการไดงายขึ้น เทคนิคในการทํางานดังกลาวนี้
    เรียกวา


    การบีบอัดขอมูล หรือ Data compression


                 Introduction to Computer Systems        2
Run-length encoding

                       ํ
    เปนวิธีการที่ใหผลดีสาหรับขอมูลที่มีคาซ้ําๆ
    กันเปนจํานวนมาก
   วิธีการบีบอัดคือแทนคาที่ซ้ํากันดวยคูลําดับ
              ่
    (จํานวนทีซ้ํากัน, คา)
   จะชวยลดขนาดของขอมูลลงไดมากนอยเท
    าใด ขึ้นอยูกับมีคาที่ซ้ํากันมากนอยแคไหน
       หากมีคาซ้ํากันมาก ก็ลดขนาดไดมาก
       หากมีคาซ้ํากันนอย ก็ลดขนาดไดนอยหรือไมได
        เลย
              Introduction to Computer Systems    3
ตัวอย่าง




           Introduction to Computer Systems   4
Relative encoding

   การบีบอัดมีลักษณะเปนกลุม
   โดยกลุมที่อยูหลังมีความแตกตางจากกลุมที่อยู
    ขางหนาเพียงเล็กนอย
       เชน ภาพเคลื่อนไหวประกอบดวยชุดของภาพซึ่ง
        แตละภาพมีความแตกตางกันไมมากนัก




              Introduction to Computer Systems    5
    Relative encoding
            ้
    วิธีการนีจะเก็บขอมูลกลุมแรกทั้งกลุมกอน
         ้
    จากนันจึงทําการเก็บข้อมูลในกลุมที่สองเฉพาะสวน
                        ่
    ที่แตกตางจากกลุ่มทีหนึ่ง
   สําหรับกลุมที่สามก็ใชวิธีการเชนเดียวกันคือบันทึก
    เฉพาะขอมูลที่แตกตางจากกลุมที่สอง
                                ่
    การดําเนินการจะเปนเชนนี้เรือยไปจนกวาจะหมดข
    อมูล

    ซึ่งจะสามารถลดขนาดของขอมูลลงไดมากในกรณีที่ภาพเหล
    านี้อยูในฉากเดียวกัน หากภาพมีการตัดกลับไปกลับมาระหวา
                    วิธีการเชนนี้ก็ช Systems
    งฉากหลายฉากIntroduction to Computer วยไดไมมากนัก   6
Frequency-dependent encoding

                           ่
    ความยาวของรูปแบบของบิตทีใชแทนขอมูลเป
                         ่
    นสัดสวนผกผันกับความถีของขอมูล
       ขอมูลมีความถี่มากจะใชจํานวนบิตนอยในการ
        แทนขอมูล
       ข้อมูล มีความถี่นอยจะใชจํานวนบิตในการแทนข
        อมูลที่มากขึ้น

   ระบบนี้มีความยาวของบิตที่ใชในการแทนข
    อมูลไมเทากัน รหัสแทนข้อมูลประเภทนี้จึง
    เรียกวา Variable-length code (ซึงแตกตาง    ่
    ไปจากรหัส ASCII และ Unicode ที่กลาวมา
    แลวซึ่งเปนรหัสชนิดที่มีความยาวของบิตคงที่
              Introduction to Computer Systems      7
     Variable-length
   ตัวอักขระในแตละภาษามีความถี่ในการใชงานไมเท
    ากัน เชน

       ภาษาอังกฤษตัวอักขระที่ทําหนาที่เปนสระ ไดแก a, e, i,
        o, u เปนอักขระที่มีการใช้งานบอยกวาอักขระอื่นๆ เชน z,
        q และ x และในทํานองเดียวกัน

       อักษรไทยมีการใชงานไมเทากัน เชนอักษร ‘ส’ มีการใช
        งานบอยกวาอักษร ‘ฮ’ เป็นต้


                   Introduction to Computer Systems      8
     Variable-length
             ี้
    ดวยเหตุนหากเราแทนอักขระที่มีการใชงานบอยด
                 ี
    วยรหัสที่มจํานวนบิตนอย และแทนอักขระที่มีการใช
                       ี
    งานนอยดวยรหัสที่มจํานวนบิตมาก เมื่อทําการเข
    ารหัสขอมูลแลวจะชวยลดขนาดโดยรวมของข
    อมูลลงได
   ตัวอยางการเขารหัสโดยวิธีการนี้ เชน Huffman
    code ซึ่งเปนขั้นตอนวิธีในการสรางรหัสแบบ
                                         ่
    Variable-length ตามความถี่ของขอมูลทีพบ


               Introduction to Computer Systems   9
Lampel-Ziv encoding
   วิธีการบีบอัดขอมูลแบบ Run-length encoding,
    Relative encoding และ Frequency-dependent
    encoding ถึงแมวาจะดูเหมือนเปนวิธีการที่สามารถใช
    ในการบีบอัดขอมูลโดยทั่วไปได แตละวิธีจะสามารถ
    ทํางานไดดีขอมูลเฉพาะกลุม เมื่อนําไปใชกับขอมูล
    บางกลุมความสามารถจะลดลงอยางมาก
   วิธีการบีบอัดขอมูลทั่วไปที่สามารถทํางานไดดีกับขอมู
    ลทุกประเภท วิธีการที่ไดรับความนิยมแพรหลายแบบ
    หนึ่งคือวิธีการที่เรียกวา Lampel-Ziv encoding (ตั้ง
    ชื่อตามผูคิดคนสองคนคือ Abraham Lempel และ
    Jacob Ziv) ซึ่งผูใชงานระบบคอมพิวเตอรสวนใหญจะ
    รูจักแฟมที่เกิดจากการบีบอัดดวยวิธีนี้คือ zip file
                 Introduction to Computer Systems       10
    Adaptive dictionary encoding
   การบีบอัดขอมูลของ Lampel-Ziv ใชวิธีการที่เรียกวา
    Adaptive dictionary encoding
   Dictionary หมายถึง กลุมของขอมูลพื้นฐานที่ใชในการเข
    ารหัสเพื่อทําใหมีขอมูลขนาดเล็กลง และขอมูลดังกลาวนี้สา
    มารถเปลี่ยนแปลงไปไดในระหว่างการเขารหัส
   โดยที่เมื่อเขารหัสขอมูลชนิดขอความไปไดระยะหนึ่ง
    อาจจะมีการเพิ่มชุดข้อมูลใหมเขาใน Dictionary ได ตอไป
    เมื่อพบชุดขอมูลดังกลาว จะสามารถเขารหัสโดยการแทนด
    วยคาใน Dictionary ทําใหประหยัดเนื้อที่ลงได
   การบีบอัดขอมูลตามวิธีการของ Lampel-Ziv มีหลายแบบ
                    มาศึกษาเรียกวา LZ77
    วิธีการที่จะนําIntroduction to Computer Systems 11
    การถอดรหัสขอมูล

กําหนดใหขอมูลที่เขารหัส (ผานการบีบอัด)
  แลวเปน xyxxyzy (5,4,x)

             ่
    ข้อความทีไมไดเขารหัส (ไมไดบีบอัด) เรียกวาข
    อมูลนํา หรือ Initial segment ไดแก xyxxyzy"
   กลุมขอมูลที่มีองคประกอบสามสวนเรียกวา Triple
    ไดแก 5,4,x) ซึ่งเปนตัวแทนของขอมูลที่เขารหัส
    (ผานการบีบอัด) แลว

               Introduction to Computer Systems   12
    การถอดรหัสขอมูล (ต่อ)
   คาแรกใน Triple เปนจํานวนเต็มที่ใชกําหนดตําแหน
    งเริ่มตนของขอมูลเดิมที่ซ้ํากับขอมูลที่กําลังจะถอดรหัส
    โดยกําหนดใหนับถอยหลังจากทายขอมูลที่ถอดรหัสแลว
    ในตัวอยางนี้ตองนับถอยหลังไป 5 ตําแหนง คือ
    xyxxyzy
      5 4 3 2 1 จะไดสัญลักษณ x ตัวที่ 2 ในสาย
    อักขระเปนตําแหนงเริ่มตน

                                    ่
    คาที่สองใน triple เปนจํานวนเต็มทีกําหนดวาจะตองนํา
    อักขระจากตําแหนงเริ่มตนที่หาไดในขอ 1มาตอทายข
    อมูลที่ถอดรหัสแลวจํานวนกี่ตัว ในตัวอยางนี้มีคาเปน 4
    ดังนั้นตองใชอักขระ 4 ตัว ที่เริ่มจาก x ตัวที่สองไดแกสาย
    อักขระ xxyz
                  ขระดังกลาวนี้ไ Systems
    เมื่อนําสายอักIntroduction to Computerปตอทายขอมูลเดิมจะได 13
การถอดรหัสขอมูล (ต่อ)
   คาที่สามใน triple เปนอักขระที่จะนําไปใชใน
    การตอทายสายอักขระที่ไดในขั้นที่สอง ใน
    ตัวอยางนี้มีคาเปน x เมื่อนําไปตอทายขอมูลเดิม
    จะไดข้อมูลเดิมกอนการเขารหัสคือ
    xyxxyzyxxyzx
   และหากนําวิธีการดังกลาวนี้ไปใชถอดรหัสข
    อมูลที่ผานการบีบอัดแลว ดังนี้คือ
       xyxxyzy (5,4,x) (0,0,w) (8,6,y)


             Introduction to Computer Systems   14
การถอดรหัสขอมูล (ต่อ)
     xyxxyzy (5,4,x) (0,0,w) (8,6,y)
  การถอดรหัสจาก (5,4,x) ตามตัวอยางจะได
       xyxxyzyxxyzx (0,0,w) (8,6,y)
  และเมื่อใชวิธีการเดียวกันในการถอดรหัสตอไป
  จะได
       xyxxyyxxyzxw (8,6,y)
และ
       xyxxyyxxyzxwyyxxyzy
  ซึ่งเปนขอมูลเดิมกอนการบีบอัด ตามลําดับ

          Introduction to Computer Systems   15
แบบฝกหัด
                     ี
    จงถอดรหัสขอมูลที่มการเขารหัสดวยวิธีการ
    LZ77 ตอไปนี้
       101101011 (7, 5, 0) (12, 10, 1), (18, 13, 0)

   จงถอดรหัสขอมูลตอไปนี้ซึ่งเปนขอมูลที่ไดจาก
    การบีบอัดดวยวิธีการ LZ77
       abr (3,1,c) (2,1,d) (7,3,a)

   จงถอดรหัสขอมูลตอไปนี้ซึ่งเปนขอมูลที่ไดจาก
    การบีบอัดดวยวิธีการ LZ77
       0100101 (4,3,0) (8,7,1) (17,9,1) (8,6,1)
                 Introduction to Computer Systems      16
กระบวนการเขารหัส
   ตรงขามกับการบีบอัด
       เริ่มตนดวยการกําหนด Initial segment
       คนหาขอมูลสวนตอไปที่มีรูปแบบซ้ํากับขอมูลสวน
        แรก
       ทําการแทนดวย Triple ที่เหมาะสมจนกวาจะหมดข
        อมูล


   จากตัวอยางที่ใหอาจจะเห็นวาการบีบอัดขอมู
    ลตามวิธีของ Lempel-Ziv ไมสามารถบีบอัดข
                                        ่
    อมูลไดมากนัก ที่เปนเชนนี้เนืองจากขอมู
    ลตัวอยางมีจํานวนนอย หากขอมูลมีความยาว
             Introduction ดจะมีประสิ
    มากขึ้น การบีบอัto Computer Systemsทธิภาพมากขึ้น 17
การบีบอัดภาพ
         ่                      ่
    จากเรืองการแทนขอมูลภาพในตอนทีแลว
       ภาพสวนใหญที่ใชในระบบคอมพิวเตอรเปนภาพชนิด Bit
        map
       โดยใชเนื้อที่ในการจัดเก็บ 3 ไบต 24 บิต) ตอจุดภาพ เช
        นภาพที่มีขนาดเต็มหนาจอเครื่องคอมพิวเตอรที่มีความ
        ละเอียด 768 * 1,024 จุดภาพ ตองใชเนื้อที่ในหนวยความจํา
        ประมาณ 2 MB
       แฟมจะไดเปนแฟมขนาดใหญสิ้นเปลืองเนื้อที่ในการจัดเก็บ


   วิธีการในการบีบอัดขอมูลภาพขึ้นใชงาน
    วิธีการแบบหนึ่งคือ GIF (Graphic
    Interchange Format) พัฒนาขึ้นโดย
    CompuServe to Computer Systems
             Introduction                                  18
GIF
   วิธีการแบบ GIF ใชวิธีการลดจํานวนสีที่จะกําหนดให
    จุดภาพแต่ละจุดลงใหเหลือเพียง 256 สี
   ทําใหสามารถใชหนวยความจําเพียง 1 ไบตในการ
    แทนความหมายของสีของแตละจุดภาพได
   คาของหนวยความจําไบตนี้เปนดัชนีที่จะชี้ไปยัง
    ตารางที่เก็บสีจริงของจุดภาพ เรียกวาตารางผสมสี
    (Color palette) โดยแตละสีประกอบหนวยความจํา 3
    ไบต สําหรับใชแทนระดับของสีแดง สีเขียว และสีน้ํา
    เงินซึ่งเปนแมสีของแสงในสีนั้น ดังนั้นสี 256 สี จึงใช
    เนื้อที่สําหรับใชเปนตารางผสมสี 256 * 3 = 768 ไบต
    สวนจุดภาพแตละจุดใชเนื้อที่เก็บดัชนีของตารางผสม
    สีเพียง 1 ไบต จึงทําใหลดขนาดของภาพลงไดมาก
               Introduction to Computer Systems        19
GIF (ต่อ)

   ในจํานวนสีทั้งหมด 256 สี GIF กําหนดใหมีสี
    หนึ่งเปนสีโปรงใส (Transparent) หรือไมมีสี
    ซึ่งจุดภาพใดที่มีสีนี้จะมีสีเปนไปตามสีของฉาก
    หลัง (Background) คุณลักษณะนี้เมื่อรวมกับ
    วิธีการบีบอัดที่งาย ทําใหเปนระบบที่ไดรับ
    ความนิยมในการใชสรางแบบเคลื่อนไหว
    สําหรับเกมสคอมพิวเตอรที่มี ภาพวัตถุที่สนใจ
    เคลื่อนที่ไปมาในฉากเดียวกัน


             Introduction to Computer Systems   20
GIF (ต่อ)

   เนื่องจากระบบ GIF สามารถแสดงสีไดเพียง
    256 สี ดังนั้นหากภาพก่อนการบีบอัดมีจํานวน
    สีมากกวา 256 สี ตองทําการปรับลดสีสวนเกิน
              ี่
    ใหเปนสีทอยูใกลเคียง ทําใหขอมูลเดิมบางส
    วนสูญหายไป

   วิธีการบีบอัดแบบนี้เรียกวาการบีบอัดชนิดยอม
    ใหมีการสูญเสียบาง (Lossy compression)
    ซึ่งจะทําใหภาพที่ไดหลังขยายการบีบอัดแลวมี
              ํ
    คุณภาพต่ากวาภาพก่อนการบีบอัด
            Introduction to Computer Systems   21
GIF (ต่อ)
               ้
    นอกจากนีแลวการที่สามารถแสดงสีไดเพียง
    256 สีจึงไมเพียงพอที่จะนํามาใชในการเก็บ
    ภาพที่ไดจากกลอง Digital ซึ่งตองการจํานวน
    สีที่สูงกว่ามากได

   ดังนั้นกลุมที่เกิดจากความรวมมือระหวางผู
    เชี่ยวชาญการถายภาพ หรือ The Joint
    Photographic Experts Group (JPEG) ซึ่ง
    เปนหนวยยอยขององคการมาตรฐานสากล
    (International Standard Organization –
    ISO) จึงทําการกําหนดมาตรฐาน JPEG
               Introduction to ดเก็บและแสดงผลภาพถาย22
    สําหรับใชในการจัComputer Systems
    JPEG

   มาตรฐาน JPEG รวมวิธีการหลายอยางเขาไวดวย
                              ่
    กัน วิธีการแตละอยางมีจุดมุงหมายเฉพาะตัว




             Introduction to Computer Systems   23
JPEG (ต่อ)

   เมื่อตองการภาพที่มีความละเอียดและแมนยําสูง

   จะใชวิธีการบีบอัดขอมูลชนิดไมเกิดการสูญเสีย
    (Lossless compression) ซึ่งเปนวิธีการบีบอัด
    ที่เก็บรายละเอียดทุกอย่างไวจึงทําใหภาพกอน
    การบีบอัด และภาพที่ไดหลังขยายการบีบอัดแล
    วเหมือนกันทุกประการ



             Introduction to Computer Systems   24
JPEG (ต่อ)

   การลดขนาดจึงตองใชวิธีการเก็บความแตกตาง
                              ่
    ระหวางความเขมของจุดภาพทีอยูติดกันแทนที่
                            ้
    จะเก็บความเขมของจุดภาพนัน (หลักการของ
    Relative encoding)

   ซึ่งจะชวยลดขนาดขอมูลไดเนื่องจากผลตางย
    อมมีคาต่ํากวาตัวตั้งและตัวลบเสมอ ผลตางที่ได
    จะทําการเขารหัสหรือบีบอัดตอไป โดยใชรหัสที่
    มีความยาวแตกตางกัน (Variable-length
              ่
    code) เพือลดขนาดขอมูลลงไปอีก
            Introduction to Computer Systems   25
JPEG (ต่อ)

                                     ่
    ในอดีตเคยเปนวิธีการที่ไดผลดี แตเนืองจาก
    ภาพในปจจุบันมีขนาดใหญและมีความละเอียด
                          ้
    สูงเกินกวาที่วิธีการนีจะสามารถใชงานได
    อย่างมีประสิทธิภาพจึงมีการใชงานนอยมาก

   โปรแกรมประยุกตสวนใหญในปจจุบนหัน            ั
    ไปใชวิธีการมาตรฐานของ JPEG เรียกวา
    JPEG baseline standard ซึ่งใชวิธีเขารหัส
    ความแตกตางระหวางความสวางของจุดภาพ
    (Pixel brightness)และสีของจุดภาพ (Pixel
    color)
              Introduction to Computer Systems   26
    JPEG (ต่อ)
   การใชความแตกตางระหวางความสวางของจุดภาพ
                                     ่
    และสีของจุดภาพมาจากหลักความจริงทีวาตาของ
    มนุษยเรามีความไวตอการเปลี่ยนแปลงความสวาง
    มากกวาการเปลี่ยนแปลงสี

                                              ้
    ตัวอยางเชนหากมีภาพที่ประกอบขึนดวยจุดภาพสีน้ํา
    เงินเหมือนกันสองภาพ ภาพแรกมีจุดภาพสีน้ําเงิน
                                          ่
    ขนาดเล็กมากเพียงจุดเดียวทีมีความสวางมากกวา
             ้
    จุดภาพทังหมดของภาพ สวนภาพที่สองมีจุดภาพสี
    เขียวขนาดเล็กมากเพียงจุดเดียวแตมีความสวางเท
                     ้ํ
    ากับจุดภาพสีนาเงินทั้งหมดในภาพ ตาของมนุษยจะ
                              เงินที่ส Systems
    มองเห็นจุดภาพสีน้ําto Computer วางกวาไดในทันที แตต
                 Introduction                        27
    JPEG (ต่อ)

                                    ้
    ตัวอยางเชนหากมีภาพที่ประกอบขึนดวยจุดภาพสีน้ํา
    เงินเหมือนกันสองภาพ ภาพแรกมีจุดภาพสีน้ําเงิน
                                 ่
    ขนาดเล็กมากเพียงจุดเดียวทีมีความสวางมากกวา
             ้
    จุดภาพทังหมดของภาพ สวนภาพที่สองมีจุดภาพสี
    เขียวขนาดเล็กมากเพียงจุดเดียวแตมีความสวางเท
                  ้ํ
    ากับจุดภาพสีนาเงินทั้งหมดในภาพ ตาของมนุษยจะ
    มองเห็นจุดภาพสีน้ําเงินที่สวางกวาไดในทันที แตต
                                       ้
    องใชเวลาในการพิจารณานานกวานันมากในการเพ
    งหาจุดภาพสีเขียวในภาพที่สอง

               Introduction to Computer Systems   28
JPEG (ต่อ)
   มาตรฐาน JPEG Baseline standard ใช
    ความจริงขอนี้ในการเขารหัสความสวางของ
    แตละจุดภาพ
   บันทึกสีเฉลี่ยของจุดภาพที่อยูติดกัน 4 จุด กลา
              ่
    วอีกนัยหนึงคือระบบนี้รักษาการเปลี่ยนแปลง
    ความสวางของจุดภาพไว ตามความเปนจริง
    แตทําใหการเปลี่ยนแปลงสีเลือนลงไปบาง

                 ้
    ดวยวิธีการนีจุดภาพที่อยูติดกัน 4 จุดจึง
    สามารถแทนไดดวยขอมูลเพียง 6 คา
    (ความสวาง 4 คา และสี 2 คา) แทนที่จะตองใช
    ทั้งหมด 12 คา (จุดละสามคาคือคาของสีแดง
             Introduction to Computer Systems 29
JPEG (ต่อ)

   หลังจากทําการเขารหัสจุดภาพดวยความสวาง
    และสีเฉลี่ยแลว มาตรฐาน JPEG ยังกําหนด
    ใหนําขอมูลที่ไดมาทําการหาผลตางระหวางจุด
    แบบเดียวกับวิธีการแบบ Lossless
                                      ้
    compression และทําการเก็บผลตางนันไว
                             ํ
    (การหาผลตางระหวางจุดนี้ทาไดโดยใชทาง
    คณิตศาสตรคือ Discrete cosine transform)

        ้
    จากนันจึงทําการเขารหัสผลตางที่ไดดวย
    Variable-length code อีกครั้งหนึ่ง
            Introduction to Computer Systems   30
JPEG (ต่อ)

             ้
    นอกจากนีแลวยังมีการขยายวิธีการบีบอัดตาม
    มาตรฐาน JPEG ใหใชในการบีบขอมูล
                      ่
    อัดเสียงและภาพเคลือนไหวไดดวย

   โดยกลุมที่เกิดจากความรวมมือระหวางผู
    เชี่ยวชาญการถายภาพยนตร หรือ Motion
    Picture Experts Group ซึ่งเปนหนวยงานย
    อยของ ISO ไดกําหนดมาตรฐาน MPEG ขึ้น
    ใชกับภาพเคลื่อนไหว

            Introduction to Computer Systems   31
แบบฝึกหัด

   จงเขารหัสขอมูลตอไปนี้ดวยวิธีการ LZ77 (ให
    ถือวาขอความที่ตองการใหเขารหัส มี
                 ่                     ่
    ตัวอักษรตอเนืองกันไป ไมมีวรรค เครืองหมาย
    เวนวรรคที่แทรกไวทุก 4 ตัวอักษร เพื่อใหอาน
    และตรวจสอบไดงาย
       bbab bbaa baba abab aaba baaa


   “การบีบอัดขอมูลแบบ GIF เหมาะสําหรับใชใน
    การบีบอัดภาพการตูนมากกวาการบีบอัดแบบ
    JPEG” ทานเห็นดวยกับคํากลาวนี้หรือไม จง
    อภิปรายและใหเหตุผลสนับสนุน
             Introduction to Computer Systems 32
แบบฝึกหัด

   ภาพขนาด 1024 * 1024 จุดภาพ หากทําการ
    บีบอัดโดยใชวิธีการ GIF จะไดภาพที่มีขนาด
    เทาใด และในกรณีที่ใชวิธีการ JPEG จะได
    ภาพที่มีขนาดเทาใด จงแสดงวิธีการคํานวณ
    โดยชัดเจน

   จงอธิบายหลักการโดยทั่วไปของการบีบอัดข
    อมูลโดยใชวิธีการตามมาตรฐานของ JPEG
    baseline standard มาพอเขาใจ
            Introduction to Computer Systems   33

								
To top