PHƯƠNG PHÁP NÉN ẢNH DCT (Discrete Cosin Transform) VÀ ẨN TIN

13 5K 39
PHƯƠNG PHÁP NÉN ẢNH DCT (Discrete Cosin Transform) VÀ ẨN TIN

Đ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

Ngày này mạng máy tính đã trở nên quen thuộc và phát triển rộng khắp vì thế nhu cầu sử dụng tăng cao. Điều này dẫn tới việc dữ liệu truyền tải qua mạng máy tính cũng rất lớn. Phần lớn dữ liệu được truyển tải trên mạng máy tính thường thuộc các loại sau: ký tự, ảnh và các loại media còn lại.Việc hàng ngày lượng dữ liệu lớn được luân chuyển sử dụng trên mạng tạo nên các hoạt động truyển tải, lưu trữ, tái sử dụng dẫn đến hành vi vi phạm và đánh cắp ở nhiều mức độ khác nhau và khó kiểm soát. Cũng như việc đảm bảo an toàn hay bảo mật thông tin cũng được quan tâm.

PHƯƠNG PHÁP NÉN ẢNH DCT VÀ ẨN TIN Hướng dẫn: PGS.TS Trịnh Nhật Tiến Học viên: Nguyễn Quang Hiệp Mã số: 12025013 Lớp: Mật mã và an toàn dữ liệu LỜI NÓI ĐẦU Ngày này mạng máy tính đã trở nên quen thuộc và phát triển rộng khắp vì thế nhu cầu sử dụng tăng cao. Điều này dẫn tới việc dữ liệu truyền tải qua mạng máy tính cũng rất lớn. Phần lớn dữ liệu được truyển tải trên mạng máy tính thường thuộc các loại sau: ký tự, ảnh và các loại media còn lại. Việc hàng ngày lượng dữ liệu lớn được luân chuyển sử dụng trên mạng tạo nên các hoạt động truyển tải, lưu trữ, tái sử dụng dẫn đến hành vi vi phạm và đánh cắp ở nhiều mức độ khác nhau và khó kiểm soát. Cũng như việc đảm bảo an toàn hay bảo mật thông tin cũng được quan tâm. Vì thế dẫn đến việc có nhiều thuật toán được phát minh và sử dụng để nén và mã hóa ảnh một trong những dữ liệu sử dụng nhiều nhất trên mạng máy tính. Tác dụng của việc nén và mã hóa ảnh nhằm vào các mục đích như: • Giảm kích thước ảnh mà chất lượng ảnh vẫn đảm bảo. Tăng khả năng truyền tải cũng như lưu trữ. • Chèn thêm các thông tin khác như bản quyền, xuất xứ hoặc các thông tin ẩn nhằm tránh việc bị sửa đổi trái phép, sao lưu tái sử dụng mà không có sự cho phép của nguời sở hữu hợp pháp. • Truyền đi thông tin ẩn không muốn bên thứ ba biết được. MỘT VÀI PHƯƠNG PHÁP DÙNG ĐỂ NÉN ẢNH Phương pháp biến đổi DCT, biến đổi cosin rời rạc thường được sử dụng trong ảnh chuẩn JPEG và GIF. Phương pháp biến đổi DFT, biến đổi Furier khắc phục được một số nhược điểm của biến đổi DCT. CÁC NGUYÊN TẮC CỦA NÉN ẢNH Một tính chất chung nhất của tất cả các ảnh số đó là tương quan giữa các pixel ở cạnh nhau lớn, điều này dẫn đến dư thừa thông tin để biểu diễn ảnh. Dư thừa thông tin sẽ làm cho việc mã hoá không tối ưu. Do đó công việc cần làm để nén ảnh là phải tìm được các biểu diễn ảnh với tương quan nhỏ nhất để giảm thiểu độ dư thừa thông tin của ảnh. Thực tế, có hai kiểu dư thừa thông tin được phân loại như sau: • Dư thừa trong miền không gian: tương quan giữa các giá trị pixel của ảnh, điều này có nghĩa rằng các pixel lân cận của ảnh có giá trị gần giống nhau (trừ những pixel ở giáp đường biên ảnh) • Dư thừa trong miền tần số: Tương quan giữa các mặt phẳng màu hoặc dải phổ khác nhau.Trọng tâm của các nghiên cứu về nén ảnh là tìm cách giảm số bit cần để biểu diễn ảnh bằng việc loại bỏ dư thừa trong miền không gian và miền tần số càng nhiều càng tốt Trong số các thuật toán biển đổi ảnh để nén hoặc mã hóa có hai loại: Không mất dữ liệu và có mất dữ liệu. Trong báo cáo này 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: 1. Ảnh gốc được chia thành từng mảng pixel thông thường là kích thước 8x8 pixels. 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) 3. Mỗi khối được lượng tử hoá. 4. Các khối được nén lại để giảm không gian chứa. 5. Khi cần lấy lại ảnh thì làm theo trình tự ngược lại, đọc zigzag từng khối như trước và sử dụng biến đổi cosin rời rạc ngược IDCT - Inverse Discrete Cosin Transform để lấy lại ảnh đã qua xử lý. Công thức DCT được biểu diễn như bên dưới: Với khối dữ liệu kích thước 8x8 thì ta có công thức như hình bên dưới: Vì ma trận phân tích từng khối 8 pixel có tính trực giao nên việc tính được ra ma trận nghịch đảo là dễ dàng. Với việc đánh giá trị màu sắc bằng mức từ 0 đến 255 với 0 là đen hoàn toàn và 255 là trắng hoàn toàn. Vì vậy mỗi bức ảnh sẽ được mô tả chính xác bằng 256 mức xám này. Vì DCT được thiết kế để làm việc với giải giá trị từ -128 đến 127 nên một khối 8 pixel khi đưa vào xử lý DCT thì trước tiên là trừ 128 cho mỗi giá trị. Ví dụ với mảng bên dưới, mảng ban đầu là: Mảng sau khi trừ mặc định 128 là: Giờ biển đổi DCT là thực hiện bước nhân ma trận theo công thức: Sau biến đổi ta được một ma trận mới như hình bên dưới: Đây là một ma trận mỗi chiều từ 0 đến 7 với giá trị góc trên cùng phía trái là C00 là giá trị thấp nhất trong miền tần số của bảng giá trị và tương tự thì giá trị góc dưới cùng bên phải C77 là giá trị cao nhất 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. LƯỢNG TỬ HÓA Đây là bước quan trọng nhất nó chính là bước làm cho tiêu chuẩn JPEG được lựa chọn sử dụng rộng rãi. Ta sẽ có thang giá trị từ 1 đến 100 cho chất lượng ảnh với giá trị 1 là chất lượng ảnh thấp nhất và 100 là chất lượng ảnh cao nhất. Tương ứng sẽ là 1 là giá trị có tỉ số nén cao nhất và 100 thì ngược lại tỉ số nén sẽ thấp nhất. Việc lựa chọn tỉ số nén và chất lượng ảnh tùy thuộc từng nhu cầu sử dụng cụ thể để đáp ứng. Dưới đây là ma trận biến đổi DCT với giá trị 50, cân bằng giữa chất lượng hình ảnh và tỉ số nén. Lấy bảng này làm giá trị chuẩn thì khi muốn chất lượng ảnh cao hơn tức là tỉ số lớn hơn 50 ta chỉ cần lấy bảng này nhân với (100-mức mong muốn)/50, còn với chất lượng thấp hơn 50 ta nhân với 50/mức mong muốn.Dưới đây là hai bảng giá trị với 10 và 90 sau khi sử dụng tính toán trên và các gía trị được làm tròn về con số nguyên dương. Có dải giá trị từ 1 đến 255. Lượng tử hóa sẽ được sau khi ta thực hiên việc làm tròn với công thức. Sau bước làm tròn này như đã nói về giá trị góc trên bên trái C00 trong miền tần số là ảnh hướng lớn tới thị giác người. Nên sau khi có được C thì các giá trị bằng 0 là các giá trị không ảnh hưởng tới chất lượng ảnh trong mắt người. Sau bước này nếu dùng ma trận Q10 thì ta có nhiều giá trị bằng 0 hơn vì chất lượng ảnh thấp còn với Q90 thì ta có ít giá trị bằng 0 hơn. Bước cuối cùng ta chuyển giá trị ảnh trong ma trận này thành dạng binary để lưu trữ. Ta đọc theo quy định zigzag trong mảng này. Để giải nén ngược lại và đọc lại thành ảnh ta có các bước sau: Ta sử dụng lại mảng giá trị Q đã dùng như ở trên ta có Q10 và Q90 để tính ngược lại ra mảng R như hình bên dưới: Sau đó thì sử dụng IDCT với ma trận R vừa thu được rồi cộng ngược lại tiếp với 128 là giá trị ban đầu ta mặc định đã trừ đi ở đầu vào ma trận Q. Mảng sau khi thu được ta có thể so sánh so với bảng mã giá trị đầu vào như hình bên dưới: Với sự chú ý là thực tế với Q thấp hơn 50 thì chất lượng ảnh giảm đi rõ rệt mà độ nén thì lại không tăng lên tương ứng. Và các bức ảnh với miền tần số cao, hoặc tỉ lệ tương phản cao thì chất lượng ảnh JPEG không được mượt mà cho lắm. CÁC BƯỚC BIẾN ĐỔI, NÉN VÀ CHÈN DỮ LIỆU VỚI ẢNH • Bước một sử dụng thuật toán biến đổi cosin rời rạc các giá trị bit biểu diễn ảnh gốc thành một mảng ma trận giá trị số. Trong đó lưu giữ các giá trị biểu diễn màu sắc và độ sâu của từng bit giá trị ảnh gốc. • Nếu chỉ cần nén ảnh thì sau bước này trong chuẩn ảnh JPEG sẽ thực hiện nén theo thuật toán Hoffman. Thuật tóan này sẽ lược bớt các giá trị dư thừa và lưu lại thành một mảng ma trận các giá trị mới đã lược bớt. • Nếu cần chèn dữ liệu mật thì bỏ qua việc nén sử dụng thuật toán Hoffman mà thay vào đó duyệt mảng ma trận các giá trị rồi chèn thông tin đã được nhị phân hóa . định 128 là: Giờ biển đổi DCT là thực hiện bước nhân ma trận theo công thức: Sau biến đổi ta được một ma trận mới như hình bên dưới: Đây là một ma trận mỗi chiều từ 0 đến 7 với giá trị góc trên. Hoffman. Thuật tóan này sẽ lược bớt các giá trị dư thừa và lưu lại thành một mảng ma trận các giá trị mới đã lược bớt. • Nếu cần chèn dữ liệu mật thì bỏ qua việc nén sử dụng thuật toán Hoffman. ta thu được ảnh mới mang chất lượng tương đương với ảnh cũ và mang thêm dữ liệu đã mã hóa. Để lấy lại được dữ liệu đã mã hóa ta lưu trữ dữ liệu đã mã hóa dưới dạng mảng ma trận giá trị nhị

Ngày đăng: 19/10/2014, 23:17

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan