1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về kỹ thuật nén ảnh jpeg

58 12 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

TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN VĂN ĐỨC TÀI BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Tên đồ án: TÌM HIỂU VỀ KỸ THUẬT NÉN ẢNH JPEG Nghệ An, tháng 05 năm 2016 TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Tên đồ án: TÌM HIỂU VỀ KỸ THUẬT NÉN ẢNH JPEG Sinh viên thực hiện: Văn Đức Tài Mã sinh viên : 1151070363 Lớp : 52k1-CNTT GV hướng dẫn : ThS Nguyễn Thị Hồng Anh Nghệ An, tháng 05 năm 2016 Đồ án tốt nghiệp đại học LỜI CẢM ƠN Lời em xin bày tỏ lòng biết ơn sâu sắc tới cô ThS Nguyễn Thị Hồng Anh, người trực tiếp hướng dẫn, giúp đỡ tạo điều kiện thuận lợi cho em trình tìm hiểu nghiên cứu đề tài giao để em hồn thành tốt báo cáo tốt nghiệp Em xin chân thành cảm ơn đến thầy giáo, cô giáo Khoa Công Nghệ Thông Tin – Trường Đại Học Vinh, người nhiệt tình giảng dạy, truyền đạt kiến thức cần thiết suốt thời gian em học tường tạo điều kiện tốt cho chúng em làm Đồ án tốt nghiệp kì hạn Em xin gửi lời cảm ơn đến anh, chị bạn bè Khoa nhiệt tình giúp đỡ em hồn thành đồ án Mặc dù cố gắng nỗ lực thực đề tài với tâm cao hẳn đề tài tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp thầy bạn để đề tài em ngày hoàn thiện hướng tới áp dụng thực tế Em xin chân thành cám ơn! Nghệ An, ngày tháng 05 năm 2016 Sinh viên thực hiện: Văn Đức Tài Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học LỜI MỞ ĐẦU Trong thời đại công nghệ thông tin nay, mà tất liệu có xu hướng số hóa việc lưu trữ truyền tin công việc quan trọng Dung lượng lưu trữ lớn chi phí cho việc lưu trữ lớn, đặc biệt việc truyền thông tin mạng gặp nhiều khó khăn dung lượng thơng tin lớn Do việc thu nhỏ thơng tin u cầu thiếu giai đoạn Tuy yêu cầu thu nhỏ thông tin thực tế thiếu thu nhỏ để truyền tải đủ lượng thơng tin muốn truyền yêu cầu cao Mặc dù, có nhiều công nghệ giúp cho việc lưu trữ tốt truyền tin nhanh hơn, yêu cầu truyền số liệu vượt xa công nghệ Sự phát triển nhanh chóng Internet, ứng dụng multimedia (nhất với ảnh số) mơi trường Web địi hỏi phải có phương pháp mã hóa tín hiệu hiệu để phục vụ cho việc truyền mạng Chính mà cơng nghệ nén ảnh trở thành công nghệ trung tâm tin học năm gần Xuất phát từ yêu cầu thực tế với vốn kiến thức có, đợt tốt nghiệp em chọn đề tài: “Tìm hiểu kỹ thuật nén ảnh JPEG” Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học MỤC LỤC LỜI MỞ ĐẦU CHƢƠNG 1: GIỚI THIỆU 1.1 Cơ sở nghiên cứu mục đích đề tài 1.2 Nội dung nghiên cứu đề tài CHƢƠNG 2: TỔNG QUAN VỀ NÉN DỮ LIỆU ẢNH SỐ 2.1 Giới thiệu chung nén ảnh số 2.1.1 Một số khái niệm 2.1.2 Các loại dư thừa liệu 10 2.1.3 Sơ đồ khối tổng quát thể trình nén giải nén ảnh số 11 2.2 Phân loại kỹ thuật nén ảnh số 11 2.2.1 Phương pháp nén không tổn hao thông tin 11 2.2.1.1 Phương pháp mã hóa theo mã loạt dài – RLE (Run Length EnCoding) 12 2.2.1.2 Phương pháp mã hóa Huffman 12 2.2.1.3 Phương pháp LZW 14 2.2.2 Phương pháp nén có tổn hao thơng tin 16 2.2.2.1 Phương pháp dùng biến đổi Cosine 16 2.2.2.2 Phương pháp dùng biến đổi Wavelet – mã hóa băng 19 CHƢƠNG 3: CƠ SỞ LÝ THUYẾT CỦA BIẾN ĐỔI COSIN 21 3.1 Lịch sử đời ứng dụng biến đổi Cosine 21 3.2 Biến đổi Cosin chiều 21 3.2.1 Phép biến đổi Cosin thuận chiều 21 3.2.2 Phép biến đổi Cosin ngược chiều 28 3.3 Biến đổi Cosin rời rạc hai chiều 29 3.3.1 Biến đổi Cosin rời rạc thuận hai chiều 29 3.3.2 Biến đổi Cosin rời rạc ngược hai chiều 29 CHƢƠNG 4: CHUẨN NÉN ẢNH TĨNH JPEG 31 4.1 Giới thiệu chuẩn nén ảnh tĩnh JPEG 31 4.2 Cấu trúc file ảnh theo chuẩn JPEG 31 Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học 4.2.1 Cấu trúc Frame header 32 4.2.2 Cấu trúc Scan header 33 4.2.3 Cấu trúc bảng lượng tử 34 4.2.4 Cấu trúc bảng mã Huffman 35 4.2.5 Cấu trúc phần thích 36 4.3 Cấu trúc file ảnh theo định dạng bitmap 37 4.4 Chuẩn nén ảnh tĩnh JPEG dựa biến đổi Cosin 38 4.4.1 Sơ đồ nén giải nén ảnh tĩnh theo chuẩn nén JPEG 38 4.4.2 Chuyển đổi không gian màu 39 4.4.3 Phân khối 40 4.4.4 Biến đổi Cosin khối 8*8 40 4.4.5 Lượng tử hóa 41 4.4.6 Nén 42 CHƢƠNG 5: CÀI ĐẶT CHƢƠNG TRÌNH VÀ THỬ NGHIỆM 45 5.1 Thiết kế, cài đặt module nén ảnh theo chuẩn JPEG dựa DCT 45 5.1.1 Các bước thực 45 5.1.2 Sơ đồ thuật toán 45 5.2 Thiết kế giao diện chương trình 46 5.3 Đánh giá thực nghiệm kết 47 KẾT LUẬN 49 Nhận xét 49 Hướng phát triển đồ án 49 TÀI LIỆU THAM KHẢO 50 PHỤ LỤC 51 Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học CHƢƠNG 1: GIỚI THIỆU 1.1 Cơ sở nghiên cứu mục đích đề tài Để sử dụng dịch vụ Internet nhiều dịch vụ liệu khác ứng dụng di động cần có kỹ thuật then chốt để hỗ trợ truyền thông nhiều dạng liệu khác thông tin di động như: thoại, văn bản, hình ảnh hay video Tuy nhiên, vấn đề truyền thông nội dụng đa phương tiện thông tin di động gặp số khó khăn: băng thơng mạng nhỏ, kích thước thơng tin lớn, yêu cầu khắt khe thời gian gửi nhận,… Trong việc cải thiện băng thông cần đến cơng nghệ tương lai, phương pháp giảm kích thước liệu kỹ thuật nén cách tiếp cận hiệu để giải khó khăn Mặc dù, có nhiều kỹ thuật nén liệu đa phương tiện như: chuẩn JPEG (dựa biến đổi DCT), chuẩn JPEG2000 (dựa biến đổi Wavelet) hay chuẩn MPEG (dựa biến đổi DCT) Nhưng kỹ thuật tập trung vào hiệu nén cố gắng làm giảm chất lượng liệu tốt Vì chúng bỏ qua vấn đề tiêu hao lượng trình nén truyền Đề tài trình bày kỹ thuật hiệu để khắc phục khó khăn cho loại liệu điển hình thơng tin di động ảnh tĩnh Đó kỹ thuật nén ảnh theo chuẩn JPEG dựa biến đổi Cosin 1.2 Nội dung nghiên cứu đề tài Đồ án tổ chức thành chương phụ lục Chƣơng 1: Trình bày cách tóm tắt sở nghiên cứu, mục đích cách tổ chức đồ án Chƣơng 2: Trình bày khái quát nén ảnh số, khái niệm liên quan đến nén ảnh số phương pháp phân loại kỹ thuật nén ảnh Đồng thời trình bày sơ lược phương pháp nén ảnh cổ điển Chƣơng 3: Trình bày sở lý thuyết biến đổi Cosin – phương pháp biến đổi mà chuẩn JPEG sử dụng nhiều Chƣơng 4: Giới thiệu cách khái quát chuẩn nén ảnh JPEG, cấu trúc file ảnh theo chuẩn JPEG, cấu trúc file ảnh theo định dạng Bitmap Đồng thời giới thiệu cách làm chi tiết bước chuẩn JPEG để nén ảnh sang định dạng JPEG Chƣơng 5: Cài đặt chương trình thử nghiệm Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học CHƢƠNG 2: TỔNG QUAN VỀ NÉN DỮ LIỆU ẢNH SỐ 2.1 Giới thiệu chung nén ảnh số 2.1.1 Một số khái niệm Ảnh số Ảnh biểu diễn dạng tín hiệu tương tự tín hiệu số Trong biểu diễn số ảnh đa mức xám, ảnh biểu diễn dạng ma trận hai chiều Mỗi phần tử ma trận biểu diễn cho mức xám hay cường độ ảnh vị trí Mỗi phần tử ma trận gọi phần tử ảnh, thơng thường kí hiệu PEL(Picture Element) điểm ảnh(pixel) Với ảnh đa cấp xám: Nếu dung bit(1 byte) để biểu diễn mức xám, sốc mức xám biểu diễn 28 hay 256 Mỗi mức xám biểu diễn dạng số nguyên nằm khoảng từ đến 255, với mức biểu diễn cho mức cường độ đen 255 biễu diễn cho mức cường độ sáng Với ảnh màu: Cách biểu diễn tương tự ảnh đen trắng, khác số phần tử ma trận biểu diễn cho ba màu riêng lẽ gồm: đỏ (red), lục (green) lam (blue) Để biễu diễn cho điểm ảnh màu cần 24 bit, 24 bit chia làm ba khoảng bit Mỗi khoảng biểu diễn cho cường độ sáng màu Pixel or PEL Độ sáng trung bình hình chữ nhật = giá trị điểm ảnh Hình 1.1 Biễu diễn mức xám ảnh số Xử lý ảnh số Xử lý ảnh nghành khoa học tương đối so với nhiều ngành khoa học khác, quy mơ cơng nghiệp Xử lý ảnh có nhiều ứng dụng làm ảnh y học, khơi phục lại ảnh tác động khí thiên văn học, tăng cường độ phân giải ảnh truyền hình mà khơng cần thay đổi Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học cấu trúc bên hệ thống chuyển tải, nén ảnh truyền xa lưu trữ giai đoạn xử lý ảnh mơ tả hình sau: + Thu nhận ảnh : - Qua camera(tương tự, số) - Từ vệ tinh qua cảm ứng(Sensors) + Số hóa ảnh : Biến đổi ảnh tương tự thành ảnh rời rạc để xử lý máy tính: Thơng qua q trình lấy mẫu (rời rạc mặt khơng gian) lượng tử hóa (rời rạc mặt biên độ) + Xử lý số : Là tiến trình gốm nhiều công đoạn nhỏ : Tăng cường ảnh (Enhancement), khôi phục ảnh (Retoration), phát biên (Egde Detection), phân vùng ảnh (Segmentation), trích chọn đặt tính (Feature Extraction)… + Hệ định : Tùy mục đích ứng dụng mà chuyển sang giai đoạn khác hiển thị, nhận dạng, truyền thông,… Pixel(picture element): Phần tử ảnh Ảnh thực tề ảnh liên tục không gian giá trị độ sáng Để xử lý ảnh máy tính cần thiết phải tiến hành số hóa ảnh Như ảnh tập hợp pixel Mỗi pixel gồm cặp tọa độ x, y màu Cặp tọa độ Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học x, y tạo nên độ phân giải (resolution) Màn hình máy tính có nhiều loại độ phân giải khác nhau: 320 x 200, 640 x 350, 800 x 600, 1024 x 768,… Mức xám (Graylevel): Mức xám kết mã hóa tương ứng cường độ sáng điểm ảnh với giá trị số - kết trình lượng hóa Dữ liệu: Trong tốn, liệu bao gồm tập phần tử sở mà ta gọi liệu nguyên tử Nó chữ số, ký tự,… Nhưng số, từ,…điều phụ thuộc vào toán Nén liệu (Data Compression) Nén liệu q trình làm giảm lượng thơng tin “dư thừa” liệu gốc lượng thơng tin thu sau nén thường nhỏ liệu gốc Với liệu ảnh, kết thường 10:1 Một số phương pháp cịn cho kết cao Ngồi thuật ngữ “nén liệu” chất kỹ thuật cịn có số tên gọi khác như: giảm độ dư thừa, mã hoá ảnh gốc Từ hai thập kỷ nay, có nhiều kỹ thuật nén công bố tài liệu nén phần mềmnén liệu xuất ngày nhiều thị trường Tuy nhiên, chưa có phương pháp nén coi vạn phụ thuộc vào nhiều yếu tố chất liệu gốc Tỷ lệ nén (Compression Rate) Tỷ lệ nén đặc trưng quan trọng phương pháp nén Nhìn chung,người ta định nghĩa tỷ lệ nén sau: Tỷ lệ nén = 1/r*% Với r tỷ số nén định nghĩa: r = kích thước liệu gốc / kích thước liệu nén Như hiệu suất nén = (1 – tỷ lệ nén )* 100% Đối với ảnh tĩnh, kích thước số bit biểu diễn tồn ảnh Đối với ảnh video, kích thước số bit để biểu diễn khung hình video (video frame) Văn Đức Tài – Lớp 52K1 – Khoa CNTT Đồ án tốt nghiệp đại học Q(u, v) = 17 18 24 47 99 99 99 99 18 21 26 66 99 99 99 99 24 26 56 99 99 99 99 99 47 66 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 Như vậy, hệ số biến đổi DCT lượng tử theo công thức:  F (u, v)  F Q (u, v)     Q(u, v)  Trong đó: F(u, v): hệ số sau biến đổi DCT Q(u, v): hệ số ma trận lượng tử FQ(u,v): hệ số sau lượng tử 4.4.6 Nén Đầu vào khối nén gồm hai thành phần: thành phần hệ số chiều DC thành phần hệ số xoay chiều AC Thành phần chiều DC:Ci(0,0) chứa phần lớn lượng tín hiệu ảnh Người ta khơng nén trực tiếp giá trị Ci(0,0) mà xác định độ lệch khối liền kề nhau: di = Ci+1(0,0) – Ci(0,0) Vì giá trị Ci+1 Ci thường có giá trị lớn gần nên di thường có giá trị nhỏ nhiều so với Ci nén tỷ lệ nén cao Giá trị C0(0,0) khởi tạo Các độ lệch disẽ đưa vào mã hóa entropy Thành phần xoay chiều AC:Ci(m, n) với ≤ m, n ≤ chứa thông tin chi tiết ảnh Văn Đức Tài – Lớp 52K1 – Khoa CNTT 42 Đồ án tốt nghiệp đại học Để tận dụng ưu điểm hệ số tần số cao sau lượng tử hầu hết 0, mảng hai chiều hệ số lượng tử xếp lại theo hình Zigzag để tạo thành mảng chiều Cách xếp cho phép giảm thiểu lượng tổn hao trung bình tạo dãy giá trị liên tiếp Bảng 4.8: Bảng giá trị Zigzag 10 20 21 35 11 19 22 34 36 12 18 23 33 37 48 13 17 24 32 38 47 49 14 16 25 31 39 46 50 57 15 26 30 40 45 51 56 58 27 29 41 44 52 55 59 62 28 42 43 53 54 60 61 63 Sau biến đổi Cosin lượng khối giảm dần từ góc bên trái xuống góc bên phải nên việc xếp lại hệ số theo thứ tự Zigzag tạo điều kiện cho hệ số xấp xỉ nằm hàng, đặc biệt dãy sô liền kề Trừ hệ số đầu tiên, 63 hệ số sau khối mã hóa theo phương pháp RLE Cuối khối đầu RLE đặt ký hiệu kết thúc khối EOB (End OfBlock) Sau đó, khối dồn lại mã hóa lần nhờ phương pháp mã hóa Huffman Nhờ có dấu kết thúc khối nên phân biệt hai khối cạnh giải mã Huffman Từ bước ta tổng qt hóa q trình nén ảnh theo chuẩn JPEG sơ đồ 4.10 sau: Văn Đức Tài – Lớp 52K1 – Khoa CNTT 43 Đồ án tốt nghiệp đại học f(i,j) Ảnh gốc Chuyển không gian mầu Phân khối 8x8 F(u,v) DCT 8x8 Lượng tử hóa FQ(u,v) … 8x8 Data Bảng mã Huffman Mã hóa Huffman DPCM RLC Zigzag Ảnh nén Header Tables Bảng lượng tử DC AC Hình 4.10: Sơ đồ nén ảnh theo chuẩn JPEG chi tiết Trên bước làm chuẩn nén ảnh jpeg áp dụng cho thành phần độ chói Y ảnh Hai thành phần mầu Cb Cr thực tương tự khác bước lượng tử hóa ta dùng bảng lượng tử khác Văn Đức Tài – Lớp 52K1 – Khoa CNTT 44 Đồ án tốt nghiệp đại học CHƢƠNG 5: CÀI ĐẶT CHƢƠNG TRÌNH VÀ THỬ NGHIỆM 5.1 Thiết kế, cài đặt module nén ảnh theo chuẩn JPEG dựa DCT 5.1.1 Các bƣớc thực Bƣớc 1: Đọc khối ảnh kích thước 8*8 Bƣớc 2: Thực biến đổi Cosin khối ảnh Bƣớc 3: Lượng hóa hệ số sau biến đổi Cosin Bƣớc 4: Sử dụng phép biến đổi Zigzag để xếp lại hệ số sau lượng tử hóa Bƣớc 5: Mã hóa giá trị hệ số DC theo phương pháp điều chế xung vi sai – DPCM Bƣớc 6: Các giá trị cịn lại chuỗi Zigzag giá trị xoay chiều AC, thực mã hóa RLC hệ số Bƣớc 7: Sử dụng phương pháp mã hóa Huffman để mã hóa giá trị chiều DC xoay chiều AC Bƣớc 8: Nếu chưa hết khối ảnh quay lại thực bước Trong bước có bước mã hóa hệ số DC AC khó cả, chúng thực phương thức HuffmanBlockEncoder() lớp HuffmanTable Mã nguồn chi tiết liệt kê phần phụ lục 5.1.2 Sơ đồ thuật toán Giả sử: Width Height chiều rộng chiều cao ảnh tính pixel Xpos Ypos vị trí khối 8*8 pixel Ta có sơ đồ thuật tốn sau: Văn Đức Tài – Lớp 52K1 – Khoa CNTT 45 Đồ án tốt nghiệp đại học Width = image.Width Height = image.Height Ypos = Bắt đầu Xpos = Đọc khối ảnh Biến đổi Cosin Lượng tử hóa Biến đổi Zigzag Mã hóa Huffman Xpos = Xpos + Yes Xpos < Width No Ypos = Ypos + Yes Ypos < Height No Kết thúc Hình 5.1: Sơ đồ thuật toán nén ảnh theo chuẩn JPEG dựa DCT 5.2 Thiết kế giao diện chƣơng trình Các chức chương trình:  Tệp tin ảnh: - Mở ảnh: Mở file ảnh muốn nén - Lƣu ảnh JPEG: Lưu ảnh nén với tên tên ảnh gốc Văn Đức Tài – Lớp 52K1 – Khoa CNTT 46 Đồ án tốt nghiệp đại học - Lƣu ảnh JPEG với tên mới: Lưu ảnh nén với tên - Thốt: Thốt chương trình  Thực hiện: - Nén ảnh JPEG: Thực nén ảnh cần nén sang định dạng JPEG - Tự động cập nhật: o Tự động cập nhật: Nếu chọn sau thay đổi mức chất lượng ảnh chương trình tiến hành cập nhật hiển thị kết Ngược lại phải nhấn F5 để thực thấy kết o Không tự động cập nhật: Ngược lại với mục Hình 5.2: Giao diện chương trình 5.3 Đánh giá thực nghiệm kết Thông qua việc cài đặt chương trình nén ảnh theo chuẩn JPEG dựa DCT ta rút kết luận sau: Dựa vào cảm thụ mắt người để đánh giá chất lượng ảnh sau nén phương pháp nén ảnh JPEG dựa DCT có chất lượng hoàn toàn chấp nhận được, dung lượng tập tin ảnh JPEG nhỏ Điều có Văn Đức Tài – Lớp 52K1 – Khoa CNTT 47 Đồ án tốt nghiệp đại học ích ta truyền tập tin ảnh sau nén mạng mà giữ nội dung cần truyền đạt ảnh Dựa vào tỷ lệ nén để đánh giá phương pháp nén theo chuẩn JPEG dựa DCT có tỷ lệ nén cao Tùy vào yêu cầu cụ thể ta thay đổi tỷ lệ nén để có dung lượng ảnh phù hợp với yêu cầu cụ thể Tùy vào ảnh (sự tương quan điểm ảnh) mà tỷ lệ nén với ảnh khác Với ảnh có tương quan lớn tỷ lệ nén lớn, ngược lại với ảnh có tương quan thấp tỷ lệ nén thấp Dưới số kết thu sau thực nén tùy thuộc vào tỷ lệ nén Ảnh gốc ảnh Bitmap 24 bit có kích thước 256x256 pixels, dung lượng 192KB Để so sánh ta dùng phần mềm paint Windows để tạo ảnh JPEG Ảnh Bitmap gốc kích thước 192KB Ảnh JPEG tỷ lệ 18:1, dung lượng 10,6Kb Ảnh nén Paint Windows dung lượng 29.6KB Qua hình ảnh so sánh ta thấy, kết nén chương trình tốt Văn Đức Tài – Lớp 52K1 – Khoa CNTT 48 Đồ án tốt nghiệp đại học KẾT LUẬN Nhận xét Về phần lý thuyết, đồ án trình bày chi tiết định dạng ảnh theo chuẩn JPEG, Bitmap sở lý thuyết biến đổi Cosin mà chuẩn JPEG sử dụng Đồng thời trình bày chi tiết bước thực chuẩn JPEG để thực nén ảnh sang chuẩn JPEG Về phần thực nghiệm, chương trình thực cài đặt để nén ảnh sang định dạng chuẩn JPEG theo mức chất lượng ảnh khác mà người dùng yêu cầu Tuy nhiên, so với số ứng dụng nén ảnh lớn công ty phần mềm tỷ lệ nén chất lượng chưa Hƣớng phát triển đồ án Đồ án tiến hành cài đặt phương pháp biến đổi mà chuẩn JPEG thường dùng biến đổi Cosin phương pháp mã hóa phương pháp Huffman Như vậy, hồn tồn tiến hành cài đặt cho phép biến đổi khác (DCT lũy tiến) phương pháp mã hóa khác (mã hóa số học,…) Từ cách làm khác so sánh, đánh giá ưu nhược điểm phương pháp để từ lựa chọn phương pháp tốt phục vụ cho việc nén ảnh Hoặc phát triển theo hướng khác sang lĩnh vực truyền hình Có thể xây dựng chương trình nén video theo chuẩn MPEG – dựa biến đổi Cosin Văn Đức Tài – Lớp 52K1 – Khoa CNTT 49 Đồ án tốt nghiệp đại học TÀI LIỆU THAM KHẢO Lƣơng Mạnh Bá – Nguyễn Thanh Thủy (1999),Nhập môn xử lý ảnh số, Nhà xuất Khoa học Kỹ Thuật, Hà Nội Nguyễn Hoài Nam (2004),Các phương pháp sử dụng chuẩn nén ảnh JPEG,Tạp chí Cơng nghệ Thơng tin Truyền thơng, Hà Nội Nguyễn Phan Tấn – Đặng Nguyễn Đức Tiến (2005),Image Compression, Đại học Khoa học Tự nhiên Thành phố Hồ Chí Minh Ngơ Văn Sỹ, Xử lý ảnh số, Đại học Bách khoa – Đại học Đà Nẵng Đỗ Ngọc Anh (2006),Nén ảnh sử dụng biến đổi Wavelet ứng dụng dịch vụ liệu đa phương tiện di động, Luận văn Thạc sĩ khoa học, Trường Đại học Bách khoa Hà Nội, Hà Nội International Telecommunication Union (1993),Information technology digital compression and coding of continuous-tone still image requirements and guidelines, Switzerland Gregory K Wallace (1991), The JPEG Still Picture Compression Standard, Digital Equipment Corporation C A Christopoulos – T Ebrahimi – A N Skodras (1997), The jpeg2000 still image coding system: an overview, Greece Eric Hamilton (1992),JPEG File Interchange Format, US 10 R.C Gonzalez and R.E Woods,Digital Image Processing, chapter 11 Rahul Garg, Varun Gulshan (2005),JPEG image Compression 12 http://www.codeproject.com/ 13 http://en.wikipedia.org/wiki/Jpeg#The_JPEG_standard 14 http://www.cs.sfu.ca/CC/365/mark/material/notes/Chap4/Chap4.2/Chap4.2.html 15 http://schmidt.devlib.org/file-formats/jpeg-image-file-format.html Văn Đức Tài – Lớp 52K1 – Khoa CNTT 50 Đồ án tốt nghiệp đại học PHỤ LỤC Vì mã nguồn dài nên phần xin liệt kê mã nguồn số phương thức số lớp chương trình Trong lớp DCT.cs có phƣơng thức FastDCT() QuantizeBlock()  Phương thức FastDCT() thực biến đổi Cosin khối ảnh 8*8: internalfloat[,] FastDCT(float[,] input) { float[,] output = newfloat[N, N]; float tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; float tmp10, tmp11, tmp12, tmp13; float z1, z2, z3, z4, z5, z11, z13; int i, j; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) output[i, j] = input[i, j] - 128f; // Lần thứ thực biến đổi theo dòng for (i = 0; i < 8; i++) { tmp0 = output[i, 0] + output[i, 7]; tmp7 = output[i, 0] - output[i, 7]; tmp1 = output[i, 1] + output[i, 6]; tmp6 = output[i, 1] - output[i, 6]; tmp2 = output[i, 2] + output[i, 5]; tmp5 = output[i, 2] - output[i, 5]; tmp3 = output[i, 3] + output[i, 4];tmp4 = output[i, 3] - output[i, 4]; // Thành phần hệ số chẵn tmp10 = tmp0 + tmp3; tmp13 = tmp0 - tmp3; tmp11 = tmp1 + tmp2; tmp12 = tmp1 - tmp2; output[i, 0] = tmp10 + tmp11; output[i, 4] = tmp10 - tmp11; z1 = (tmp12 + tmp13) * (float)0.707106781; output[i, 2] = tmp13 + z1; output[i, 6] = tmp13 - z1; // Thành phần hệ số lẻ tmp10 = tmp4 + tmp5; tmp11 = tmp5 + tmp6; tmp12 = tmp6 + tmp7; z5 = (tmp10 - tmp12) * (float)0.382683433; z2 = ((float)0.541196100) * tmp10 + z5; z4 = ((float)1.306562965) * tmp12 + z5; Văn Đức Tài – Lớp 52K1 – Khoa CNTT 51 Đồ án tốt nghiệp đại học z3 = tmp11 * ((float)0.707106781); z11 = tmp7 + z3; z13 = tmp7 - z3; output[i, 5] = z13 + z2; output[i, 1] = z11 + z4; output[i, 3] = z13 - z2; output[i, 7] = z11 - z4; } // Lần thứ hai thực biến đổi theo cột for (i = 0; i < 8; i++) { tmp0 = output[0, i] + output[7, i]; tmp7 = output[0, i] - output[7, i]; tmp1 = output[1, i] + output[6, i]; tmp6 = output[1, i] - output[6, i]; tmp2 = output[2, i] + output[5, i]; tmp5 = output[2, i] - output[5, i]; tmp3 = output[3, i] + output[4, i]; tmp4 = output[3, i] - output[4, i]; // Hệ số chẵn tmp10 = tmp0 + tmp3; tmp13 = tmp0 - tmp3; tmp11 = tmp1 + tmp2; tmp12 = tmp1 - tmp2; output[0, i] = tmp10 + tmp11; output[4, i] = tmp10 - tmp11; z1 = (tmp12 + tmp13) * (float)0.707106781; output[2, i] = tmp13 + z1; output[6, i] = tmp13 - z1; // Hế số lẻ tmp10 = tmp4 + tmp5; tmp11 = tmp5 + tmp6; tmp12 = tmp6 + tmp7; z5 = (tmp10 - tmp12) * (float)0.382683433; z2 = ((float)0.541196100) * tmp10 + z5; z4 = ((float)1.306562965) * tmp12 + z5; z3 = tmp11 * ((float)0.707106781); z11 = tmp7 + z3; z13 = tmp7 - z3; output[5, i] = z13 + z2; output[3, i] = z13 - z2; output[1, i] = z11 + z4; output[7, i] = z11 - z4; } return output; }  Phương thức QuantizeBlock() thực lượng tử hóa khối ảnh: internalint[] QuantizeBlock(float[,] inputData, int code) { Văn Đức Tài – Lớp 52K1 – Khoa CNTT 52 Đồ án tốt nghiệp đại học int[] result = newint[N * N]; int index = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { result[index] (int)(Math.Round(inputData[i,j]*divisors[code][index])); = index++; } } return result; }  Trong lớp HuffmanTable.cs có phương HuffmanBlockEncoder() dùng để mã hóa Huffman khối ảnh nhỏ: internalvoid HuffmanBlockEncoder(Stream outStream, int[] zigzag, int prec, int DCcode, int ACcode) { int temp, temp2, nbits, k, r, i; NumOfACTables = 2; NumOfDCTables = 2; //Thành phần DC temp = temp2 = zigzag[0] - prec; if (temp < 0) { temp = -temp; temp2 ; } nbits = 0; while (temp != 0) { nbits++; temp >>= 1; } bufferIt(outStream, DC_matrix[DCcode][nbits, 0], Văn Đức Tài – Lớp 52K1 – Khoa CNTT 53 Đồ án tốt nghiệp đại học DC_matrix[DCcode][nbits, 1]); if (nbits != 0) { bufferIt(outStream, temp2, nbits); } //Thành phần AC r = 0; for (k = 1; k < 64; k++) { if((temp = zigzag[ZigZag.ZigZagMap[k]]) == 0) r++; else { while (r > 15) { bufferIt(outStream, AC_matrix[ACcode][0xF0, 0], AC_matrix[ACcode][0xF0, 1]); r -= 16; } temp2 = temp; if (temp < 0) { temp = -temp; temp2 ; } nbits = 1; while ((temp >>= 1) != 0) { nbits++; } i = (r 0) { bufferIt(outStream, AC_matrix[ACcode][0, 0], AC_matrix[ACcode][0, 1]); } }  Trong lớp JpegEncoder.cs có phương thức CompressTo() thực nén ảnh sang chuẩn JPEG: internalvoid CompressTo(Stream outStream) { int xBlock = 0, yBlock = 0; int comp = 0, xpos = 0, ypos = 0; byte[,] inputArray = null; float[,] dctArray1 = newfloat[8, 8]; float[,] dctArray2 = newfloat[8, 8]; int[] dctArray3 = newint[8 * 8]; int[] lastDCvalue = newint[3]; for (ypos = 0; ypos < inputImage.Height; ypos+= 8) { for (xpos = 0; xpos < inputImage.Width; xpos+= 8) { for (comp = 0; comp < 3; comp++) { inputArray = inputImage.Raster[comp]; for(int h=0; h= height) break; Văn Đức Tài – Lớp 52K1 – Khoa CNTT 55 Đồ án tốt nghiệp đại học for (xBlock = 0; xBlock < 8; xBlock++) { int x = xpos + xBlock; if (x >= width) break; dctArray1[yBlock,xBlock]= inputArray[x, y]; } } dctArray2 = dct.FastDCT(dctArray1); dctArray3 = JpegEncoder.QtableNumber[comp]); huff.HuffmanBlockEncoder(outStream, dct.QuantizeBlock(dctArray2, dctArray3, lastDCvalue[comp], JpegEncoder.DCtableNumber[comp], JpegEncoder.ACtableNumber[comp]); lastDCvalue[comp] = dctArray3[0]; } } } }//end for ypos huff.FlushBuffer(outStream); } Văn Đức Tài – Lớp 52K1 – Khoa CNTT 56 ... chuẩn nén ảnh tĩnh JPEG 4.4 Chuẩn nén ảnh tĩnh JPEG dựa biến đổi Cosin 4.4.1 Sơ đồ nén giải nén ảnh tĩnh theo chuẩn nén JPEG Nén ảnh theo chuẩn nén JPEG bao gồm nhiều giai đoạn cho sơ đồ 4.8: Ảnh. .. giải nén ảnh số 2.2 Phân loại kỹ thuật nén ảnh số Xét khả phục hồi lại chất lượng liệu ảnh, chia kỹ thuật nén ảnh thành hướng là: Nén xác hay nén khơng mát thông tin: bao gồm phương pháp nén mà... tin ảnh: - Mở ảnh: Mở file ảnh muốn nén - Lƣu ảnh JPEG: Lưu ảnh nén với tên tên ảnh gốc Văn Đức Tài – Lớp 52K1 – Khoa CNTT 46 Đồ án tốt nghiệp đại học - Lƣu ảnh JPEG với tên mới: Lưu ảnh nén

Ngày đăng: 01/08/2021, 11:27

Xem thêm:

TỪ KHÓA LIÊN QUAN

w