1. Trang chủ
  2. » Giáo Dục - Đào Tạo

HỌC PHẦN các kỹ THUẬT GIẤU TIN báo cáo thuyết trình GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT

30 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giấu tin trong ảnh phương pháp nén ảnh DCT
Tác giả Tạ Hoàng Nhi, Nguyễn Thị Kim Ngân
Người hướng dẫn Đỗ Xuân Chợ
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo thuyết trình
Định dạng
Số trang 30
Dung lượng 1,73 MB

Cấu trúc

  • 1. Các nguyên tắc của nén ảnh (4)
  • 2. Tổng quan về phương pháp DCT(Discrete Cosine Transform – DCT) (4)
  • 3. Biến đổi DCT (6)
  • 4. Lượng tử hóa (13)
  • 5. Thuật toán giấu tin (15)

Nội dung

Các nguyên tắc của nén ảnh

Tất cả các ảnh số đều có đặc điểm chung là sự tương quan cao giữa các pixel liền kề, điều này gây ra tình trạng dư thừa thông tin trong việc biểu diễn ảnh.

Dư thừa thông tin ảnh hưởng đến hiệu quả mã hóa, vì vậy cần tìm các biểu diễn ảnh với tương quan nhỏ nhất để giảm thiểu độ dư thừa Có hai loại dư thừa thông tin chính cần được phân loại.

Dư thừa trong miền không gian đề cập đến mối quan hệ giữa các giá trị pixel của ảnh, cho thấy rằng các pixel lân cận thường có giá trị tương tự nhau, ngoại trừ những pixel nằm ở rìa ảnh.

Dư thừa trong miền tần số liên quan đến mối tương quan giữa các mặt phẳng màu hoặc dải phổ khác nhau Nghiên cứu về nén ảnh tập trung vào việc giảm số bit cần thiết để biểu diễn ảnh bằng cách loại bỏ dư thừa trong cả miền không gian và miền tần số Có hai loại thuật toán biển đổi ảnh dùng để nén hoặc mã hóa: không mất dữ liệu và có mất dữ liệu.

Tổng quan về phương pháp DCT(Discrete Cosine Transform – DCT)

Thuật toán DCT là thuật toán biển đổi cosin rời rạc được chọn để trình bày

Vì nó có một số ưu điểm so với các thuật toán khác và nó được chọn sử dụng cho chuẩn ảnh JPEG (Joint Photographic Experts Group)

Mã hóa ảnh theo tiêu chuẩn JPEG dựa trên thuật toán DCT và xử lý nén Hoffman có thể mô tả qua các bước như dưới đây:

Bước 1 Ảnh gốc được chia thành từng mảng pixel thông thường là kích thước 8x8 pixels

Bước 2 Duyệt mảng từ trái qua phải và từ trên xuống dưới Biến đổi

DCT cho từng khối (Zigzag)

Bước 3 Mỗi khối được lượng tử hoá

Bước 4 Các khối được nén lại để giảm không gian chứa

Để khôi phục lại ảnh đã qua xử lý, bạn cần thực hiện theo trình tự ngược lại bằng cách đọc từng khối theo phương pháp zigzag Sau đó, áp dụng biến đổi cosin rời rạc ngược (IDCT - Inverse Discrete Cosine Transform) để tái tạo lại hình ảnh.

Hình 1: Sơ đồ tổng quan về quá trình giấu tin trong ảnh sử dụng phương pháp biến đổi DCT

Ví dụ ứng dụng DCT trên thực tế:

Hình 2: Các thành phần của hệ thống truyền hình ảnh / video điển hình

Biến đổi DCT

Trước khi thực hiện biến đổi DCT, ảnh gốc với kích thước lớn được chia thành các khối 8 x 8 pixel đồng nhất Mỗi khối này sẽ được xử lý riêng biệt để tối ưu hóa hiệu quả của quá trình biến đổi.

Ba giá trị Y (độ sáng), Cb và Cr (tín hiệu màu) được phân tích qua ma trận 8 pixel có tính trực giao, cho phép dễ dàng tính toán ma trận nghịch đảo Trong toán học, tính trực giao là khái niệm tổng quát hóa tính vuông góc trong đại số tuyến tính, với hai phần tử u và v trong không gian vectơ được coi là trực giao nếu B(u, v) = 0 Trong không gian hàm, các hàm trực giao được sử dụng để xây dựng cơ sở cho các phép toán.

Để điều chỉnh các giá trị trong khối ảnh, cần trừ đi một giá trị nhất định sao cho giá trị trung tâm trở thành 0 Chẳng hạn, trong một khối 8x8 có giá trị trong khoảng [0; 255], giá trị ở giữa thường là 128 Do đó, ta cần trừ đi 128 từ tất cả các giá trị trong khối, để chuyển đổi chúng về khoảng [-128; 127], với giá trị trung tâm là 0 Việc này giúp chuẩn hóa màu sắc từ mức 0 đến 255.

Mỗi bức ảnh được mô tả chính xác bằng 256 mức xám, trong đó 0 đại diện cho màu đen hoàn toàn và 255 cho màu trắng hoàn toàn Khi xử lý DCT, các giá trị pixel trong khối 8 pixel sẽ được điều chỉnh bằng cách trừ 128 từ mỗi giá trị, vì DCT hoạt động với giải giá trị từ -128 đến 127.

Hình 3: Tín hiệu màu của pixel

DCT một chiều chuyển đổi tín hiệu thành chuỗi các hệ số rời rạc, phản ánh biên độ tại các thời điểm rời rạc theo thời gian hoặc không gian Mỗi hệ số thể hiện biên độ của một thành phần tần số nhất định trong tín hiệu gốc, trong đó hệ số đầu tiên đại diện cho mức DC trung bình Các hệ số còn lại, gọi là hệ số AC, thể hiện các thành phần tần số không gian cao hơn và thường có giá trị gần hoặc bằng 0 Quá trình biến đổi DCT thuận (FDCT) được định nghĩa để thực hiện chuyển đổi này.

Hàm biến đổi DCT ngược (một chiều): Đối với k = 0 => X(0) = √ 1

• X(k) là chuỗi kết quả k chỉ số của hệ số khai triển

• x(m) là giá trị mẫu m m chỉ số của mẫu

• N chỉ số mẫu có trong tín hiệu

Hệ số biến đổi đầu tiên trong chuỗi mẫu là giá trị trung bình, được gọi là hệ số DC Tất cả các hệ số biến đổi còn lại được phân loại là hệ số AC.

Biến đổi DCT hai chiều (2-D) được dùng cho các khối ảnh có kích thước 8x8 Quá trình biến đổi DCT thuận được định nghĩa như sau:

• f(j ,k) là các mẫu của ảnh gốc trong khối 8x8 pixel

• F(u, v) là các hệ số của khối DCT 8x8

Phép biến đổi DCT hai chiều là một phép biến đổi đối xứng và nghịch, cho phép tái tạo lại các giá trị mẫu f(j, k) dựa trên các hệ số F(u,v) theo công thức cụ thể.

Để nắm bắt rõ ràng về vấn đề biến đổi DCT, bài viết này sẽ giới thiệu quy trình chuyển đổi hình ảnh từ miền không gian sang miền tần số.

- Đầu vào: Một ma trận điểm ảnh có kích thước 8x8 pixel

Bước 1 : Tiền xử lý ảnh

• Trừ các giá trị của các pixel đi 128 thu được ma trận với M

Bước 2 : Tính toán ma trận DCT:

Ma trận T được định nghĩa theo công thức:

Với i là số hàng, j là số cột và N là giá trị tối đa của số pixel, đầu vào được xác định là khối 8x8 pixel, dẫn đến ma trận kết quả tương ứng.

Bước 3: Biến đổi cosine rời rạc : D = TMT’

Kết quả rút ra cho thấy ma trận có kích thước từ 0 đến 7, trong đó giá trị góc trên cùng bên trái C00 đại diện cho giá trị thấp nhất trong miền tần số, còn giá trị góc dưới cùng bên phải C77 thể hiện giá trị cao nhất trong miền tần số.

Và một lưu ý quan trọng là mắt người nhạy cảm nhất với vùng giá trị tần số thấp và trong bước lượng tử sẽ phản ánh điều này

Biến đổi DCT thể hiện phổ tần số của tín hiệu thông qua các mẫu f(j, k) Tuy nhiên, phép biến đổi DCT không có khả năng nén dữ liệu, dẫn đến việc từ 64 mẫu nhận được không thể giảm thiểu kích thước thông tin.

Phép biến đổi DCT tạo ra 64 hệ số tương ứng, trong đó giá trị DC (F(0, 0)) thường là lớn nhất Các hệ số liền kề với giá trị DC thuộc tần số thấp có giá trị nhỏ hơn, trong khi các hệ số ứng với tần số cao có giá trị rất nhỏ Khối hệ số DCT được phân chia thành ba miền: miền tần số thấp, miền tần số cao và miền tần số trung gian.

11 giữa Miền tần số thấp chứa các thông tin quan trọng ảnh hưởng đến tri giác Miền tần số cao thường không mang tính tri giác cao

• DCT làm giảm độ tương quan không gian của thông tin trong khối Vì vậy, việc biểu diễn DCT có độ dư thừa thông tin ít hơn

DCT cung cấp thông tin về tần số không gian của dữ liệu trong khối Dựa trên đặc điểm sinh lý thị giác, chỉ các hệ số DCT quan trọng được mã hóa.

Code giả mã thuật toán bằng C++

#include using namespace std;

#define pi 3.142857 const int m = 8, n = 8; int dctTransform(int matrix[][n])

{ float dct[m][n]; float ci, cj, dct1, sum; for (int i = 0; i < m; i++) { for ( int j = 0; j < n; j++) {

//ci vs cj phu thuoc vao so hang so cot cua ma tran if (i == 0) ci = 1 / sqrt(m); else ci = sqrt(2) / sqrt(m); if (j == 0) cj = 1 / sqrt(n); else cj = sqrt(2) / sqrt(n);

12 sum = 0; for (int k = 0; k < m; k++) { for (int l = 0; l < n; l++) { dct1 = matrix[k][l] * cos((2 * k + 1) * i * pi / (2 * m)) * cos((2 * l + 1) * j * pi / (2 * n)); sum = sum + dct1;

} } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { printf("%f\t", dct[i][j]);

{ int matrix[m][n] ; int a=0; for (int i = 0; i < m; i++) { for ( int j = 0; j < n; j++) { cin>>a; matrix[i][j] = a-128;

Lượng tử hóa

Quá trình lượng tử hóa và mã hoá các hệ số DCT là quá trình nén thông tin, vì bản thân phép biến đổi DCT không nén thông tin

 Đặc trưng thị giác của mắt người

Mắt người có độ nhạy cảm thấp với các thành phần tần số cao và sai số trong những vùng ảnh có nhiều chi tiết và biến đổi nhanh chóng Bên cạnh đó, sự phản ánh theo hướng xiên ít bị ảnh hưởng hơn so với các hướng ngang và thẳng đứng.

Sai số của các hệ số tần số cao và sai số theo đường chéo có ảnh hưởng không đáng kể đến chất lượng ảnh khôi phục Điều này cho phép áp dụng bộ lượng tử hóa với bước lượng tử thô hơn cho các hệ số DCT ở tần số cao và theo hướng chéo.

 Còn hệ số một chiều DC đòi hỏi độ chính xác cao nhất, bởi lẽ nó biểu thị độ chói trung bình của từng khối phần tử ảnh

- Sau khi thực hiện biến đổi DCT, 64 hệ số sẽ được lượng tử hóa dựa trên một bảng lượng tử gồm 64 phẩn tử Q(u, v) với 0 ≤ u, v ≤ 7

- Các phần tử trong bảng lượng tử có giá trị từ 1 đến 255 được gọi là các bước nhảy cho các hệ số DCT

Quá trình lượng tử liên quan đến việc chia các hệ số DCT cho bước nhảy lượng tử tương ứng, và kết quả cuối cùng sẽ được làm tròn xuống số nguyên gần nhất.

- Công thức thể hiện lượng tử: 𝐹 𝑄 (𝑢, 𝑣) = 𝐼𝑛𝑡𝑒𝑔𝑒𝑟𝑅𝑜𝑢𝑛𝑑( 𝐹(𝑢,𝑣)

Mục đích của việc lượng tử hóa là giảm số lượng bit cần thiết để lưu trữ các hệ số biến đổi bằng cách giảm độ chính xác của chúng Quá trình này dẫn đến việc mất thông tin trong dữ liệu.

Việc lựa chọn các ma trận lượng tử cụ thể cho phép người dùng đạt được các mức độ nén và chất lượng hình ảnh khác nhau Người dùng có thể quyết định mức chất lượng từ 1 đến 100, trong đó 1 đại diện cho chất lượng hình ảnh kém và độ nén cao, còn 100 thể hiện chất lượng ảnh cao và độ nén thấp.

- Ví dụ với ma trận D thu được từ phép biến đổi DCT Với ma trận lượng tử Q cho trước

Trong ví dụ này chọn ma trận lượng tử hóa là 𝑄 50

- Lượng tử hóa đạt được bởi việc chia mỗi phần tử trong ma trận D cho ma trận Q, sau đó lấy giá trị gần nhất

- Dùng công thức Huffman ở trên với đầu vào là 2 ma trận D và Q

Các hệ số gần góc bên trái thể hiện tần số thấp mà mắt người nhạy cảm nhất Các số 0 đại diện cho tần số ít quan trọng hơn và đã bị loại bỏ, dẫn đến mất mát trong quá trình nén Các chỉ số khác 0 còn lại sẽ được sử dụng để tái tạo lại hình ảnh.

Thuật toán giấu tin

- Đối với ảnh JPEG, dữ liệu gốc là các bảng DCT sau khi được lượng tử hóa

- Mỗi bảng chứa 64 hệ số, mỗi hệ số là số nguyên có giá trị nằm trong đoạn [-2048;2047]

- Đặc điểm của bảng DCT là càng về cuối bảng thì các giá trị có xu hướng nhỏ dần

- Có nhiều thuật toán khác nhau có thể áp dụng để giấu tin vào hệ số DCT như:

 Trong những phần sau sẽ sử dụng thuật toán LSB để minh họa

• Các hệ số DCT đã được lượng tử hóa (C50 đã thu được ở bước trên)

- Đầu ra LSB: ảnh chứa thông điệp

- Trong quá trình giấu tin sử dụng LSB cần lưu ý:

• Ảnh dùng để giấu tin có kích thước rất lớn (bao gồm nhiều khối

 có được nhiều ma trận lượng tử C khác nhau

• Thông thường người giấu tin sẽ tách chuỗi tin cần giấy ra các ký tự và giấu mỗi ký tự vào mỗi ma trận Ci

• Không chắn chắn được tọa độ DC trong mỗi ma trận là như nhau nên cần tìm ra các LSB của bit đó

 áp dụng thuật toán zigzac

- 3 pixel cuối cùng của dãy sẽ ứng với các số 0 trong ma trận C50 thuộc phần

DC ( là phần sẽ giấu tin)

 Đổi giá trị 3 pixel này bằng 3 bit của bản rỏ ban đầu (010)

 Kết quả thu được ma trận mới:

- Sau khi đã giấu tin vào các hệ số của bảng lượng tử hóa, người ta tiến hành phục hồi ảnh sử dụng công thức sau:

Ri j = Qi j * Ci j Trong đó:

• Qi j là ma trận lượng tử đã được sử dụng ở trên (Q50)

• Ci j là kết quả đã được giấu tin ở trên (C50LSB)

- Cuối cùng ta thực hiện IDCT ma trận R theo công thức sau:

 Ta thu được ảnh mới:

- So sánh 2 ma trận điểm ảnh N và Nnew ta thấy có rất ít thông số bị thay đổi.

- Trước hết để nhúng thông

- Chọn INSERT Watermark để bắt đầu chương trình

Giao diện sau khi chọn Insert watermark

B1: Chọn ảnh cần giấu tin : ảnh ở đây là gautruc.png

B2: Định dạng hình ảnh đầu ra và đặt tên : gautruc1.bmp

B3 : Chọn thông điệp muốn nhúng vào trong ảnh dạng Text và viết thông điệp cần nhúng vào trong ảnh

B4: Để an toàn trong quá trình truyền ảnh tránh bị phát hiện thông điệp ta truyền vào đó 1 key để mã hóa

B5: Thực hiện giấu tin -> cho ra hình ảnh gautruc1.bmp

B6 : Quay lại giao diện chính và chọn EXTRACT Watermark để trích xuất thông điệp được nhúng trong ảnh

B7: Điền thông tin ảnh cần trích xuất (gautruc1.bmp), dạng thông tin cần trích xuất là Text và key ban đầu được thỏa thuận giữa 2 bên là 123

B8: Khi thực hiện trích xuất thông tin, chúng ta nhận được thông điệp Tuy nhiên, do bảng chữ cái ASCII không hỗ trợ một số dấu câu và một số ký tự, có thể xảy ra lỗi font trong quá trình này.

2 Demo 2 : Nhúng logo trong ảnh

- Ta thực hiện tương tự như Demo 1 nhúng văn bản trong ảnh nhưng ở đây chúng ta chọn loại cần nhúng là “Image”

Chọn định dạng là “ Image”

28 Ảnh sau khi được thực hiện nhúng

- Quay lại giao diện ta chọn EXTRACT Watermark rồi chọn ảnh cần trích xuất

- Chọn Extract ta thu được ảnh nhúng trong ảnh gautruc.png

Ngày đăng: 18/10/2022, 05:03

HÌNH ẢNH LIÊN QUAN

Hình 2: Các thành phần của hệ thống truyền hình ảnh / video điển hình - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
Hình 2 Các thành phần của hệ thống truyền hình ảnh / video điển hình (Trang 5)
Hình 1: Sơ đồ tổng quan về quá trình giấu tin trong ảnh sử dụng phương pháp biến đổi DCT - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
Hình 1 Sơ đồ tổng quan về quá trình giấu tin trong ảnh sử dụng phương pháp biến đổi DCT (Trang 5)
Hình 3: Tín hiệu màu của pixel - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
Hình 3 Tín hiệu màu của pixel (Trang 7)
- Đối với ảnh JPEG, dữ liệu gốc là các bảng DCT sau khi được lượng tử hóa. - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
i với ảnh JPEG, dữ liệu gốc là các bảng DCT sau khi được lượng tử hóa (Trang 15)
- Sau khi đã giấu tin vào các hệ số của bảng lượng tử hóa, người ta tiến hành phục hồi ảnh sử dụng công thức sau: - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
au khi đã giấu tin vào các hệ số của bảng lượng tử hóa, người ta tiến hành phục hồi ảnh sử dụng công thức sau: (Trang 17)
17  Kết quả thu được ma trận mới: - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
17  Kết quả thu được ma trận mới: (Trang 17)
B5: Thực hiện giấu tin -&gt; cho ra hình ảnh gautruc1.bmp - HỌC PHẦN  các kỹ THUẬT GIẤU TIN báo cáo thuyết trình  GIẤU TIN TRONG ẢNH PHƯƠNG PHÁP nén ẢNH DCT
5 Thực hiện giấu tin -&gt; cho ra hình ảnh gautruc1.bmp (Trang 21)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w