An Audio Watermarking Algorithm Based on Fast Fourier Transform
ขอประเดิมบล็อกแรกด้วยอะไรง่าย ๆ ก่อน เนื้อหาตอนนี้ ผมสรุปจากบทความในชื่อเดียวกันของ X. Wen, X. Ding, J. Li, L. Gao กับ H. Sun จาก 2009 IEEE International Conference on Information Management, Innovation Management and Industrial Engineering Proceeding หน้า 363-366 ความสมบูรณ์ยังไม่มากนะครับ เพราะเป็น conference paper และอธิบายขั้นตอนการทำ watermark ไม่ละเอียดเลย แต่ผมคิดว่าพอเห็นภาพรวม ผู้เขียนนำเสนอ algorithm พร้อมกับผลการทดลองเมื่อผ่านการโจมตี 3 แบบ

ผู้เขียนใช้ประโยชน์จากข้อเท็จจริงที่ว่า ความสามารถในการรับรู้เสียงของมนุษย์นั้น อ่อนไหวต่อ amplitude spectrum ของสัญญาณเสียงมากกว่าต่อเฟส ยิ่งความถี่สูงกว่า 2 kHz เรายิ่งไม่อ่อนไหวต่อเฟสหนักขึ้นไปอีก หมายความว่า ถ้าเฟสขององค์ประกอบความถี่สูงของสัญญาณเสียงเพี้ยนไปนิดหน่อย หูเรามิอาจรับรู้ถึงความผิดเพี้ยนนั้น ด้วยเหตุนี้ ผู้เขียนจึงซ่อน watermark ลงใน phase coefficient โดยเริ่มต้นของเฟสที่ความถี่ตั้งแต่ 3 kHz

ข้อมูลที่ผู้เขียนจะซ่อนลงในเสียงคือ binary image ขั้นตอนแรกจึงเป็นการเตรียม binary image ให้พร้อมสำหรับยัดลงไปในสัญญาณเสียง ดูรูป


binary image คือสี่เหลี่ยมสีฟ้า 2 มิติ เราเอามาทำให้มันเป็น 1 มิติ เรียกว่า watermarking information (W) จากนั้นใช้ข้อมูลชุดหนึ่ง คือ คีย์ (K) มาสร้างข้อมูล binary แบบ pseudo random (สีเหลือง) ที่มีความยาว (จำนวนบิต) เท่ากับ W แล้วนำไปเข้ารหัส (encrypt) กับ W เพื่อให้ได้ Wk (สีส้ม) บทความไม่ให้รายละเอียดว่าเข้ารหัสแบบไหน คำถาม เข้ารหัสทำไม? คำตอบ ก็เพื่อให้ W เป็นความลับเท่านั้นแหละครับ ต่อมา เอา Wk มาเข้ารหัส BCH ผลลัพธ์ที่ได้กลายเป็นสีแดง BCH code เป็น error-correcting code แบบหนึ่ง (ชื่อ BCH มาชื่อตัวอักษรต้นของชื่อผู้คิดค้นสามคนเรียงต่อกัน Hocquenghem, Bose, Ray-Chaudhuri) เหตุผลของการเข้ารหัส BCH ก็เพื่อ หากมีบิตผิดเพี้ยนหลังจากถูกโจมตี เราอาจจะสามารถตรวจจับบิตที่ผิดและแก้ไขมันได้ สุดท้าย ทำสีแดงให้เป็นสีเขียวด้วยการ modulate ให้ Wk มีค่าอยู่ระหว่าง -1 กับ 1 (แทนที่จะเป็น 0 กับ 1) พร้อมหั่นเป็นท่อน ๆ ขนาด L บิต สมมติว่าแบ่งได้ทั้งหมด x ท่อน

ขั้นตอนการฝังข้อมูลที่ได้จากการเตรียมตามย่อหน้าที่แล้วลงในสัญญาณเสียง


เริ่มจาก แบ่งสัญญาณเสียงออกเป็น x ท่อน แล้วเอาแต่ละท่อนไปทำ FFT ผลคือเราจะได้องค์ประกอบทางความถี่ของสัญญาณเสียงของแต่ละท่อนใช่มั้ยครับ ในแต่ละท่อน เราดึง phase coefficient (P) ขององค์ประกอบที่มีความถี่ตั้งแต่ 3 kHz ออกมา L ตัว แล้วเปลี่ยนค่าของทั้ง L ตัวนั้นตามสมการ Pw = P(1 + aWk) เมื่อ a คือพารามิเตอร์ตัวหนึ่ง เรียกว่า embedding intension เราก็จะได้ phase coefficient ตัวใหม่ (Pw) ที่มีค่าขึ้นอยู่กับ watermark ใช้ Pw ในการทำ inverse FFT ได้สัญญาณเสียงที่ฝังลายน้ำเรียบร้อยแล้ว สรุปนะครับ สิ่งที่ผู้เขียนทำมาทั้งหมดก็แค่ เปลี่ยนเฟสขององค์ประกอบความถี่สูงเล็กน้อย (เล็กน้อยแค่ไหน ขึ้นอยู่กับค่า a) และหูของคนเรารับรู้เสียงที่ได้จากการเปลี่ยนเฟสขององค์ประกอบความถี่สูงเล็กน้อยแทบไม่ต่างไปจากเสียงต้นฉบับ ในบทความนี้ ผู้เขียนไม่ได้แสดงผลการทดสอบสมบัติ inaudibility เราจึงไม่รู้ว่าคุณภาพของเสียงหลังจากฝังรูปภาพลงไปแล้วเป็นอย่างไร

คำถาม เราจะดึง binary image กลับคืนออกมาจากเสียงยังไง? คำตอบ ทำเหมือนตอนฝังข้อมูลนั่นแหละครับ เพียงคราวนี้บิตของ watermark ได้จากการย้ายข้างสมการเป็น W*k = (Pw - P)/aP หมายความว่า เราต้องใช้สัญญาณเสียงต้นฉบับในการดึง W*k ออกมา เราจัดกลุ่ม watermarking ที่ต้องอาศัยสัญญาณต้นฉบับในการดึง watermark bits ออกมาว่าเป็นพวก non-blind watermarking

ข้างล่างคือรูปแสดงสัญญาณเสียง (Figure 1) หลังจากที่ฝังภาพ (Figure 2) แล้วได้สัญญาณเสียงที่ซ่อนลายน้ำ (Figure 3)


ผู้เขียนบทความได้ทำการทดลองโจมตี 3 อย่าง คือ (1.) Gaussian White Noise (คำว่า white noise หมายถึง สัญญาณสุ่มที่มี power spectral density แบนราบ นั่นคือ สัญญาณที่มีกำลังงานเท่ากันตลอดในทุกย่านความถี่ ทีนี้ ถ้าแต่ละ sample ของ random noise นั้นมีการกระจายปกติที่ค่าเฉลี่ยเท่ากับศูนย์ เราก็เรียกว่า Gaussian white noise) ซึ่งมีค่าความแปรปรวนเท่ากับ 0.01 (2.) Low-Pass Filter ที่มีความถี่ cut-off เท่ากับ 5 kHz และ (3.) Re-sampling ที่มีค่า extraction & interpolation coefficient เท่ากับ 2

รูป watermark ที่ดึงออกมาหลังผ่านการโจมตีทั้ง 3 แสดงเรียงจากซ้ายไปขวาตามลำดับ



ผู้เขียนบอกว่า แม้มันจะไม่ทนทานต่อ re-sampling เท่าไรนัก แต่ก็ยังพออ่านออกอยู่นะ



Create Date : 05 เมษายน 2556
Last Update : 5 เมษายน 2556 19:37:27 น.
Counter : 1996 Pageviews.

0 comments
BUDDY คู่หู คู่ฮา multiple
(3 ม.ค. 2567 04:49:04 น.)
๏ ... รามคำแหง แรงคำหาม ... ๏ นกโก๊ก
(2 ม.ค. 2567 14:22:51 น.)
สวัสดีปีใหม่ Rain_sk
(1 ม.ค. 2567 21:38:33 น.)
สวัสดีปีใหม่ Rain_sk
(1 ม.ค. 2567 21:38:33 น.)
ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
 *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 

Zol.BlogGang.com

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

[ดู Profile ทั้งหมด]
 ผู้ติดตามบล็อก : 85 คน [?]

บทความทั้งหมด