chuẩn nén ảnh JPEG và các vấn đề cơ bản có liên quan
MỞ ĐẦU Hiện nay, mạng Internet nói riêng thành tựu lĩnh vực công nghệ thông tin – truyền thông nói chung tiếp tục mở rộng phát triển nhanh chóng, đạt dấu mốc quan trọng Song hành với phát triển đó, khái niệm, quy chuẩn, đối tượng tài nguyên đời nhằm phục vụ tốt cho nhu cầu người Hơn nữa, thành công loài người công khai phá tri thức Khi nhắc tới ngành công nghệ thông tin – truyền thông đặc biệt giới ảo mạng toàn cầu rộng lớn, phải nhắc đến khái niệm Dữ liệu đa phương tiện – bước đột phá lịch sử loài người tổ chức lưu trữ liệu thông minh Đó tất dạng tổ chức lưu trữ liệu số hoạt động thiết bị số, máy tính đại, thiết bị số tạo ra, xử lí truyền thông thành phần mạng thông qua phương thức đặc thù riêng Khái niệm Dữ liệu đa phương tiện phong phú, nêu số đối tượng bản, phổ biến như: tệp liệu âm (audio file), tệp liệu hình ảnh/đồ họa số (image/graphic file) hay tệp phim/hình chuyển động (video file) Việc tìm hiểu, khảo sát đối tượng liệu đa phương tiện đòi hỏi công sức chi phí lớn Trong phạm vi tiểu luận học phần, nhóm xin đưa nhìn cụ thể, rõ ràng đối tượng số đó: chuẩn nén ảnh JPEG vấn đề có liên quan Đây chuẩn liệu sử dụng phổ biến nay, đời sống lẫn công tác nghiên cứu khoa học Hơn nữa, ứng dụng chuẩn JPEG thực mang lại tiện ích lớn cho người dùng việc lưu trữ, xử lí truyền tải thông tin dạng hình ảnh mạng máy tính hay thiết bị số khác Trong suốt trình thực đề tài này, nhóm nỗ lực tìm hiểu, khảo sát, đánh giá nội dung cần thực Tuy nhiên, thiếu sót, sơ suất tránh khỏi nhiều vấn đề cần tiếp tục nghiên cứu, cải thiện tương lai Nhóm xin chân thành cảm ơn hướng dẫn, giúp đỡ tận tình GS Nguyễn Thị Hoàng Lan suốt trình thực đề tài Page 1.Giới thiệu chung chuẩn JPEG JPEG ( Joint Photographic Expert Group ) tên tổ chức nghiên cứu chuẩn nén ảnh (trước ISO) thành lập vào năm 1982 Năm 1986, JPEG thức thiết lập nhờ kết hợp nhóm ISO/IEC ITV Tiêu chuẩn ứng dụng nhiều lĩnh vực : lưu trữ ảnh, Fax màu, truyền ảnh báo chí, ảnh cho y học, camera số… Tiêu chuẩn JPEG (Joint Photographic Experts Group) định cho nén ảnh tĩnh đơn sắc màu Công nghệ nén ảnh JPEG công nghệ nén ảnh hiệu quả, cho phép làm việc với ảnh có nhiều màu kích cỡ lớn Tỷ lệ nén ảnh đạt mức vài chục lần Thông thường ảnh màu dùng bit (1 byte) hay 256 màu thay cho mức cường độ màu đỏ, xanh xanh da trời Như điểm ảnh cần byte để lưu mã màu, lượng byte ảnh màu chiếm gấp 24 lần ảnh trắng đen cỡ Với ảnh phương pháp nén ảnh IFF (Image File Format) theo phương pháp RLE (Run Length Encoding) không mang lại hiệu hệ số nén đạt tới 2:1 hay 3:1 (tất nhiên kết nén theo phương pháp RLE phụ thuộc vào cụ thể loại ảnh, ví dụ kết tốt với loại ảnh đổi màu) Ưu điểm cao phương pháp ảnh nén sau bung trùng khớp với ảnh ban đầu Một số phương pháp nén khác không để thông tin Lempel - Ziv - Welch (LZW) cho hệ số nén tới 6:1 Nhưng chưa thật đáp ứng yêu cầu đòi hỏi thực tế Phương pháp nén ảnh theo thuẩn JPEG cho hệ số nén tới 80:1 hay lớn hơn, bạn phải chịu thông tin (ảnh sau bung nén khác với ảnh ban đầu), lượng thông tin mát tăng dần theo hệ số nén Tuy nhiên mát thông tin không bị làm cách cẩu thả JPEG tiến hành sửa đổi thông tin ảnh nén cho ảnh gần giống ảnh cũ, khiến phần đông người không nhận thấy khác biệt Và bạn hoàn toàn quản lý mát cách hạn chế hệ số nén Như người dùng cân nhắc lợi việc tiết kiệm nhớ mức độ thông tin ảnh, để chọn phương án thích hợp Phương pháp nén ảnh JPEG dựa nguyên lý sau: ảnh màu không gian màu RGB (red Green Blue) biến đổi hệ YUV (hay YCBCr) (điều thiết, thực cho kết nén cao hơn) Hệ YUV kết nghiên cứu nhà sản xuất vô tuyến truyền hình hệ Pal, Secam NTSC, nhận thấy tín hiệu video phân thành phần Y, U, V (cũng phân theo màu chuẩn đỏ, xanh xanh da trời) Và điều thú vụ hệ nhãn thị người nhạy cảm với thành phần Y nhạy cảm với hai loại U V Phương pháp JPEG nắm bắt phát để tách thông tin thừa ảnh Hệ thống nén thành phần Y ảnh với mức độ so với U, V, người ta nhận thấy thay đổi U V so với Y.JPEG sử dụng cho nhiều ứng dụng với Page ảnh động cho chất lượng ảnh khôi phục tốt tính toán so với nén MPEG JPEG nén hình ảnh sử dụng rộng rãi việc phát triển trang web So với tập tin ánh xạ bit (trong có phần mở rộng bmp.), Những hình ảnh JPEG (trong có phần mở rộng Jpg) chiếm không gian tải nhanh chóng truy cập trang web Nén JPEG thực bốn mode mã hóa là: + Mã (sequential DCT-based) : ảnh mã hóa theo kiểu quét từ trái qua phải, từ xuống dựa khối DCT + Mã hóa lũy tiến (progressive DCT-based) : ảnh mã hóa kiểu quét phức hợp theo chế độ phân giải không gian cho ứng dụng kiểu băng hẹp thời gian truyền dẫn có dài + Mã hóa không tổn thất (lossless) : ảnh đảm bảo khôi phục xác cho giá trị mẫu nguồn Thông tin không cần thiết cắt bỏ hiệu nén thấp so với phương pháp có tổn thất + Mã hóa phân cấp (hierarchical) : ảnh mã hóa chếđộ phân giải không gian phức hợp, ảnh có độ phân giải thấp có thểđược truy xuất hiển thị mà không cần giải nén ảnh có độ phân giải không gian cao Mã hóa không tổn thất không sử dụng cho video động cung cấp tỉ lệ nén không đủ cao Tỉ lệ nén ảnh tĩnh có thểđạt từ 1/10 đến 1/50 mà không làm ảnh hưởng đến chất lượng hiển thị ảnh Khai triển DCT chọn kỹ thuật then chốt JPEG cho ảnh nén chất lượng tốt tốc độ bit thấp giải thuật chuyển đổi nhanh dễ dàng thực phần cứng Hình sơ đồ mã hóa giải nén JPEG Page Sơ đồ mã hóa giải nén JPEG Tất block có kích thước block ma trận điểm ảnh 8×8 pixel lấy từ ảnh hình theo chiều từ trái sang phải, từ xuống Kích thước block 8×8 chọn hai lý sau: + Thứ nhất, qua việc nghiên cứu cho thấy hàm tương quan suy giảm nhanh khoảng cách pixel vượt + Thứ hai, tiện lợi cho việc tính toán thiết kế phần cứng Nói chung, độ phức tạp tính toán tăng kích thước block tăng Dung lượng lưu trữ ảnh phụ thuộc vào loại ảnh quét Nếu quét liên tục block bao gồm mẫu từ dòng liên tục (lúc nén ảnh theo-frame) Ngược lại, trường hợp quét xen kẽ, block có mẫu nửa ảnh (nén ảnh theo-mành) Tóm lại, việc chia hình ảnh thành ảnh (block) thực có ý nghĩa cho bước chuyển vị Page 2.Phương pháp nén ảnh theo chuẩn JPEG Công đoạn hầu hết trình nén xác định thông tin dư thừa miền không gian ảnh Nén không gian thực phép biến đổi cosin rời rạc DCT (Discrete Cosine Transform) DCT biến đổi liệu dạng biên độ thành liệu dạng tần số Mục đích trình biến đổi thay đổi liệu biểu diễn thông tin: liệu ảnh tập trung vào phần nhỏ hệ số hàm truyền Việc mã hóa truyền thực hệ số lượng này, cho kết tốt tạo lại tín hiệu video có chất lượng cao DCT trở thành tiêu chuẩn quốc tế cho hệ thống mã chuyển vị có đặc tính gói lượng tốt, cho kết số thực có thuật toán nhanh để thể chúng Quá trình mã hóa gồm nhiều công đoạn mô tả hình đây: P H Â N K H Ố I 8X8 DCT 8X8 Lượng Tử hóa Mã hóa ảnh nén 8X8 Bảng lượng tử hóa 8X8 Bảng Mã hóa Quá trình giải nén trình ngược lại: ảnh nén Giải mã Lượng DCT Tử hóa Ngược Ảnh ban đầu Ngược Bảng Mã hóa Bảng lượng tử hóa Quá trình mã hóa,giải mã lượng tử hóa dựa vào thông tin quan trọng phần Header file ảnh 2.1.Quá trình phân khối Page Chuẩn JPEG phân ảnh thành khối 8x8 để giảm thời gian tính toán làm tăng độ xác tính toán Do điểm ảnh lân cận có độ tương quan cao,do phép biến đổi DCT cho khối nhỏ tập trung lượng vào số hệ số biến đổi.Việc loại bớt số hệ số lượng thấp khối tạo mát thông tin cục giúp nâng cao chất lượng ảnh 2.2.Biến đổi DCT 2.2.1DCT chiều DCT chiều biến đổi biên độ tín hiệu điểm rời rạc theo thời gian không gian thành chuỗi hệ số rời rạc, hệ số biểu diễn biên độ thành phần tần số định có tín hiệu gốc Hệ sốđầu tiên biểu diễn mức DC trung bình tín hiệu Từ trái sang phải, hệ số thể thành phần tần số không gian cao tín hiệu gọi hệ số AC Thông thường, nhiều hệ số AC có giá trị gần Quá trình biến đổi DCT thuận (FDCT) dùng tiêu chuẩn JPEG định nghĩa sau: Hàm biến đổi DCT ngược (một chiều): đó: X(k) chuỗi kết x(m) giá trị mẫu m k-chỉ số hệ số khai triển m-chỉ số mẫu N- số mẫu có tín hiệu Page 2.2.2 DCT hai chiều Để tách tương quan nội dung ảnh cao hơn, mã hóa DCT hai chiều (2-D) dùng cho khối 8×8 giá trị điểm chói Quá trình biến đổi DCT tiến FDCT (forward DCT) dùng tiêu chuẩn JPEG định nghĩa sau: Biến đổi DCT công đoạn quan trọng Jpeg.Nhiệm vụ tập trung lượng vào số giá trị để giải tương quan tốt nhằm nâng cao tỉ số nén đó: f(j,k)- mẫu gốc khối 8×8 pixel F(u,v)-các hệ số khối DCT 8×8 Phương trình liên kết hai phương trình DCT chiều, cho tần số ngang cho tần số đứng Giá trị trung bình block 8x8 hệ số thứ (khi u,v= 0) Phương trình cộng tất giá trị pixel khối 8×8 chia kết cho Kết phép tính lần giá trị pixel trung bình khối Do hệ số thứ gọi hệ số DC Các hệ số khác, giá trị thành phần chiều, biểu diễn tần số cao theo chiều dọc Các hệ số phía bên phải thành phần chiều biểu thị tần số cao theo chiều ngang Hệ số cận phải (0,7) đặc trưng cho tín hiệu có tần số cao theo phương nằm ngang ma trận 8×8, hệ số hàng cuối bên trái (7,0) đặc trưng cho tín hiệu có tần số cao theo phương thẳng đứng Còn hệ số khác ứng với phối hợp khác Page tần số theo chiều dọc chiều ngang Hình :Biểu diễn ma trận trước sau biến đổi DCT Nếu dùng trình DCT cho tín hiệu số thành phần Y, CR,CB tín hiệu CB,CR có biên độ cực đại ±128 ( giá trị nhị phân hệ thống lấy mẫu bit), tín hiệu Y có khoảng cực đại từ đến 255 giá trị nhị phân Để đơn giản việc thiết kế mã hóa DCT, tín hiệu Y dịch mức xuống cách trừ 128 từ giá trị pixel khối để có khoảng cực đại tín hiệu giống tín hiệu CR CB Ở phần giải mã DCT, giá trị (128) cộng vào giá trị pixel chói Giá trị hệ số DC khối DCT có khoảng từ –1024 đến 1016 Đối với hệ số AC ( với u,v=1,2, ,7), C(u) C(v)=1 giá trị cực đại nằm Page khoảng ±1020 theo phương trình FDCT Khối 8×8 giá trị hệ số DCT đưa giá trị DC lớn (ví dụ =591), biểu diễn độ sáng trung bình khối 8×8 giá trị nhỏ thành phần tần số cao theo chiều ngang chiều đứng Để loại bỏ số giá trị không cần thiết cần nhân với bảng trọng số Hình :Bảng trọng số Q(u,v) Tóm lại, DCT làm giảm độ tương quan không gian thông tin block Điều cho phép biễu diễn thích hợp miền DCT hệ số DCT có xu hướng có phần dư thừa Điều có nghĩa DCT gói phần lớn lượng tín hiệu vào thành phần biến đổi có tần số tương đối thấp để lưu trữ truyền dẫn, tạo giá trị thấp thành phần tần số cao Nhờ đặc tính hệ thống nhìn mắt người, hệ số DCT mã hóa phù hợp, hệ số DCT quan trọng mã hóa truyền DCT thuận kết hợp với DCT nghịch không cho tổn thất độ dài từ mã hệ số 13 đến 14 bits cho tín hiệu video đầu vào số hóa mẫu dài bit Nếu hệ số lượng tử hóa 11 bit (hoặc ngắn hơn), nén DCT có tổn hao.Sau thực hiên DCT lượng tập trung chủ yếu miền tần số thấp 2.3.Lượng tử hóa Bước trình nén ảnh lượng tử hóa hệ số F(u,v) cho làm giảm số lượng bit cần thiết Các hệ số tương ứng với tần số thấp có giá trị lớn hơn, chứa phần lượng tín hiệu, phải lượng tử hóa với độ xác cao Riêng hệ số chiều đòi hỏi độ xác cao nhất, lẽ biểu thị giá trị độ chói trung bình khối phần tử ảnh Hệ Page thống thị giác quan sát tốt với thay đổi nhỏ độ sáng miền tương đối rộng (Thành phần tần số thấp) ngược lại thành phần tần số cao.Chính điều giúp ta giảm thông tin thành phần tần số cao.Điều thực bàng cách chia tần số cho số cố định làm tròn tới giá trị số nguyên gần nhất.Sau trình giá trị thành phần tần số cao làm tròn tới giá trị thành phần tần thấp nhỏ làm giảm số bit cho giá trị thành phần tần số thấp Bất kỳ sai sót trình lượng tử hệ số chiều có khả nhận biết dễ dàng làm thay đổi mức độ chói trung bình khối Ngược lại, với hệ số tương ứng với tần số cao có giá trị nhỏ, biểu diễn lại tập giá trị nhỏ hẳn giá trị cho phép Sau bảng hàng số chuẩn cho trình lượng tử hóa: Tại vị trí X người ta chia giá trị cho số vị trí tương ứng sau làm tròn với số nguyên gần B(u,v) = B(0,0)=== 40 Page 10 4= LONG: 32bit (4-bytes) số nguyên không dấu 5= RATIONAL: gồm kí tự kiểu LONG 1.3.3 Multiple Image per TIFF file: Mỗi tệp TIFF chứa nhiều ảnh (nhiều directory) Mỗi IFD coi tệp 1.4 Phân loại ảnh TIFF 1.4.1 Ảnh nhị phân (Bilevel Images) a Màu sắc Ảnh nhị phân có màu đen trắng Tag = 262 (106.H) Type = SHORT Values: = White zero = Black zero b Nén Tag = 259 (103.H) Type = SHORT Values: = không nén ép liệu thành dạng bytes nhỏ có thể, loại bỏ phần liệu không cần thiết Mỗi dòng liệu lưu trữ thành mảng có kiểu liệu Byte = nén theo thuật toán CCITT 32773 = nén dạng PackBits c Hàng Cột Một tệp ảnh tổ chức thành mảng lưu trữ pixel (được chia thành hàng cột) Thông tin liên quan tới hàng cột: ImageLength Tag = 257 (101.H) Type = SHORT or LONG Mô tả số lượng hàng (có mô tả dòng quét scanlines) ảnh ImageWidth Tag = 256 (100.H) Type = SHORT or LONG Mô tả số lượng cột ảnh hay số pixel hàng d Số chiều vật lí Các ứng dụng thường tính toán dung lượng tệp ảnh thông qua số số lượng cột dòng ảnh Một số thông tin liên quan: ResolutionUnit Tag = 296 (128.H) Type = SHORT Page 23 Values: = đơn vị đo cụ thể, dùng cho tệp ảnh giá trị cụ thể tỉ lệ hình chữ nhật = Inch = Centimeter Mặc định = (inch) XResolution Tag = 282 (11A.H) Type = RATIONAL Cho biết số lượng pixel theo độ rộng (chiều ngang) tương ứng với độ phân giải ảnh YResolution Tag = 283 (11B.H) Type = RATIONAL Cho biết số lượng pixel theo độ dài (chiều dọc) tương ứng với độ phân giải ảnh e Định vị liệu Dữ liệu ảnh nén hay không nén lưu trữ toàn tệp TIFF TIFF cho phép chia ảnh thành dải để thuận tiện cho việc lưu trữ, xử lí liệu thao tác vào khác Các thông tin liên quan tới việc lưu trữ kích thước dải mô tả sau: RowsPerStrip Tag = 278 (116.H) Type = SHORT or LONG Số lượng dòng dải StripOffsets Tag = 273 (111.H) Type = SHORT or LONG Số byte bù dải StripByteCounts Tag = 279 (117.H) Type = SHORT or LONG Số bytes biểu diễn liệu cho dải sau nén 1.4.2 Ảnh đa mức xám (Grayscale Images) Ảnh đa mức xám cải tiến từ ảnh nhị phân Với ảnh nhị phân, ta lưu lại ảnh với màu đen trắng với ảnh đa mức xám, ta lưu ảnh mà điểm ảnh có nhiều mức độ xám (độ chói) khác Mặc định, ảnh đa mức xám bao gồm tất Page 24 thông tin có ảnh nhị phân, trừ số thông tin cải tiến khác sau: Ảnh đa mức xám không nén nén với thuật toán PackBits (32773) BitsPerSample Tag = 258 (102.H) Type = SHORT Số bits cần để lưu trữ cho thành phần, cho phép lưu từ 16 đến 256 mức độ xám khác 1.4.3 Ảnh đa màu sắc (Palette-color Images) Tương tự ảnh đa mức xám, ảnh đa màu sắc tổ chức theo dạng pixel (điểm ảnh) Với pixel, ảnh lưu trữ theo mức màu sắc khác (thay mức độ chói ảnh đa mức xám đơn thuần) theo chuẩn màu RGB Ảnh đa màu sắc bao gồm tất thông tin tương tự với ảnh đa mức xám có số thông tin cải tiến khác như: ColorMap Tag = 320 (140.H) Type = SHORT N = * (2**BitsPerSample) Trường khởi gán giá trị màu sắc tương ứng bảng màu RGB cho điểm ảnh VD: pixel lưu giá trị tương ứng có ba Red, Green, Blue số bảng màu RGB Theo thứ tự đó, ta có giá trị màu từ đen (0,0,0) trắng (65535, 65535, 65535) 1.4.4 Ảnh màu RGB đầy đủ (RGB Full Color Images) Với định dạng pixel gồm thành phần màu: Red, Green, Blue không ánh xạ giá trị màu thông qua bảng màu RGB ColorMap trước Ảnh có đầy đủ tính chất ảnh đa màu sắc có số đặc điểm khác sau: SamplesPerPixel Tag = 277 (115.H) Type = SHORT Số lượng thành phần màu cho pixel, thành phần màu Red, Green, Blue 1.4.5 Một số phân loại ảnh TIFF cải tiến a Tiled Images Với định dạng này, tệp TIFF chia nhỏ ảnh thành dải nhỏ nhằm thuận tiện cho việc tổ chức liệu nén ảnh Kích thước dải thể qua số TileWidth TileLength Page 25 b CMYK Images Với định dạng này, pixel ảnh gồm thành phần, thành phần giá trị màu cyan, magenta, yellow black Đó bốn thành phần màu sử dụng việc in ấn Mối quan hệ hệ màu CMYK với hệ màu RGB sau: cyan = 255-red magenta = 255-green yellow = 255-blue black = black c YCbCr Images Định dạng đời nhằm phục vụ cho việc hiển thị ảnh, tín hiệu video truyền hình hay thiết bị số Mối quan hệ hệ YCbCr với hệ RGB biểu diễn sau: Y = ( LumaRed * R + LumaGreen * G + LumaBlue * B ) Cb = ( B - Y ) / ( - * LumaBlue ) Cr = ( R - Y ) / ( - * LumaRed ) Trong đó, tham số xác định: LumaRed = 0.299 LumaGreen = 0.587 LumaBlue = 0.114 d CIEL*a*b Images CIEL*a*b không gian màu xây dựng dựa phân chia độ sáng kênh màu, theo cảm nhận người Sự tương quan hệ màu CIEL*a*b hệ màu RGB là: 0.60700.17400.2000 0.29900.58700.1140 * 0.00000.06601.1110 R G B = X Y Z Các kĩ thuật nén ảnh TIFF 2.1 PackBits a Ý tưởng thuật toán Ý tưởng thuật giải thuật packbits thay chuỗi ký tự giống liên tiếp một vài ký tự đại diện cho chuỗi Đối với tệp ảnh TIFF, ta nén giải nén ảnh đa mức xám, ảnh màu hay ảnh nhị phân sử dụng thuật toán Packbits – phương pháp không làm thông tin Thuật toán Packbits chạy nhanh, áp dụng rộng rã thích hợp để nén với ảnh rời rạc văn scan từ vào Các chương trình ứng dụng lưu trữ ảnh Page 26 nén định dạng TIFF phiên 5.0 Packbits thuật toán nén logic sử dụng uyển chuyển nhiều hệ thống khác Đây phương pháp mã hóa theo byte tương ứng với type = 32773 định dạng TIFF, thường sử dụng phương pháp nén phổ biến dòng máy Macintosh Apple Ví dụ: - Chuỗi đầu vào: AA AA AA 80 00 2A AA AA AA AA 80 00 2A 22 AA AA AA AA AA AA AA AA AA AA - Chuỗi sau nén gồm ký tự với ý nghĩa sau: (các ký tự in đậm số nguyên có dấu) FE AA: (-(-2)+1) = bytes cho ký tự: AA 02 80 00 2A: (2) + = bytes cho ký tự rời rạc FD AA: (-(-3)+1) = bytes cho ký tự: AA 03 80 00 2A 22: (3) + = bytes ký tự rời rạc F7 AA: (-(-9)+1) = 10 bytes cho ký tự: AA - Chuỗi ký tự sau mã hóa là: FE AA 02 80 00 2A FD AA 03 80 00 2A 22 F7 AA Nén liệu: Sơ đồ giả ngôn ngữ thuật toán thể sau: Loop until you get the number of unpacked bytes you are expecting: Read the next source byte into n If n is between and 127 inclusive, copy the next n+1 bytes literally Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times Else if n is -128, noop Endloop Giải nén liệu: Với thuật toán nén liệu Packbits cách để xác định điểm kết thức dòng liệu xử lí Chính thế, phải luốn xác định trước kích thước liệu trước nén (không nén) để giúp cho việc mã hóa Packbits xác định điểm kết thúc dòng liệu nén b Đặc điểm thuật toán Các đặc điểm trội - Đơn giản mặt thuật toán mã hóa giải mã - Tốc độ tính toán nhanh - Tỉ số nén phụ thuộc vào độ dài chuỗi ký tự liên tiếp giống Một số luật ràng buộc trình nén: - Nén riêng rẽ dòng; không nén vượt đường biên dòng - Số lượng bytes không nén dòng xác định (ImageWidth + 7)/8 Nếu ảnh không nén yêu cầu số chẵn bytes dòng giải nén theo đệm từ (word-aligned buffers) Page 27 - 2.2 Nếu thao tác chạy lớn 128 bytes trình mã hóa phần lại thao tác thực tương tự Modified Huffmann Đây phương pháp nén nhị phân nằm giải thuật CCITT Group 1D Mỗi dòng liệu xác định chuối từ mã có độ dài thay đổi khác Mỗi từ mã thể độ dài mã hóa cho mã màu trắng đen Nếu độ dài dải từ 0-63 pixels mã hóa theo bảng từ mã Terminating Nếu độ dài dải từ 64-2623 (2560+63) pixel mã hóa theo bảng từ mã Make-up Nếu độ dài dải lơn 2624 pixel mã hóa trước tiên theo bảng từ mã Make-up 2560, lại, phần nằm dải mã hóa theo bảng từ mã additional Make-up Bảng từ mã Terminating code Page 28 Page 29 Bảng từ mã Make-up code Page 30 Bảng từ mã Additional Make-up code Page 31 2.3 CCITT G3 2D CCITT G4 2D Thuật toán có tên khác CCITT Bilevel Đối với định dạng TIFF ta áp dụng thuật toán nén ảnh CCITT Group (mã hóa chiều cho văn FAX) giải nén CCITT Group ảnh nhị phân FAX tên phổ thông dùng cho chuẩn nén CCITT Group Group 4, áp dụng cho tệp văn truyền qua thiết bị thoại FAX; nhiên, hầu hết máy FAX hỗ trợ chuẩn định dạng Group FAX phương thức nén không mát liệu Các ứng dụng cho phép nén ảnh nhị phân thành dạng file FAX, lưu trữ ảnh FAX dạng tệp TIFF 5.0 giải nén ảnh để hiển thị ảnh FAX hình CCITT cung cấp phương pháp nén hiệu cho tệp tin scan trực tiếp từ văn bên 2.4 LZW a Ý tưởng thuật toán Thuật toán LZW (được phát minh Lempel - Zip and Welch) áp dụng để nén ảnh tệp TIFF phiên 5.0 không làm mát liệu, với tỉ số nén trung bình 2:1 thường áp dụng nén ảnh đồ họa tượng trưng Thuật toán LZW sử dụng phép thay ký tự chuỗi đầu vào dựa bảng giải mã hóa (giải mã) có sẵn Page 32 Bảng giải mã hóa (giải mã) không cần lưu kèm với liệu trình nén Người mã hóa người giải mã tự xây dựng bảng giải mã Bảng mã hóa xây dựng vào việc tách chuỗi cần mã hóa hóa thành chuỗi theo thứ tự từ điển - Quá trình nén liệu + Bước 1: Xây dựng từ điển từ chuỗi đầu vào, đánh số cho ký tự từ điển: chia nhỏ chuỗi cần mã hóa thành nhiều chuỗi theo thứ tự từ điển chuỗi + Bước 2: Đánh số thứ tự i cho chuỗi + Bước 3: Mã hóa chuỗi theo phép thay Mỗi chuỗi thay bởi: Phần trỏ, trỏ đến số thứ tự chuỗi tiền tố: số thứ tự dạng nhị phân chuỗi tiền tố Phần bit sai khác với chuỗi tiền tố + Bước 4: Ghép phần mã hóa chuỗi theo thứ tự ban đầu Mã thực thi mô cho trình nén với giải thuật LZW: InitializeStringTable(); WriteCode(ClearCode); W = the empty string; for each character in the strip { K = GetNextCharacter(); if W+K is in the string table { W = W+K; /* string concatenation */ } else { WriteCode (CodeFromString(W)); AddTableEntry(W+K); W = K; } } /* end of for loop */ WriteCode (CodeFromString(W)); WriteCode (EndOfInformation); - Quá trình giải nén liệu + Bước 1: Dựa vào chuỗi mã hóa, xây dựng lại từ điển + Bước 2: Giải mã chuỗi mã hóa dựa vào từ điển tự xây dựng lại Mã thực thi mô cho trình giải nén với giải thuật LZW: while ((Code = GetNextCode()) != EoiCode) { if (Code == ClearCode) { InitializeTable(); Code = GetNextCode(); if (Code == EoiCode) Page 33 break; WriteString(StringFromCode(Code)); OldCode = Code; } /* end of ClearCode case */ else { if (IsInTable(Code)) { WriteString(StringFromCode(Code)); AddStringToTable(StringFromCode(OldCode )+FirstChar(StringFromCode(Code))); OldCode = Code; } else { OutString = StringFromCode(OldCode) + FirstChar(StringFromCode(OldCode)); WriteString(OutString); AddStringToTable(OutString); OldCode = Code; } } /* end of not-ClearCode case */ } /* end of while loop */ b Đặc điểm thuật toán Thuật toán phát minh Lempel-Ziv Welch với số đặc trưng sau: - LZW làm việc với ảnh có giá trị bit biểu diễn khác nhau, đa dạng - LZW có chi phí tính toán tồi mức chấp nhận - LZW quản lí tốt thành phần lặp lại mức độ rộng - LZW thực nhanh với trình nén giải nén - LZW phương thức mã hóa không mát liệu Tuy nhiên, ta loại nhiễu thông tin dư thừa ảnh LZW nén ảnh xuống với kích thước nhỏ - Không cần phải lưu trữ từ điển, bên giải mã tự xây dựng lại trình giải mã - Số lượng từ từ điển tăng lên không giới hạn - Các chuỗi có độ dài lớn xuất trễ trình xây dựng từ điển LZW hoạt động tốt với ảnh nhị phân Giải thuật đem so sánh vượt trội giải thuật Packbits ngang với giải thuật CCITT 1D c Ví dụ mô - Chuỗi cần mã hóa: 0110 1010 0010 - Mã hóa: Page 34 + Xây dựng chuỗi theo thứ tự từ điển Các chuỗi là: 1, 0, 11, 01, 010, 00, 10 + Xây dựng bảng mã hóa • Trong thuật toán LZ78, chuỗi thứ n, ta cần (log 2n) bits cho phần trỏ • Phần tử từ điển có số thự tự 0, phần tử rỗng Số thứ tự Số thự tự dạng nhị phân 000 001 010 011 100 101 110 111 Số bit cần dùng cho trỏ 1 2 3 Chuỗi Rỗng (ko bít ký tự) 11 01 010 00 10 Chuỗi mã hóa (con trỏ, bit sai khác) ,1 0,0 01,1 10,1 100,0 010,0 001,0 Chuỗi mã hóa là: 0001 1101 1000 0100 0010 - Giải mã : Xây dựng lại từ điển : tách chuỗi mã hóa thành chuỗi gồm thành phần : + Phần trỏ đến số thứ tự chuỗi tiền tố: (log 2n) bits + Phần bit khác với chuỗi tiền tố Số thứ tự Số bit cần dùng cho trỏ 1 3 Các chuỗi (con trỏ, bit sai khác) ,1 0,0 01,1 10,1 100,0 010,0 001,0 Chuỗi 11 01 010 00 10 Chuỗi ban đầu : 0110 1010 0010 So sánh TIFF JPEG 3.1 Các đặc điểm tương đồng (giống nhau) 3.2 Các đặc điểm khác biệt Sau tìm hiểu tính chất, đặc trưng, phương pháp áp dụng triển khai chuẩn TIFF JPEG, ta nhận thấy so với JPEG, TIFF nhiều mặt hạn chế Chuẩn JPEG có nguồn gốc từ chuẩn TIFF, cải Page 35 a b c d e f g h thiện nhiều mặt thiếu xót TIFF Chính vậy, đặc điểm khác chủ yếu mặt cải tiến JPEG so với TIFF Yêu cầu tài nguyên sử dụng JPEG giảm thiểu nhiều so với TIFF, tốc độ mở file cải thiện đáng kể, dung lượng lưu trữ tệp JPEG nhỏ gọn TIFF nhiều lần JPEG hoạt động hiệu với không gian màu liên tiếp: Grayscale (Photometric Interpretation = 1) RGB (Photometric Interpretation = 2) CMYK (Photometric Interpretation = 5) (See the CMYK Images section.) YCbCr (Photometric Interpretation = 6) (See the YCbCr images section.) Việc biến đổi sang hệ màu YCbCr thường sử dụng phần trình nén thành phần sắc độ lấy mẫu nhỏ nén mức độ cao (nén sâu hơn) mà không làm giảm chất lượng hiển thị (theo quan sát trực quan người) Nhiều trường đưa để xác định tham số cho chuẩn JPEG dùng nén cho phép bảng lượng tử hóa mã hóa Huffman tương tác để tạo file TIFF TIFF tương thích với ảnh nén liệu theo chuẩn nén ảnh JPEG, từ đó, tận dụng thông tin trường liệu mở rộng để thực chuyển đổi định dạng TIFF sang nhiều định dạng khác Trường thông tin PlanarConfiguration sử dụng để xác thực xem hình có phải nén theo chuẩn JPEG hay không Với phương pháp mã hóa DCT JPEG khối liệu mã hóa theo block 8x8 Mặc dù chuẩn JPEG áp dụng thuật toán mã hóa tổ chức liệu theo khối liên tiếp sử dụng bitstream sử dụng hiệu việc tổ chức theo mảng/dải ảnh (tiles/trips) Định danh chuẩn TIFF JPEG cải tiến theo chuẩn ISO DIS 10918-1: TIFF name JPEG DIS name Number of Pixel Number of Lines Number of Components Quantization Table Huffman Table for DC coefficients Huffman Table for AC coefficients ImageWidth ImageLength SamplesPerPixel JPEGQTable JPEGDCTable JPEGACTable Chuẩn JPEG mở rộng so với TIFF thiết kế cấu trúc mảng/dải (tiles/strips) nhằm cho phép việc chuyển đổi định dạng xử lí liệu nhanh hiệu j Một số cải tiến trường liệu sẵn có: i Compression Page 36 Tag = 259 (103.H) Type = SHORT N=1 Trường lưu thông tin kiểu nén liệu Với chuẩn JPEG 6= JPEG thay JPEGInterchangeFormat Tag = 513 (201.H) Type = LONG N=1 Trường xác định thông tin dòng bit mà định dạng JPEG thay đổi so với thông tin gốc TIFF Nếu có thay đổi thông tin dòng bit JPEG trường trỏ tới mã đánh dấu Start of Image (SOI) Nếu giá trị trường N = thông tin dòng bit thay đổi với định dạng JPEG JPEGInterchangeFormatLength Tag = 514 (202.H) Type = LONG N=1 Trường cho biết độ dài (bytes) dòng bit thay đổi JPEG Trường có lợi việc trích xuất thành phần dòng bit đổi định dạng JPEG mà không cần phải phân tích xét duyệt toàn dòng bit Một số thông tin kĩ thuật khác JPEG TIFF Ảnh Đặc điểm Color Depth Transparency Multi Page Animation Layers Extenable JPEG 8-bit (greyscale), 12-bit, and 24-bit Không Không Không Không Không Page 37 TIFF 1, 2, 4, 8, 16, 24, and 32 Có Có Không Có Có (thông qua Tags) [...]... có thể nén và giải nén ảnh đa mức xám, ảnh màu hay ảnh nhị phân sử dụng thuật toán Packbits – một phương pháp không làm mất thông tin Thuật toán Packbits chạy nhanh, được áp dụng rộng rã và rất thích hợp để nén với các bức ảnh rời rạc như các văn bản scan từ ngoài vào Các chương trình ứng dụng có thể lưu trữ các bức ảnh Page 26 đã được nén trong định dạng TIFF phiên bản 5.0 Packbits là thuật toán nén. .. văn bản FAX) và giải nén CCITT Group 3 và 4 đối với ảnh nhị phân FAX là tên phổ thông được dùng cho chuẩn nén CCITT Group 3 và Group 4, áp dụng cho các tệp văn bản được truyền qua các thiết bị thoại như FAX; tuy nhiên, hầu hết các máy FAX chỉ hỗ trợ chuẩn định dạng Group 3 FAX là phương thức nén không mất mát dữ liệu Các ứng dụng có thể cho phép nén ảnh nhị phân thành dạng file FAX, lưu trữ các ảnh. .. Adobe nắm bản quyền với toàn bộ các vấn đề liên quan tới định dạng ảnh TIFF Ban đầu, TIFF là định dạng ảnh chỉ cho phép lưu trữ ảnh nhị phân, tạo ra các tệp ảnh đen trắng, cụ thể, với mỗi một điểm ảnh thì chỉ có một trong hai màu hoặc trắng hoặc đen Với sự phát triển của công nghệ sau này, TIFF đã hỗ trợ lưu trữ ảnh đa mức xám, ảnh màu và nhiều dạng ảnh màu hiện đại khác nữa Các qui tắc xây dựng chuẩn. .. bởi các thành phần sắc độ có thể được lấy mẫu nhỏ hơn nữa và nén ở mức độ cao hơn (nén sâu hơn) mà vẫn không làm giảm chất lượng hiển thị (theo quan sát trực quan của con người) Nhiều trường mới được đưa ra để xác định các tham số cho chuẩn JPEG được dùng trong nén và cho phép bảng lượng tử hóa và mã hóa Huffman có thể cùng tương tác để tạo ra các file TIFF TIFF tương thích với các ảnh đã được nén. .. TIFF 5.0 và giải nén ảnh để hiển thị các ảnh FAX ngay trên màn hình CCITT cung cấp phương pháp nén hiệu quả cho các tệp tin được scan trực tiếp từ văn bản bên ngoài 2.4 LZW a Ý tưởng thuật toán Thuật toán LZW (được phát minh bởi Lempel - Zip and Welch) được áp dụng để nén ảnh trong tệp TIFF phiên bản 5.0 không làm mất mát dữ liệu, với tỉ số nén trung bình 2:1 và thường được áp dụng trong nén các ảnh đồ... ảnh YResolution Tag = 283 (11B.H) Type = RATIONAL Cho biết số lượng pixel theo độ dài (chiều dọc) tương ứng với độ phân giải của ảnh e Định vị dữ liệu Dữ liệu của mỗi bức ảnh được nén hay không nén đều được lưu trữ toàn bộ trong tệp TIFF TIFF cũng cho phép chia các ảnh thành các dải để thuận tiện cho việc lưu trữ, xử lí dữ liệu và các thao tác vào ra khác Các thông tin liên quan tới việc lưu trữ và. .. chia trong bảng lượng tử hóa là nhỏ đối với các hệ số có tần số thấp và tăng từ từ đối với các hệ số có tần số cao hơn.Việc biến đổi sao cho chất lượng hình ảnh do mắt người cảm nhận tốt, phụ thuộc vào các thành phần tần số và sự biến đổi chi tiết ảnh từng vùng trong miền không gian Các ảnh càng chi tiết thì hệ số thành phần tần số cao càng lớn 2.4 Quá trình mã hóa hay nén Để mã hóa entropy các hệ số... tiến từ ảnh nhị phân Với ảnh nhị phân, ta chỉ có thể lưu lại ảnh chỉ với 2 màu đen và trắng thì với ảnh đa mức xám, ta có thể lưu ảnh mà tại mỗi điểm ảnh sẽ có nhiều mức độ xám (độ chói) khác nhau Mặc định, ảnh đa mức xám bao gồm tất cả các Page 24 thông tin có trong ảnh nhị phân, trừ một số thông tin cải tiến khác như sau: Ảnh đa mức xám không nén hoặc nén với thuật toán PackBits (32773) BitsPerSample... liệu được lưu trữ thành các mảng có kiểu dữ liệu là Byte 2 = nén theo thuật toán CCITT 32773 = nén dạng PackBits c Hàng và Cột Một tệp ảnh được tổ chức thành một mảng lưu trữ các pixel (được chia thành các hàng và cột) Thông tin liên quan tới hàng và cột: ImageLength Tag = 257 (101.H) Type = SHORT or LONG Mô tả số lượng hàng (có khi được mô tả là các dòng quét scanlines) trong bức ảnh ImageWidth Tag =... liệu theo chuẩn nén ảnh của JPEG, từ đó, có thể tận dụng thông tin của các trường dữ liệu mở rộng đó để thực hiện chuyển đổi định dạng TIFF sang nhiều định dạng khác Trường thông tin PlanarConfiguration được sử dụng để xác thực xem một bức hình có phải được nén theo chuẩn JPEG hay không Với phương pháp mã hóa DCT JPEG thì các khối dữ liệu được mã hóa theo từng block 8x8 Mặc dù chuẩn JPEG áp dụng các thuật ... trữ ảnh, Fax màu, truyền ảnh báo chí, ảnh cho y học, camera số… Tiêu chuẩn JPEG (Joint Photographic Experts Group) định cho nén ảnh tĩnh đơn sắc màu Công nghệ nén ảnh JPEG công nghệ nén ảnh hiệu... trữ ảnh phụ thuộc vào loại ảnh quét Nếu quét liên tục block bao gồm mẫu từ dòng liên tục (lúc nén ảnh theo-frame) Ngược lại, trường hợp quét xen kẽ, block có mẫu nửa ảnh (nén ảnh theo-mành) Tóm... chia hình ảnh thành ảnh (block) thực có ý nghĩa cho bước chuyển vị Page 2.Phương pháp nén ảnh theo chuẩn JPEG Công đoạn hầu hết trình nén xác định thông tin dư thừa miền không gian ảnh Nén không