creatio ex nihilo

ศล
Location :
กรุงเทพ Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 85 คน [?]




Group Blog
 
All Blogs
 
Friends' blogs
[Add ศล's blog to your web]
Links
 

 

Experiments with and Enhancements to Echo Hiding

[สารบัญกลุ่มเรื่องที่กำลังศึกษา]

เนื้อหาตอนนี้ ผมสรุปจากบทความในชื่อเดียวกันของ Sameer Mitra กับ Sathiamoorthy Manoharan ใน 4th International Conference on Systems and Networks Communication ปี 2009

INTRODUCTION

ผู้เขียนแนะนำระบบ steganography โดยแบ่งเป็นฝั่งซ่อนข้อมูล (Hiding message) กับฝั่งดึงข้อมูลที่ซ่อนอยู่ออกมา (Extracting message) ดังรูป


เทคนิคที่พูดถึงในบทนำมีเพียง 2 เทคนิคคือ LSB steganography กับ Echo hiding โดยในส่วนของเทคนิค LSB ได้ยกตัวอย่าง LSB แบบง่ายที่สุด คือ เปลี่ยนบิตสุดท้าย (LSB) ตามข้อมูลที่จะซ่อน สมมติว่าเราจะซ่อนตัวอักษร C (รหัส ASCII ของมันคือ 0x43 หรือ 01000011 ฐาน 2) ลงในแซมเปิ้ลของเสียงต้นฉบับ 8 แซมเปิ้ล ที่แต่ละแซมเปิ้ลมี 8 บิต ได้แก่ 11010010, 01001010, 10010111, 10001100, 00010101, 01010111, 00100110 กับ 01000011 เราก็เปลี่ยน LSBs ของทั้ง 8 แซมเปิ้ลเรียงตามค่าของ C ทีละบิต ผลลัพธ์ที่ได้ คือ 11010010, 01001011, 10010110, 10001100, 00010101, 01010110, 00100111 กับ 01000011 ตัวขีดเส้นใต้คือตัวที่เปลี่ยนแปลง (โดยเฉลี่ยแล้ว ครึ่งหนึ่งของ LSBs จะเปลี่ยนแปลง) หูของมนุษย์สามารถตรวจจับความต่างระหว่างเสียงต้นฉบับกับเสียงที่ซ่อน C ลงไปแล้วนี้ได้ค่อนข้างยาก ข้อเสียที่ชัดเจนของเทคนิค LSB คือ มันอ่อนไหวต่อการดำเนินการประมวลผลสัญญาณต่าง ๆ เช่น re-sampling, filtering, lossy data transformation ทำให้เราสูญเสียข้อมูลที่ฝังโดยการเปลี่ยน LSB ไป

เทคนิค Echo จะอ่อนไหวต่อการดำเนินการแบบดังกล่าวไม่มากเท่า LSB, แต่กระนั้น ถ้าไม่มีการดำเนินการใด ๆ เลยกับสัญญาณเสียงที่ฝังข้อมูลเรียบร้อยแล้ว หรือพูดอีกอย่างว่า อยู่ในสภาพแวดล้อมแบบ closed loop เทคนิค LSB จะสามารถดึงข้อมูลออกมาได้ 100% ขณะที่เทคนิค Echo มี recovery rate ที่ต่ำกว่า 100%

จุดประสงค์ของบทความนี้นอกจากจะทดลองเพื่อดูธรรมชาติของเทคนิค Echo แล้ว ผู้เขียนยังบอกว่าเพื่อหาวิธีเพิ่ม recovery rate โดยการใช้ชุดรหัสแบบ self-synchronizing ที่เรียกว่า T-code ซึ่งก็แน่นอนนะครับว่าการเพิ่ม recovery rate มีความหมายเดียวกับการเพิ่ม robustness ของเทคนิค Echo hiding

ECHO HIDING & RELATED WORK

[สำหรับความรู้พื้นฐานดู Echo Data Hiding] ถ้า x[n] เป็นค่าแซมเปิ้ลของสัญญาณต้นฉบับ, α เป็น echo decay rate โดยที่ 0 < α < 1, และ γ คือ echo delay ซึ่งเราจะใช้ค่า delay สองค่า จะใช้ค่าไหนขึ้นอยู่กับว่าข้อมูลที่เอามาซ่อนเป็น 0 หรือ 1

เราสามารถปรับพารามิเตอร์ α กับ γ ได้เพื่อให้คนฟังไม่ได้ยิน echo และมี recovery rate ที่โอเค

กรณีเทคนิค Echo hiding แบบเบสิก ค่าของแซมเปิ้ลหลังจากใส่ echo หรือ y[n] = x[n] + αx[n - γ] รูปต่อไปนี้แสดงตัวอย่าง original segment (เซ็ตของ x[n]) ซ้าย กับ encoded segment (เซ็ตของ y[n]) ขวา ตามลำดับ


ถ้า γ ลดลง จะทำให้สัญญาณต้นฉบับกับ echo ผสมกัน ถึงจุดหนึ่ง (ประมาณ 1 ms) หูคนเราก็แยกสองสัญญาณนี้ไม่ออก ส่วน α จะเป็นตัวกำหนดแอมปลิจูดของ echo ซึ่งบางที มันก็เป็นไปได้ว่าแอมปลิจูดของ echo จะสูงกว่าค่าสูงสุดที่ยอมรับได้ กรณีก็จะต้องใช้ scaling factor เพื่อลดแอมปลิจูดของแซมเปิ้ลทั้ง segment

ในการดึงข้อมูลออกมา เราใช้ auto-correlation c[n] ของ cepstrum: c[n] = F-1(log((F(x))2))

เมื่อ x คือ สัญญาณที่ซ่อนข้อมูลลงไปแล้ว, F(x) คือ การแปลง Fourier ของ x, F-1 คือ การแปลง Fourier ผกผัน ตัวอย่าง auto-correlation ของสัญญาณแสดงดังรูป


spike หรือ อิมพัลซ์ที่โดดสูงออกมาหลังจากอิมพัลซ์อันแรก ๆ ถ้าไม่อยู่ที่ γ0 ก็ต้องอยู่ที่ γ1 วินาที หลักในการดูว่าข้อมูลที่ซ่อนอยู่เป็น 0 หรือ 1 คือให้ดู spikes ที่ γ0 กับ γ1 ว่าอันไหนมีขนาดใหญ่กว่ากัน รูปที่เห็นนี้เป็นตัวอย่างที่มี echo delay γ0 = 0.01 วินาที และ γ1 = 0.02 วินาที เราเห็นว่า spike ที่ 0.02 วินาทีใหญ่กว่าที่ 0.01 วินาที ฉะนั้น segment ดังกล่าวย่อมต้องซ่อน 1 เอาไว้

Oh และคณะพัฒนาเทคนิค echo hiding นี้โดยใช้ dual echo kernel กล่าวคือมี echo สองลูก ลูกหนึ่งเป็นบวก อีกลูกเป็นลบ

          y[n] = x[n] + α1x[n - γ1] - α2x[n - γ2]

โดยทั่วไป |γ1 - γ2| ≤ 5 และถึงแม้ dual kernel นี้จะพัฒนาขึ้นจาก single kernel แบบแรกที่กล่าวถึง แต่การตรวจจับ cepstrum ก็ยังไม่น่าพอใจ ต่อมา Kim และคณะจึงได้เสนอ Backward & Forward kernel ซึ่งเพิ่ม recovery rate สูงกว่าเดิม

          y[n] = x[n] + αx[n - γ] - αx[n + γ]

ขีดจำกัดหลักของเทคนิค echo hiding คือ มันเป็นการยากที่จะซ่อนข้อมูลในส่วนที่เงียบของเสียง เพราะเราจะได้ยิน echo ตอนที่ไม่มีเสียง จึงได้มีการพัฒนา adaptive echo hiding กล่าวคือ มีการเปลี่ยนแปลงค่า decay rate ให้เหมาะสมกับแต่ละ segment ในการกำหนดค่าสูงสุดของ decay rate ให้แต่ละ segment นั้น เราเริ่มจากการคำนวณพลังงานสัญญาณของ segment ตามสูตร

          

ค่าพลังงานนี้จะถูกนำไปเปรียบเทียบกับ threshold โดยเราจะซ่อนข้อมูลลงใน segment ที่มีพลังงานสูงกว่า threshold เท่านั้น แล้วจึงทำ gain control เพื่อปรับค่า decay rate เพื่อทำให้ echoes อยู่ต่ำกว่า mask (เพราะเราไม่อยากให้ใครได้ยิน echo) ผู้เขียนบอกว่าในการคำนวณ mask จะใช้วิธีใดวิธีหนึ่งใน 3 วิธีต่อไปนี้ (1.) Signal Dependent Attenuation: กรณีนี้ mask ก็คือ original host signal หรือสัญญาณต้นฉบับ และแต่ละ segment จะปรับ decay rate ในแบบที่ทำให้ echoes เกือบทั้งหมดอยู่ต่ำกว่าสัญญาณต้นฉบับ, (2.) Psychoacoustic Model: mask ก็คำนวณในโดเมนความถี่สำหรับ 26 critical bands ตามโมเดลของมันนั่นแหละครับ แล้วแต่ละ segment จะปรับค่า decay rate ในแบบที่ทำให้องค์ประกอบความถี่ของ echo ในย่าน 1 kHz ถึง 5 kHz อยู่ต่ำกว่า mask, (3.) Perceptual Filter: maks ถูกคำนวณในโดเมนเวลาโดยใช้ perceptual filter ที่อิงอยู่กับ LPC (Linear Predictive Coding) ซึ่งทำได้โดยป้อนสัญญาณต้นฉบับเข้าไปยัง perceptual weighting filter

ในกรณี adaptive นี้ ข้อมูลตำแหน่งที่ทำลายน้ำ (ข้อมูลว่า segment ไหนที่มีการฝังข้อมูลลายน้ำลงไป) จะต้องถูกบันทึกไว้ใช้ตอนทำ recovery

T-CODES

T-code คือ เซ็ตย่อยของเซ็ต Huffman code ทั้งหมดที่เป็นไปได้ วิธีการสร้าง T-code เราใช้กระบวนการที่เรียกว่า T-augmentation เริ่มจากเซ็ตของ T-code อย่างง่ายที่มีแต่ alphabets ในกรณี binary alphabet เซ็ตดังกล่าวก็คือ S = {0, 1} ถ้าต้องการ code set ที่ใหญ่ขึ้น เราก็ใช้วิธีต่อไปนี้แล้วทำซ้ำไปเรื่อย ๆ ครับ คือ (1.) ลบสมาชิกหนึ่งตัวออกจากเซ็ต (2.) ใช้สมาชิกตัวที่ลบออกจากเซ็ตเป็น prefix กับสมาชิกของเซ็ตตอนเริ่มต้น เพื่อใช้เป็นสมาชิกตัวใหม่ที่เพิ่มเข้ามาของเซ็ต

ตัวอย่าง จาก S = {0, 1} ถ้าเราเลือก 0 เป็น prefix เราก็จะได้ S(0) = {1, 00, 01} ระดับถัดมา ถ้าเราเลือก 1 เป็น prefix เราก็จะได้ S(0,1) = {00, 01, 11, 100, 101} แต่ถ้าในระดับเดียวกันนี้ เราเลือก 01 เป็น prefix ก็จะได้ S(0,01) = {1, 00, 011, 0100, 0101} ซึ่งก็ชัดเจนว่า เวลาเลือก prefix ควรเลือกตัว code word ที่สั้น ๆ เพราะว่า codes ใน code set สุดท้ายจะได้สั้น ๆ

จำนวนสมาชิกในเซ็ต T-code ที่ระดับ T-augmentation เท่ากับ n คือ 2n + 1

ข้อดีของ T-code คือมันจะทำ self-synchronize ระหว่างการ decode ดังนั้น เมื่อบางบิตเกิดมีปัญหาขึ้นมาใน stream ที่เข้ารหัสแบบ T-code ตัวถอดรหัสจะทำ syncronize ใหม่อัตโนมัติ ดูตัวอย่างนะครับ สมมติว่าเราจะส่งข้อความ helloworld! ซึ่งใช้ตัวอักษร 8 ตัว คือ {h, e, l, o, w, r, d, !} ที่แต่ละตัวมีความถี่ {1, 1, 3, 2, 1, 1, 1, 1} ตามลำดับ เราต้องใช้เซ็ต T-code ที่ T-augmentation ระดับ 3 (เพราะระดับ 2 มีตัวอักษรให้ใช้แค่ 5 ตัว ซึ่งไม่พอ) คือเซ็ต S(0,1,00) = {01, 11, 100, 101, 0000, 0001, 00100, 00101} แล้วเอาไปสร้างพจนานุกรมดังตาราง

          

เราได้ helloworld! = 100.101.01.01.11.0000.11.0001.01.00100.00101 และโดยทั่วไป ความผิดพลาดจะเกิดขึ้นได้ 3 แบบ คือ บางบิตหายไป (bit loss), บางบิตเปลี่ยนค่า (bit inversion) และบางบิตเกินเข้ามา (bit addition)

1. Bit loss: สมมติว่าบิตที่ขีดเส้นใต้หายไป 100.101.01.01.11.0000.11.0001.01.00100.00101 ฉะนั้นบิตสตรีมใหม่จะเป็น 10010101011100001001010010000101 และตัว decoder จะถอดรหัสเป็น 100.101.01.01.11.0000.100.101.00100.00101 = hellowhed! (หมายเหตุ: ตัวอย่างนี้ไม่ตรงกับในเปเปอร์นะครับ เพราะตอนพิมพ์ผมตาลายไปขีดเส้นใต้ผิดที่ เลยตามน้ำ ถอดรหัสตามที่ขีดผิดที่นั่นแหละ)

2. Bit inversion: สมมติว่าบิตที่ขีดเส้นใต้เปลี่ยนค่า จาก 100.101.01.01.11.0000.11.0001.01.00100.00101 เป็น 1001010101110001100001010010000101 ตัวถอดรหัสจะถอดเป็น 100.101.01.01.11.0001.100.00101.00100.00101 = hellorh!d!

3. Bit addition: สมมติว่าตัวที่ขีดเส้นใต้คือบิตที่เพิ่มเข้ามา 100.11101.01.01.11.0000.11.0001.01.00100.00101 หรือ 100111010101110000110001010010000101 ตัวถอดรหัสก็จะอ่านได้ว่า 100.11.101.01.01.11.0000.11.0001.01.00100.00101 = hlelloworld!

ผู้เขียนจะใช้ T-code เพื่อเข้ารหัสข้อมูลก่อนจะฝังลงในเพลง ทางฝั่งรับก็ต้องถอดรหัส T-code ก่อนใช้งาน นอกจากนี้ พจนานุกรมที่ใช้เข้ารหัสจะต้องเป็นที่รู้กันทั้งสองฝ่าย

EVALUATION

ผู้เขียนใช้เพลงที่มีลักษณะดังนี้ 8 บิต/แซมเปิ้ล, 44 kHz ช่องเดียว WAV file และข้อความที่ซ่อนคือ "Hello World!" เพลงที่ใช้มีความยาว 60 วินาที ถูกแบ่งเป็น segment ท่อนละ 0.25 วินาที ทำให้สามารถซ่อนข้อมูลได้สูงสุด 60/0.25 = 240 บิต เพลงและชนิดของเพลงที่ใช้ทดสอบแสดงดังตาราง โดยเพลงร็อกกับป๊อปจะมีพลังงานสัญญาณสูง ขณะที่เพลงบรรเลงหรือคลาสสิกจะมีปริมาณกลาง ๆ ส่วนเสียงพูดซึ่งมีช่วงว่างมากจะมีพลังงานต่ำสุด

          

ในการวัด recovery rate จะใช้ค่าของ Bit Recovery Rate (BRR) ซึ่งหมายถึง สัดส่วนของบิตที่สามารถอ่านได้อย่างถูกต้อง กับ Character Recovery Rate (CRR) ซึ่งหมายถึง สัดส่วนของตัวอักษรที่อ่านได้อย่างถูกต้อง ผู้เขียนเริ่มการทดลองแรกด้วยการดูว่าชนิดของเพลงมีผลต่อ RR หรือไม่ โดยกำหนด α = 0.8, γ0 = 0.001 และ γ1 = 0.0012 ผลที่ได้ดังตาราง

          

เห็นว่าเสียงที่มีช่วงเงียบมากหรือพลังงานต่ำจะมี RR ต่ำ

ต่อมาดูผลของ γ ต่อ RR เมื่อใช้ α = 0.8 คงที่ ผลที่ได้แสดงดังตาราง (ค่า BRR, CRR คำนวณโดยใช้ค่าเฉลี่ยเลขคณิตของทุกเพลง)

          

เห็นว่าการใช้ γ ที่มีค่ามาก ทำให้ RR สูง แต่กระนั้น ก็ทำให้ผู้ฟังสามารถได้ยินเสียง echo

ต่อมา ดูผลของ α ต่อ RR เมื่อใช้ γ0 = 0.001 และ γ1 = 0.0012 คงที่ ผลที่ได้แสดงดังตาราง

          

เป็นไปตามคาด คือ ยิ่ง α มีค่าสูง, RR ก็สูงตาม เพราะที่ α ต่ำ เราจะแยกระหว่าง echo กับ noise ไม่ค่อยออก

ต่อมา ผู้เขียนลองเปลี่ยนไปใช้เทคนิค echo hiding แบบต่าง ๆ ดูว่าแต่ละแบบให้ RR เป็นอย่างไรบ้าง เมื่อ α = 0.8, γ0 = 0.001 และ γ1 = 0.0012 คงที่ ผลลัพธ์ที่ได้แสดงดังตาราง

          

ต่อมา เป็นการทดสอบ robustness โดยมีการโจมตี 3 แบบ คือ (1) เพิ่ม Gaussian white noise ทำให้ SNR = 30 dB, (2) เปลี่ยน sampling rate จากเดิม 44.1 k เป็น 22.05 k แล้วอั๊พกลับเป็น 44.1 k แซมเปิ้ลต่อวินาที, (3) แปลง WAV เป็น 128 kbps MP3 แล้วแปลงกลับเป็น WAV

ผลจากตารางต่อไปนี้แสดงให้เห็นว่าชนิดของเพลง กับ RR เมื่อผ่านการโจมตีแบบต่าง ๆ แล้ว มีความสัมพันธ์กันอย่างไร ส่วนตารางถัดไปแสดง RR เมื่อใช้เทคนิคแบบต่าง ๆ การทดลองทั้งหมดทำที่ α = 0.8, γ0 = 0.001 และ γ1 = 0.0012

          
          

ต่อมา ผู้เขียนจะลองพัฒนาเทคนิค echo hiding โดยเข้ารหัส T-code ก่อนเอาไปฝังในเพลง ได้ผลลัพธ์ดังตาราง

          
          

เห็นว่า RR เพิ่มขึ้นนะครับ แต่ก็ไม่ค่อยมากเท่าไร นอกจากนี้ ในตอนท้ายผู้เขียนยังกล่าวถึงข้อดีของการใช้ T-code อีก 2 อย่างคือ ใช้จำนวนบิตน้อยกว่า ASCII เท่ากับเพิ่ม capacity กับ อาจเป็นการเพิ่ม security ไปในตัว เพราะผู้อื่นไม่รู้ว่ากำลังใช้ T-code




 

Create Date : 15 มิถุนายน 2556    
Last Update : 16 มิถุนายน 2556 17:30:33 น.
Counter : 1826 Pageviews.  

Echo Data Hiding

[สารบัญกลุ่มเรื่องที่กำลังศึกษา]

เนื้อหาตอนนี้ผมสรุปจากหัวข้อ Echo data hiding ในบทความ Techniques for data hiding โดย W. Bender, D. Gruhl, N. Morimoto กับ A. Lu (IBM System Journal, Vol. 35, Nos 3 & 4, 1996)

Echo data hiding ฝังข้อมูลลงในสัญญาณเสียงต้นฉบับโดยการใส่ echo ข้อมูลถูกซ่อนโดยการปรับพารามิเตอร์ของ echo สามตัว ได้แก่ แอมปลิจูดเริ่มต้น, decay rate (อัตราการลดลง) และ offset (หรือค่าเวลาหน่วง) ดังรูป


ยิ่ง offset ระหว่างสัญญาณต้นฉบับกับ echo ลดลง สัญญาณทั้งคู่ก็จะเริ่มผสมกัน ถึงจุดหนึ่ง หูมนุษย์ก็ไม่สามารถแยกความแตกต่างของสัญญาณทั้งสองได้ ฉะนั้น echo จึงเหมือนกับการทำให้เสียงก้องขึ้น สำหรับคำถามว่า offset มากสุดแค่ไหนถึงเริ่มแยกไม่ได้นั้นขึ้นอยู่กับปัจจัยหลายอย่าง อาทิ คุณภาพของการบันทึกเสียงต้นฉบับ ชนิดของเสียงที่เอามาทำ echo และผู้ฟังเองก็เป็นปัจจัยหนึ่งด้วย โดยทั่วไป เราพบว่าที่ offset เท่ากับ 1 ms เสียงก็เริ่มผสมจนแยกยากแล้วสำหรับผู้ฟังส่วนใหญ่

coder หรือตัวเข้ารหัสใช้เวลาหน่วง 2 ค่า ค่าหนึ่ง (คือ offset) แทนบิต 1, ส่วนอีกค่าหนึ่ง (คือ offset + delta) แทนบิต 0 ซึ่งเวลาหน่วงทั้ง 2 ค่าต่ำกว่าขีดเริ่มที่คนเราจะสามารถแยกความแตกต่างของสองเสียงได้นะครับ นอกเหนือจากการลดค่าเวลาหน่วงแล้ว เรายังปรับแอมปลิจูดเริ่มต้นกับ decay rate ได้ด้วย เพื่อไม่ให้ echo ที่ใส่เข้าไปนั้นถูกรับรู้ได้

เราสามารถมองกระบวนการเข้ารหัส (encoding process) เป็นระบบที่มีฟังก์ชั่นระบบ (system function) ตัวใดตัวหนึ่งในสองตัวที่เป็นไปได้ โดยฟังก์ชั่นระบบในโดเมนเวลาก็คือ discrete time exponential ที่แตกต่างกันเพียงแค่เวลาหน่วงระหว่างอิมพัลซ์ (ดูรูป)


เพื่อความง่าย เราเลือกตัวอย่างที่มีอิมพัลซ์ 2 อิมพัลซ์ (อิมพัลซ์ตัวแรกสำหรับ copy สัญญาณต้นฉบับ และอิมพัลซ์ตัวที่สองสำหรับสร้าง echo) การเพิ่มจำนวนอิมพัลซ์เท่ากับการเพิ่มจำนวน echoes


kernel ดังรูป A ข้างบนนี้แทนฟังก์ชั่นระบบสำหรับการเข้ารหัสบิต 1 และเราใช้ฟังก์ชั่นระบบตามรูป B เพื่อเข้ารหัสบิต 0 การประมวลผลสัญญาณตามรูป A หรือ B ตัวใดตัวหนึ่งจะให้ผลลัพธ์เป็นสัญญาณที่เข้ารหัสแล้วดังรูปด้านล่าง


เวลาหน่วง (δb) ระหว่างสัญญาณต้นฉบับกับ echo ขึ้นอยู่กับว่าเราใช้ kernel อันไหน หรือฟังก์ชั่นระบบอันไหน ถ้าใช้ kernel "บิต 1" ก็จะมีเวลาหน่วงเท่ากับ δ1 ใช้ kernel "บิต 0" เวลาหน่วงเท่ากับ δ0

ในกรณีที่เข้ารหัสมากกว่าหนึ่งบิต จะต้องแบ่งสัญญาณต้นฉบับออกเป็นท่อน ๆ แต่ละท่อนก็ใช้ทำ echo ตามบิตที่ต้องการโดยถือว่าแต่ละท่อนเป็นสัญญาณที่เป็นอิสระจากกัน แล้วรวมแต่ละท่อนเข้าด้วยกันเป็นสัญญาณที่เข้ารหัส (ซึ่งมีหลายบิต) ขั้นสุดท้าย


รูปนี้แสดงตัวอย่างแบ่งสัญญาณออกเป็น 7 ท่อนเท่า ๆ กัน คือ ท่อน a ถึงท่อน g และเราต้องการใส่บิต 1 ลงในท่อน a c d และ g ฉะนั้น เราใช้ kernel "บิต 1" เป็นฟังก์ชั่นระบบสำหรับ 4 ท่อนนี้ แต่ละท่อนจะ convolve กับฟังก์ชั่นระบบตัวใครตัวมัน ส่วนอีก 3 ท่อนที่เหลือจะใช้ kernel "บิต 0" หลังจากที่ทุกท่อน convolve กับฟังก์ชั่นระบบตามบิตที่จะฝังเสร็จเรียบร้อยแล้ว เราจะเอาทั้ง 7 ท่อนมาเรียงต่อรวมกัน

วิธีทำเพื่อให้ได้ตาม concept ที่กล่าวมานะครับ ขั้นแรก เราจะเริ่มจากการสร้างสัญญาณ echo "บิต 1" โดยทำการ echo สัญญาณต้นฉบับด้วย kernel "บิต 1" และใช้ kernel "บิต 0" ในการสร้างสัญญาณ echo "บิต 0" ดังรูป (เส้นสีม่วงคือสัญญาณ echo)


ต่อมาเราจะสร้างสัญญาณ mixer สองสัญญาณ (ดูรูปด้านล่าง) เพื่อใช้รวมสัญญาณ echo สองตัวนั้น และสัญญาณ mixer จะเป็น 1 หรือ 0 ก็ขึ้นอยู่กับค่าของบิตที่เราจะฝังลงในแต่ละท่อนของสัญญาณต้นฉบับ


สัญญาณ mixer "บิต 1" จะคูณกับสัญญาณ echo "บิต 1" ขณะที่สัญญาณ mixer "บิต 0" จะคูณกับสัญญาณ echo "บิต 0" แล้วเอาผลลัพธ์ที่ได้มารวมกัน สังเกตว่า สัญญาณ mixer "บิต 1" กับสัญญาณ mixer "บิต 0" จะรวมกันเป็น 1 เสมอ นอกจากนี้ การเปลี่ยนค่าของสัญญาณ mixer จาก 1 เป็น 0 และจาก 0 เป็น 1 จะไม่เป็นการเปลี่ยนแบบทันทีทันใด แต่จะเอียงมีความชัน ทำให้ transition มีความต่อเนื่อง

block diagram ขั้นตอนการเข้ารหัสแสดงดังรูป


การดึงข้อมูลที่ถูกฝังออกมาจะต้องตรวจจับระยะห่างระหว่าง echo ทำได้โดยการหาขนาด (magnitude) ของ autocorrelation ของ cepstrum ของสัญญาณที่เข้ารหัส (cepstrum [มาจากการเรียงตัวอักษร 4 ตัวแรกของคำว่า spectrum ใหม่ จากหลังมาหน้า] คือ ผลลัพธ์ที่ได้จากการทำ inverse Fourier transform ของ logarithm ของสเปกตรัมโดยประมาณของสัญญาณ หรือ F-1{log(|F(x)|)}) ต่อไปนี้เป็นตัวอย่างขั้นตอนการถอดรหัส เริ่มด้วยสัญญาณตัวอย่างซึ่งเป็นขบวนของอิมพัลซ์ ที่อิมพัลซ์เหล่านั้นอยู่ห่างกันด้วยช่วงที่กำหนด และมีแอมปลิจูดลดลงแบบ exponential (สัญญาณที่ตำแหน่งอื่นเป็นศูนย์) ดังรูป


ต่อมา หา cepstrum ซึ่งการทำ cepstrum ส่งผลให้ระยะห่างระหว่าง echo กับสัญญาณต้นฉบับชัดขึ้นเล็กน้อย แต่ข้อเสียคือ ผลลัพธ์จาก cepstrum จะสร้าง echo ซ้ำทุก ๆ δ วินาที


นอกจากนี้ ขนาดของอิมพัลซ์ที่เป็น echoes ก็มีขนาดเล็กเมื่อเทียบกับสัญญาณต้นฉบับ มันจึงตรวจจับยาก ทางออกคือ ทำ autocorrelation ของ cepstrum เริ่มด้วยการทำ echo ที่มีเวลาหน่วง δ กับสัญญาณครั้งหนึ่ง โดยใช้ kernel ดังรูป


และได้ผลลัพธ์


มีเพียงอิมพัลซ์แรกเท่านั้นที่จะถูกขยายใหญ่มากขึ้นอย่างเด่นชัด เพราะมันจะรวมกับอิมพัลซ์ที่อยู่ถัดไป ทำให้เกิด spike ที่ตำแหน่งของอิมพัลซ์แรก ซึ่ง spike นี้จะอยู่ห่างจากสัญญาณต้นฉบับ δ1 หรือ δ0 วินาที ตอนถอดรหัส เราจะบอกว่าข้อมูลที่ฝังคือบิต 1 ถ้าขนาด (magnitude) ของ autocorrelaion function ที่ δ1 วินาที มีค่ามากกว่าเมื่อเทียบกับที่ δ0 วินาที แต่ถ้ากลับกัน คือ ขนาด (magnitude) ของ autocorrelaion function ที่ δ0 วินาที มีค่ามากกว่าเมื่อเทียบกับที่ δ1 วินาที เราก็จะได้บิต 0

วิธีนี้สามารถเข้ารหัสและถอดรหัสข้อมูลบิตลงเสียงโดยทำให้มีการเปลี่ยนแปลงน้อยที่สุด (หมายถึง แยกความแตกต่างโดยการฟัง ระหว่างเสียงก่อนและหลังเข้ารหัสไม่ได้) ได้ประมาณ 16 bps




 

Create Date : 13 มิถุนายน 2556    
Last Update : 15 มิถุนายน 2556 11:29:19 น.
Counter : 1688 Pageviews.  

Audio Watermarking Algorithms: State-of-the-Art

[สารบัญกลุ่มเรื่องที่กำลังศึกษา]

เนื้อหาตอนนี้ผมสรุปจากภาคที่ 5 ในบทที่ 6 Audio Watermarking: State-of-the-Art หนังสือ Advanced Techniques in Multimedia Watermarking (Information Science Reference, 2010) โดย Dejan Drajic กับ Nedeljko Cvejic

อัลกอริทึ่มส่วนใหญ่อาศัยสมบัติการรับรู้เสียงของระบบรับรู้เสียงมนุษย์ (HAS: Human Auditory System) ในการใส่ลายน้ำลงในเสียงต้นฉบับเพื่อไม่ให้หูคนเราตรวจจับได้ถึงการมีอยู่ของลายน้ำ พูดอีกอย่างหนึ่งว่า ลายน้ำจะต้องมีสมบัติ perceptual transparency โดยทั่วไประบบจะมีส่วนวิเคราะห์ psychoacoustic (psychoacoustic analysis block) เพื่อใช้ในอัลกอริทึ่มสำหรับใส่ลายน้ำ

ก่อนพูดถึงรายละเอียดของแต่ละกลุ่มเทคนิค ผู้เขียนบอกว่าเราควรแยกระหว่าง watermark decoding กับ watermark detection ให้ชัดเจน การสื่อสารข้อมูล watermark เป็นหัวใจของ embedding กับ decoding ส่วนการ verify ว่าสัญญาณเสียงที่ได้รับมานั้นมีลายน้ำหรือไม่ เป็นหน้าที่ของ watermark detection

Least Significant Bit Coding

LSB coding เป็นหนึ่งในเทคนิคเก่าแก่ที่สุดที่ใช้ในการซ่อนข้อมูล หรือ watermarking วิธีที่เรียบง่ายวิธีหนึ่งในการทำลายน้ำเสียง คือ การฝังลายน้ำโดยเปลี่ยนแปลงบางบิตของไฟล์เสียง (ซึ่งมี amplitude resolution 16 บิตต่อแซมเปิ้ล) โดยทั่วไป ตัวเข้ารหัสลายน้ำจะเลือก subset จากแซมเปิ้ลเสียงทั้งหมด เป็นการเลือกโดยใช้คีย์ลับ จากนั้นจึงทำการเปลี่ยน LSBs ของ subset ดังกล่าว สำหรับกระบวนการดึงลายน้ำออกมาก็แค่อ่านค่าของบิตที่ถูกเปลี่ยนเหล่านี้ ฉะนั้น ตัว decoder จึงต้องใช้แซมเปิ้ลทั้งหมดของเสียงที่มีลายน้ำซึ่งถูกใช้ในขั้นตอนการฝังข้อมูล การสุ่มเลือกแซมเปิ้ลที่ใช้ฝังลายน้ำจะทำให้เกิด AWG noise กำลังต่ำ และ HAS มีความอ่อนไหวต่อ AWGN นั่นจึงเป็นข้อจำกัดของจำนวน LSBs ที่สามารถเปลี่ยนแปลงได้โดยที่ยังไม่มีผลกระทบต่อการรับรู้เสียง

ข้อดีของวิธีนี้คือ capacity สูงมาก สมมติว่าใช้ LSB แค่บิตเดียวต่อแซมเปิ้ล ถ้าใช้ทุกแซมเปิ้ล เราก็จะได้ capacity เท่ากับ 44.1 kbps และเนื่องจากไม่มีการคำนวณหรือการแปลงที่ซับซ้อน ทำให้ computational complexity ต่ำ จึงเหมาะสำหรับงานประยุกต์ประเภท real-time

ข้อเสียที่เห็นได้ชัดเจนคือ robustness ต่ำมาก เราแค่สุ่มเปลี่ยน LSBs ก็สามารถทำลาย watermark ได้แล้ว นอกจากนี้ มีโอกาสน้อยมากที่ลายน้ำซึ่งฝังลงไปด้วยวิธีดังกล่าวจะรอดหลังจากทำการแปลง digital ไปเป็น analogue แล้วกลับมาเป็น digital

Watermarking the Phase of the Host Signal

อัลกอริทึ่มกลุ่มนี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่า HAS นั้นมีความอ่อนไหวค่อนข้างต่ำต่อการเปลี่ยนแปลงเฟส การฝังลายน้ำโดยการเปลี่ยนเฟสนี้ไม่ได้อาศัยสมบัติ masking ของ HAS แบ่งออกได้เป็น 2 วิธีใหญ่ ๆ คือ phase coding กับ phase modulation

          Phase Coding

          (จากบทความของ Bender et al., 1996) ไอเดียพื้นฐานคือ แบ่งลำดับเสียงต้นฉบับออกเป็น block หลาย ๆ block แล้วฝังลำดับข้อมูลลายน้ำทั้งหมดลงในเฟสสเปกตรัมของ block แรก จุดอ่อนของ phase coding คือ payload ต่ำ เพราะใช้เฉพาะ block แรกในการฝังลายน้ำ นอกจากนี้ การที่ลายน้ำไปกระจุกกันอยู่ที่เดียวทำให้ถูกลบออกได้ง่าย และวิธีนี้เป็น non-blind watermarking method

          Phase Modulation

          การใส่ลายน้ำวิธีนี้ใช้ independent multiband phase modulation สัญญาณต้นฉบับถูกแบ่งออกเป็น M blocks แต่ละ block มีแซมเปิ้ล N ตัว โดยใช้ window แบบมีส่วนซ้อนทับกัน

          

          การดึงลายน้ำออกมา ต้องมีขั้นตอนการ sync ที่ลงตัวในการทำ block alignment สำหรับแต่ละ block ที่มีการฝังลายน้ำ โดยใช้สัญญาณต้นฉบับเป็นตัวอ้างอิง, watermark bit จาก block ที่ k จะถูกดึงมาจาก phase modulation Φ̂k สำหรับ block นั้น

Echo Hiding

เนื้อหาตอนนี้เหมือนกับ Bender et al., 1996 ดู Echo Data Hiding แต่เปลี่ยนจากพารามิเตอร์ 3 ตัวแบบที่ Bender อธิบายมาเป็น 4 ตัว คือ แอมปลิจูดเริ่มต้น, decay rate, offset บิต 1 และ offset บิต 0 ดังรูป

          

นอกจากนี้ ในย่อหน้าสุดท้าย ผู้เขียนบอกว่า เราสามารถเพิ่ม robustness ได้ด้วย echo ที่มีพลังงานสูง แต่ (แน่นอน) มันจะเพิ่ม distortion ในเสียงด้วย ต่อมามีผู้เสนอ multi-echo embedding technique เพื่อลดโอกาสที่ echo จะถูกตรวจจับได้โดยมือที่สาม และยังมีผู้เสนอ echo kernel ที่ประกอบด้วยทั้งพัลซ์บวกและลบซึ่งมีค่า offset แตกต่างกัน ทำให้การตอบสนองเชิงความถี่เรียบในย่านความถี่ต่ำ และกระเพื่อมมากในความถี่สูง

Spread Spectrum

ภาพรวมของระบบ SS-based watermarking แสดงดังรูป

          

เวกเตอร์ x คือ สัญญาณต้นฉบับที่เราจะฝังลายน้ำลงไป อยู่ใน transform domain ที่ต้องการเรียบร้อยแล้วนะครับ หลังจากผ่านช่องทางสื่อสาร จะได้เวกเตอร์ y ซึ่งเป็นเวกเตอร์ทางฝั่งรับ ใน transform domain เช่นกัน ดูบล็อกล่างซ้าย PRN (Pseudo Random Number generator) ใช้กุญแจลับ K$ ในการสร้าง spreading sequence u ที่มีค่าเฉลี่ยเท่ากับศูนย์และ elements ของมันเท่ากับ +σu หรือ -σu จากนั้น เอาลำดับ u ไปบวกหรือลบจากสัญญาณ x ตามค่าตัวแปร b เมื่อ b มีค่า +1 หรือ -1 ขึ้นอยู่กับบิตของลายน้ำที่จะส่ง และผลลัพธ์จากการบวกหรือลบคือสัญญาณ s ซึ่งก็คือเสียงที่ใส่ลายน้ำแล้วนั่นเอง

จากการวิเคราะห์ SS-based watermarking อย่างง่ายทำให้ได้สูตรสำหรับคำนวณโอกาสเกิดความผิดพลาด

จากนิยามของ inner product กับ norm

          

เมื่อ N คือความยาวของเวกเตอร์ x, s, u, n และ y เราจะฝัง b หนึ่งบิตของข้อมูลลงในเวกเตอร์ s นั่นคือ

          s = x + bu

นิยามของความผิดเพี้ยน (distortion) ในสัญญาณที่ฝังลายน้ำ คือ |s - x| หรือ |bu| = |u| = σu

เมื่อช่องทางสื่อสารเป็น additive noise, y = s + n การดึงลายน้ำออกมาทางฝั่งรับนั้น บิตที่ได้รับ b̂ = sign (r) เมื่อ

          

และ

          

ถ้ากำหนดให้ x และ n เป็น white Gaussian random processes ที่ไม่สัมพันธ์กัน

          xi ≈ N(0,σ2x) และ ni ≈ N(0,σ2n)

เราจะได้ว่า

          r ≈ N(mr2r), mr = E[r] = bσ2r = (σ2x + σ2n)/(Nσ2u)

กรณีที่ b = 1, error จะเกิดขึ้นเมื่อ r < 0, โอกาสเกิดข้อผิดพลาด p หาจาก

          

เมื่อ erfc(*) คือ complementary error function, ในกรณีที่ b = -1 โอกาสเกิดข้อผิดพลาดก็ได้เท่านี้แหละครับ

ตัวอย่าง ถ้าเราต้องการให้โอกาสผิดพลาดต่ำกว่า 10-3 เราจะได้

          

พูดในกรณีทั่ว ๆ ไป ถ้าเราต้องการให้ได้โอกาสผิดพลาดไม่เกิน p เราจะต้องทำให้เกิดเงื่อนไข

          

(รายละเอียดเพิ่มเติม ดู Audio Watermarking Based on Spread Spectrum Communication Technique)

Patchwork Method

เทคนิคนี้เสนอครั้งแรกใน Bender et al., 1996 เหมือนกับเทคนิค echo hiding ก็เสนอครั้งแรกโดย Bender และคณะเช่นกัน เดิมที เป็นเทคนิคสำหรับใส่ลายน้ำลงในภาพ โดยใช้วิธีทางสถิติที่ใช้การทดสอบสมมติฐาน และขึ้นอยู่กับชุดข้อมูลจำนวนมาก แต่วิธี patchwork ก็เอามาประยุกต์ใช้กับเสียงได้ด้วย เพราะใน 1 วินาที เสียงจากแผ่น CD คุณภาพมาตรฐาน จะมีแซมเปิ้ล 88,200 แซมเปิ้ล กระบวนการฝังลายน้ำใช้ pseudorandom process ในการแทรกค่าสถิติบางอย่างลงในชุดข้อมูลเสียงต้นฉบับ ซึ่งจะถูกดึงออกมาโดยอาศัยความช่วยเหลือจาก numerical indices ที่ใช้บรรยายการกระจายเฉพาะแบบ (specific distribution) โดยทั่วไปจะวิธีนี้จะใช้ใน transform domain (เช่น Fourier, DCT, wavelet, ...) เพื่อกระจายลายน้ำในโดเมนเวลา และเพื่อเพิ่ม robustness

เราไม่ต้องใช้สัญญาณต้นฉบับในการตรวจจับลายน้ำออกมา ฉะนั้น patchwork จึงเป็น blind watermarking detection ในกรณีที่ robustness มีค่าสูง watermark bit rate จะอยู่ที่ 1 - 10 bps

โน้ต: หัวข้อนี้ ผู้เขียนพูดสั้นมาก ผมไม่สามารถจับสาระอะไรได้มากไปกว่านี้ และรายละเอียดของกระบวนการก็บรรยายได้ชนิดที่มองภาพแทบไม่ออก เนื้อหาหนังสือตอนนี้ เหมือนกับผู้เขียนเอางานของ Bender มาย่อ เอาไว้ผมอ่าน Bender แล้วจะกลับมาเล่าเฉพาะ Patchwork ต่างหากในบล็อกตอนอื่นอีกทีละกันครับ




 

Create Date : 11 มิถุนายน 2556    
Last Update : 14 มิถุนายน 2556 16:00:37 น.
Counter : 1406 Pageviews.  

Georg von Békésy

[สารบัญกลุ่มเรื่องที่กำลังศึกษา]

Georg von Békésy (1899 - 1972) เดิมทีแกเป็นวิศวกรสื่อสารในบูดาเปส ฮังการี และเริ่มสนใจเกี่ยวกับกลไกการได้ยินในตอนที่กำลังศึกษาหาวิธีเพิ่มประสิทธิภาพโทรศัพท์ เพื่อให้เข้าใจกลไกนี้นะครับ Békésy ได้ผ่าเอา cochlea ออกมาจากหูของศพคนและสัตว์อย่างระมัดระวัง การค้นคว้าและวิจัยจริงจังในเรื่องนี้เอง ทำให้เขาได้รับรางวัลโนเบลในปี 1961

Békésy ได้สร้างโมเดลเชิงกลของ cochlea อยู่หลายโมเดล เพื่อแสดงให้เห็นถึงการสั่นของ basilar membrane รูปต่อไปนี้เป็นโมเดลหนึ่ง


ท่อทองเหลืองมีพลาสติกปิดรอยบากเปิดยาวด้านบน ซึ่งพลาสติกมีความหนาไม่คงที่ และปลายด้านหนึ่งของท่อถูกปิดด้วยลูกสูบ ส่วนปลายอีกด้านปิดด้วยฝาธรรมดา เติมน้ำให้เต็มท่อ เราจะได้ท่อที่ความยืดหยุ่นของพลาสติกไม่คงที่ตามแนวยาวทำนองเดียวกับ basilar membrane ทีนี้พอลูกสูบถูกชักเข้าชักออกด้วยความถี่ต่าง ๆ จะพบว่า จุดที่ถูกกระตุ้นสูงสุดมีการย้ายที่ไปยังจุดต่าง ๆ ตามแนวท่อ ซึ่งเรารู้สึกถึงจุดนี้ได้โดยการเอาท่อนแขนทาบลงเบา ๆ ที่สันของพลาสติก (โมเดลอันนี้ พร้อมทั้งอุปกรณ์อื่น ๆ ที่ Békésy ใช้ถูกเก็บไว้ที่พิพิธภัณฑ์มหาวิทยาลัยฮาวาย)

ความสำเร็จส่วนใหญ่ของ Békésy มาจากเทคนิคละเอียดอ่อนที่แกพัฒนาขึ้นเพื่อผ่าเอา cochlea ออกจากซากศพที่ยังไม่เน่า สามารถเปิดบางส่วนของ basilar membrane ได้ด้วยการใช้ไมโครโฟนกับเครื่องมือขนาดเล็กจิ๋วที่แกออกแบบเอง ระบายของเหลวใน cochlea ออก แล้วเติมน้ำเกลือซึ่งแขวนลอยด้วยผงอะลูมิเนียมกับถ่านหินเข้าไปแทน ทีนี้ Békésy ก็สังเกตการกระเจิงของแสงจากผงนั่นแหละครับ ทำให้ค้นพบการเคลื่อนไหวแบบเป็นลูกคลื่นของ basilar membrane ตอนที่ cochlea ถูกกระตุ้นด้วยเสียง

Békésy ศึกษาหูของสัตว์เลี้ยงลูกด้วยนมหลากหลายจำนวนมาก มีเรื่องเล่าสนุก ๆ เรื่องหนึ่งเกี่ยวกับความตื่นเต้นของแกตอนที่รู้ว่ามีช้างตายในสวนสัตว์บูดาเปส Békésy ก็ตามซากช้างไปถึงโรงงานกาวท้องถิ่น (เค้าจะเอาคอลลาเจนจากหนัง เอ็น กระดูกและเนื้อเยื่ออื่น ๆ ของช้างไปทำกาว) เพื่อผ่าเอา cochlea ออกมา สุดท้ายก็สมใจและดีใจนะครับ เพราะว่าสังเกตเห็น traveling wave ใน basilar membrane ของช้าง

(หมายเหตุ เนื้อหาเรียบเรียงจากบางส่วนของ 5.2 Structure of the Ear, The Science of Sound 3rd Ed, โดย Rossing, Moore, กับ Wheeler)

ข้อมูลอ่านเพิ่มเติมสนุก ๆ

Georg von Békésy: A Biographical Memoir โดย Floyd Ratliff
Concerning the Pleasures of Observing, and the Mechanics of the Inner Ear เป็น Nobel Lecture โดย Békésy




 

Create Date : 24 พฤษภาคม 2556    
Last Update : 24 พฤษภาคม 2556 22:36:41 น.
Counter : 1129 Pageviews.  

Introduction to Digital Audio Watermarking

[สารบัญกลุ่มเรื่องที่กำลังศึกษา]

เนื้อหาหลักของตอนนี้ผมสรุปจาก (1) บทที่ 1 Introduction to Digital Audio Watermarking หนังสือ Digital Audio Watermarking Techniques and Technologies (IGI Global, 2007) โดย Nedeljko Cvejic กับ Tapio Seppanen และ (2) บทที่ 6 Audio Watermarking: State-of-the-Art ส่วนที่ 1-4 หนังสือ Advanced Techniques in Multimedia Watermarking (Information Science Reference, 2010) โดย Dejan Drajic กับ Nedeljko Cvejic

การซ่อนข้อมูลข่าวสาร (information hiding) โดยทั่วไปแบ่งได้เป็น 2 แบบ (ซึ่งไม่จำเป็นต้องแยกออกจากกัน) คือ cryptography กับ steganography ทั้งสองแบบนี้มีจุดประสงค์ต่างกัน cryptography ทำให้ข้อมูลอ่านไม่ได้หรือเข้าถึงไม่ได้โดยบุคคลอื่นที่ไม่มีสิทธิ ส่วน steganography ทำให้บุคคลอื่นไม่รู้ว่ามีข้อมูลอยู่ หรือตรวจจับการมีอยู่ของข้อมูลไม่ได้ และแน่นอนว่า ข้อมูลนั้นอาจถูกเข้ารหัสเพื่อให้เป็นข้อมูลที่อ่านไม่ได้ด้วยก็ได้ โดยการแบ่งแยกตามจุดประสงค์นี้ watermarking หรือการทำลายน้ำ โดยฟังก์ชั่นหลักของมันจึงเป็น steganography

วิธีการทำ watermarking เริ่มต้นพัฒนาสำหรับ image และ video แล้วจึงค่อยมาถึง audio และอัลกอรึทึ่มทั้งหมดอาศัยข้อได้เปรียบจากสมบัติการรับรู้เสียงของระบบรับรู้เสียงมนุษย์ ข้อกำหนดสำคัญ ๆ ของ audio watermarking ประกอบด้วย

1. Perceptual Transparency สำหรับ audio watermarking พูดได้ว่า perceptual transparency มีความสำคัญสูงสุด เพราะเราคงไม่อยากซ่อนข้อมูลบางอย่างลงในเสียงแล้วทำให้คุณภาพเสียงต้นฉบับเปลี่ยนแปลงไปมากจนถึงขั้นรับรู้ได้ และ fidelity ของ watermarking algorithm โดยทั่วไปเราก็นิยามจากการรับรู้เสียงที่ไม่แตกต่างกันระหว่าง เสียงต้นฉบับ กับ เสียงที่ทำลายน้ำแล้ว อย่างไรก็ตาม ผู้เขียนไม่เห็นด้วยกับการนิยามเช่นนี้นัก เพราะคุณภาพเสียงหลังจากทำลายน้ำยังไงก็ต้องลดลงในกระบวนการส่งข้อมูล จึงได้เสนอว่าควรวัด fidelity โดยเปรียบเทียบการรับรู้ที่ไม่แตกต่างกันระหว่างเสียงต้นฉบับกับเสียงที่ทำลายน้ำ ณ จุดที่เสียงทั้งสองไปปรากฏที่ฝั่งผู้ใช้งาน

2. Watermark Bit Rate บิตเรตของลายน้ำที่ฝังลงไป (คำว่า ลายน้ำที่ฝังลงไป หรือ embedded watermark หมายถึง ข้อมูลที่เราต้องการซ่อนลงในเสียงต้นฉบับนะครับ) นิยามจากจำนวนบิตในหน่วยเวลา นิยมหน่วย บิตต่อวินาที หรือ bps สำหรับงานประยุกต์บางอย่าง เช่น copy control ที่ต้องการใส่ข้อมูลแค่ serial number หรือ author ID ก็ต้องการบิตเรตไม่เกิน 0.5 bps ส่วนงานอย่าง broadcast monitoring watermark อาจต้องการสูงกว่า คือ 15 bps หรือหากเป็นงานประยุกต์อย่างการซ่อนเสียงพูดลงในเสียง หรือซ่อนเสียงที่ผ่านการบีบอัดแล้วลงในเสียง บิตเรตอาจสูงถึง 150 kbps

3. Robustness นิยามจาก ความสามารถของตัวตรวจจับในการดึงลายน้ำออกมาจากเสียงที่มีการทำลายน้ำที่ผ่านการประมวลผลสัญญาณทั่ว ๆ ไป เพราะในบางงาน เช่น radio broadcast monitoring เสียงดังกล่าวจะถูกทำให้ผิดเพี้ยนไปเล็กน้อยจากการส่งข้อมูล การบีบอัด หรือการกรองความถี่ต่ำผ่าน เป็นต้น ตัวตรวจจับต้องยังคงสามารถดึงลายน้ำออกมาจากเสียงที่ผิดเพี้ยนเหล่านี้ได้ ความสามารถอันนี้แหละครับจะเป็นตัวบอกถึง robustness ของอัลกอรึทิ่ม แต่ในบางงานประยุกต์ robustness ก็ไม่ใช่สิ่งที่ต้องการเลยแม้แต่น้อย กลุ่มนี้เราเรียก fragile audio watermarking

4. Blind or Informed Watermark Detection ในบางงาน อัลกอริทึ่มตรวจจับอาจต้องใช้เสียงต้นฉบับเพื่อดึงลายน้ำออกมาจากเสียงที่ทำลายน้ำ เรียกตัวตรวจจับแบบนี้ว่า informed detection แต่ถ้าเป็น blind detection ตัวตรวจจับลายน้ำจะไม่สามารถใช้เสียงต้นฉบับ ในกรณีหลังนี้จะทำให้ข้อมูลที่ซ่อนในเสียงมีปริมาณลดลง กระบวนการฝังและดึงลายน้ำทั้งหมดสามารถแสดงได้ด้วยแบบจำลองช่องทางการสื่อสาร ซึ่งลายน้ำถูกทำให้ผิดเพี้ยนไปเนื่องจากสัญญาณรบกวนกำลังสูง (ในที่นี้ก็คือเสียงต้นฉบับ) และผลอันเนื่องด้วยช่องทางสื่อสารเอง ซึ่งสัมพันธ์กับการดำเนินการประมวลผลสัญญาณ

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

6. Computational Complexity ตัวอย่างเช่น ในงาน broadcast monitoring การฝังและการดึงลายน้ำนั้นต้องทำแบบ real time ขณะที่งานประเภท copyright protection ไม่จำเป็นต้องทำแบบ real time ฉะนั้นความซับซ้อนในการคำนวณซึ่งแปรตามเวลาจึงเป็นประเด็นที่ต้องคำนึงถึง เช่นเดียวกับ hardware และ software ที่เป็น platform ในการฝังและดึงลายน้ำก็เป็นตัวกำหนดขีดจำกัดความซับซ้อนเช่นกัน


โดยทั่วไปความต้องการของ watermarking จะขัดแย้งกัน เช่น ถ้าต้องการ robustness สูง ๆ ก็ยากที่จะทำให้ bit rate สูงและ transparency สูง, ในการประเมิน robustness ของระบบ เราจะดูว่าหลังจากผ่านการโจมตีแบบต่าง ๆ แล้วตัวตรวจจับยังสามารถดึงลายน้ำออกมาได้หรือไม่ อนึ่งการโจมตีในเหตุการณ์จริงนั้นอาจเป็นโดยจงใจจากผู้ไม่หวังดี หรือโดยธรรมชาติของงานประยุกต์นั้น ๆ ก็ได้ เช่น ในการเตรียมสัญญาณเสียงที่จะส่งออกทางสถานีวิทยุ สัญญาณจะถูกประมวลผลต่าง ๆ มากมาย เริ่มตั้งแต่การทำ normalization และบีบอัดเพื่อให้เข้ากับระดับความดังของการส่งแบบ broadcast นอกจากนี้ยังมีการใช้ equalizer, denoiser, filter ต่าง ๆ นานาอีก เห็นว่า ถ้าวิธีฝังและดึงลายน้ำไม่ทนทานต่อการประมวลผลเหล่านี้ หรือการโจมตีเหล่านี้ มันจะไม่สามารถถูกดึงออกมาที่ฝั่งรับได้

ตัวอย่างประเภทการโจมตี

1. Dynamics เป็นการเปลี่ยน loudness profile ของสัญญาณที่ทำลายน้ำ การขยายและลดความดังเป็นการโจมตีพื้นฐาน ส่วนการโจมตีที่ซับซ้อนขึ้นมาหน่อยก็เช่น การจำกัด (limiting) การขยาย (expansion) และการบีบอัด (compression) เพราะมันมีการเปลี่ยนแปลงแบบที่ไม่เป็นเชิงเส้นขึ้นอยู่กับสัญญาณเสียงต้นฉบับ เช่น (1) การบีบอัดแอมปลิจูดที่มี compression rate แปรตามแอมปลิจูด A เช่น 8.91:1 สำหรับ A > -29 dB, 1.73:1 สำหรับ -46 dB < A < -29 dB และ 1:1.61 สำหรับ A < -46 dB, (2) Denoising ซึ่งปกติใช้ในการลบสัญญาณรบกวนออกจากเสียง

2. Filtering เป็นการตัดหรือเพิ่มสเปกตรัมบางส่วน ฟิลเตอร์พื้นฐาน เช่น high-pass กับ low-pass filter (equalizer ก็ถือว่าเป็นฟิลเตอร์) พวกมันถูกใช้ในการเพิ่มหรือลดย่านความถี่ย่อยบางย่านของสเปกตรัม เช่น (1) วงจรกรองความถี่สูงผ่านที่กำจัดองค์ประกอบที่มีความถี่ต่ำกว่า 100 Hz, (2) วงจรกรองความถี่ต่ำผ่านที่กำจัดองค์ประกอบที่มีความถี่สูงกว่า 6 kHz, (3) 8-band equalizer สัญญาณจะถูกกดหรือขยาย 6 dB อย่างสุ่มในแต่ละย่านความถี่

3. Ambiance เป็น effects ที่จำลองสภาพของห้อง ซึ่ง effects ร่วมส่วนใหญ่ได้แก่การสะท้อนและหน่วงเวลา มีพารามิเตอร์หลายตัวที่จะใช้เซ็ตคุณภาพของ effect เช่น (1) Delay สัญญาณต้นฉบับที่ถูกหน่วงเวลาจะถูกทำซ้ำแล้วรวมเข้าไปในสัญญาณต้นฉบับเดิมเพื่อจำลองบริเวณที่มีพื้นที่กว้าง เช่น หน่วงเวลา 100 ms และลดแอมปลิจูดลง 50%

4. Conversion เช่น (1) Resampling เช่น เปลี่ยน sampling rate จาก 44.1 kHz เป็น 11.025 kHz แล้วแปลงกลับเป็น 44.1 kHz, (2) ดัดแปลง resolution ของแซมเปิ้ล เช่น เปลี่ยนจาก 16 bps (บิตต่อแซมเปิ้ล) เป็น 8 bps แล้วแปลงกลับเป็น 16

5. Lossy Compression เช่น (1) บีบอัดเป็นไฟล์ MPEG-1 ที่ 128 kb/s, (2) เข้ารหัสเป็น AAC ที่ 96 kb/s

6. Noise สัญญาณรบกวนอาจเป็นการโจมตีที่พบบ่อยที่สุด เพราะอุปกรณ์ฮาร์ดแวร์ทำให้เกิด noise หรืออาจมีผู้โจมตีด้วยการเพิ่ม AWGN ที่แอมปลิจูดบางค่า เช่น (1) การเพิ่ม noise ได้สูงถึง 0.91% ของค่าแซมเปิ้ลต้นฉบับจะไม่ลด subjective quality ของสัญญาณเสียงที่มีลายน้ำ

7. Modulation หมายถึง modulation effect เช่น vibrato, chorus, amplitude modulation หรือ flanging

8. Time Stretch กับ Pitch Shift การโจมตีนี้ คือ การเปลี่ยนความยาวของลำดับเสียงโดยไม่เปลี่ยน pitch หรือเปลี่ยน pitch โดยไม่เปลี่ยนความยาวของลำดับเสียง

9. Sample Permutations เช่น (1) Zero-cross-inserts เช่น หาค่า 0 แล้วแทรก 0 จำนวน 20 ตัว ณ ตำแหน่งนั้น ทำให้เกิดการหยุดช่วงสั้น ๆ (2) Copy sample จะมีการสุ่มเลือกแซมเปิ้ล และเล่นแซมเปิ้ลนั้นซ้ำ (3) Flip samples สุ่มเลือกแซมเปิ้ลแล้วเอามาสลับตำแหน่งกัน (4) Cut samples เป็นการลบช่วงของแซมเปิ้ลอย่างสุ่มออกจากสัญญาณ (ถ้าลบไม่เกิน 50 แซมเปิ้ล จะส่งผลกระทบต่อคุณภาพเสียงไม่เท่าไร)

Audio Watermarking Applications

กลุ่มงานประยุกต์ที่อาจใช้ประโยชน์จากการทำลายน้ำเสียง ได้แก่

Ownership Protection

ลายน้ำที่มีข้อมูลเกี่ยวกับกรรมสิทธิ์จะถูกฝังลงในสัญญาณต้นฉบับ โดยผู้ถือกรรมสิทธิ์เท่านั้นที่รู้เกี่ยวกับลายน้ำนี้ ฉะนั้น ลายน้ำจะต้องทนทานต่อการโจมตีและมีการรักษาความปลอดภัย เพราะเมื่อเกิดกรณีพิพาทเรื่องกรรมสิทธิ์ เจ้าของจะแสดงลายน้ำเพื่อยืนยันถึงสถานะการเป็นผู้ถือสิทธิ์ สำหรับงานประยุกต์กลุ่มนี้ ความต้องการเกี่ยวกับ capacity ต่ำครับ

Proof of Ownership

เป็นอีกระดับหนึ่งที่สูงกว่า ownership protection งานประยุกต์กลุ่มนี้มาจากปัญหาที่ว่า ถ้ามีคนอ่านลายน้ำของเราได้ ก็เป็นไปได้ที่เขาจะลบลายน้ำนั้นทิ้ง แล้วใส่ลายน้ำของตัวเองเข้าไป ดังนั้น ในการพิสูจน์ความเป็นเจ้าของ (proof of ownership) จะต้องมีการจำกัดการอ่านของตัวตรวจจับ เมื่ออ่านไม่ได้ ก็จะลบลายน้ำได้ยากมาก แต่อย่างไรก็ตาม มีผู้เสนอว่า ถึงแม้จะอ่านลายน้ำไม่ได้ แต่ผูัโจมตีอาจจะใช้ระบบการทำลายน้ำของเขาทำลายน้ำแล้วฝังลงไปให้ดูเหมือนกับลายน้ำของเขาถูกฝังอยู่ในสัญญาณต้นฉบับ (ซึ่งจริง ๆ แล้วเป็นลายน้ำที่ฝังอยู่ในสัญญาณที่มีลายน้ำของจริงอยู่อีกที) ฉะนั้น ทางแก้จึงต้องใช้อัลกอริทึ่มที่สามารถพิสูจน์ได้ว่าสัญญาณหรือไฟล์เสียงของผู้โจมตีเป็นสัญญาณที่สร้างขึ้นมาจากสัญญาณที่มีลายน้ำต้นฉบับ

Authentication and Tampering Detection

ในงานประยุกต์กลุ่ม content authentication นี้ชุดข้อมูลทุติยภูมิ (secondary data) จะถูกฝังลงในสัญญาณต้นฉบับ หลังจากนั้นข้อมูลเหล่านี้จะถูกใช้ในการตรวจสอบว่าสัญญาณต้นฉบับถูกดัดแปลงหรือไม่ กลุ่มนี้ เราไม่สนใจ robustness กับ การซ่อนไม่ให้ลายน้ำถูกตรวจจับได้ เพราะไม่เป็นประเด็นสำคัญ (ไม่ใช่แรงจูงใจของผู้โจมตี เขาไม่ได้อยากทำให้ลายน้ำหายไป) ความต้องการที่สำคัญคือความจุสูง ๆ

Fingerprinting

ใช้ลายน้ำในการติดตามหรือสืบหาร่องรอย เช่น แต่ละไฟล์ก่อนที่จะแจกจ่ายไปนั้นมีการใส่ serial no. หรือ id ที่แตกต่างกัน เมื่อมีการแอบคัดลอกไฟล์ ก็ได้จะได้ id นี้ไปด้วย ทำให้เรารู้ว่าคัดลอกมาจากไฟล์ที่ใครถือสิทธิ์ในการใช้งาน ประเด็นที่น่าสนใจ fingerprinting จะต้องมีสมบัติ anti-collusion ที่ดี นั่นคือ มันต้องป้องกันไม่ให้มีการฝัง id มากกว่า 1 ตัวลงในไฟล์ต้นฉบับ ไม่งั้นจะงง

Broadcast Monitoring

ใช้เป็นอีกทางเลือกหนึ่งของการเข้ารหัสข้อมูลการแสดงตัว (identification information) สำหรับ broadcast monitoring ข้อดีคือไม่ต้องเปลือง header แต่ปัญหาคือการทำลายน้ำมันซับซ้อนกว่าการเพิ่ม header แต่บทความก็อ้างว่ามีการใช้เป็นพื้นฐานในเชิงพาณิชย์แล้ว

Copy Control and Access Control

ลายน้ำจะถูกใช้ตาม policy ในการควบคุมการคัดลอกหรือควบคุมสิทธิ์การใช้งาน เช่น หลังจากตัวอ่านอ่านลายน้ำและถอดรหัสข้อมูลเสร็จแล้ว (ขึ้นอยู่กับ policy) จะมีการควบคุมฟังก์ชั่นต่าง ๆ ของซอฟท์แวร์หรือฮาร์ดแวร์ เช่น เปิดหรือปิดมอดูลการอัดบันทึก

Information Carrier

เช่น การส่ง metadata (เช่น คลิปเสียงอื่น ข้อมูลเกี่ยวกับผู้ประพันธ์เพลง ข้อมูลนักดนตรี ฯลฯ) ไปพร้อมกับเสียงต้นฉบับ กลุ่มนี้เน้นความจุที่สูงมาก ๆ




 

Create Date : 24 พฤษภาคม 2556    
Last Update : 11 มิถุนายน 2556 2:01:04 น.
Counter : 1655 Pageviews.  

1  2  3  4  5  6  7  8  9  
 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.