Tổng quan về định dạng file ảnh và phương pháp định dạng file ảnh

47 888 1
Tổng quan về định dạng file ảnh và phương pháp định dạng file ảnh

Đ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

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KỸ THUẬT ĐIỆN TỬ I ---------- CÔNG NGHỆ PHÁT THANH TRUYỀN HÌNH SỐ ĐỀ TÀI Tổng quan về định dạng file ảnh và phương pháp chuyển đổi định dạng file ảnh Giảng viên: Nguyễn Quốc Dinh Nhóm 12: Nguyễn Trung Kiên Ngô Tuấn Linh Lã Hùng Anh Lớp: D11XLTH Hà Nội, 2015 Mục lục 2 Lời mở đầu Ngày này, với sự phát triển mạnh mẽ của ngành công nghiệp máy tính, các sản phẩm đồ họa ngày càng nâng cao về chất lượng cũng như giảm dung lương lưu trữ, tiết kiệm bộ nhớ cho hệ thống nói chung và trong truyền hình nói riêng. Nhưng chất lượng hình ảnh và dung lượng lưu trữ luôn tỉ lệ nghịch với nhau. Với từng nhu cầu sử dụng mà ta có thể sử dụng các loại định dạng đồ họa phù hợp. Nếu dùng để lưu trữ thì các định dạng sử dụng nén không mất thông tin là sự lựa chọn số một, còn nếu muốn truyền tải trên Internet, hay lưu trữ trên web… thì các định dạng hỗ trợ nén mất thông tin nhưng vẫn giữ được chất lượng tốt như định dạng JPG là một lựa chọn phù hợp. Nội dung của đề tài bao gồm 3 chương: Chương 1: Tổng quan về định dạng file ảnh Chương 2: Chuyển đổi định dạng file ảnh. Chương 3: Mô phỏng kết quả trên matlab. Nhóm sinh viên thực hiện đề tài: Nguyễn Trung Kiên Ngô Tuấn Linh Lã Hùng Anh Do hạn chế về mặt thời gian cũng như kiến thức nên không thể tránh khỏi những thiếu sót trong lần biên soạn đầu tiên này, chúng em xin chân thành cảm ơn và mong đợi ý kiến đóng góp của thầy cô và các bạn. 3 Danh mục hình vẽ Hình 1. Pixel Hình 2. Chia khung ảnh thành các ô (Pixel) Hình 3. Nguyên lý trộn màu Hình 4. Sự khác nhau giữa ảnh bitmap và ảnh vector1 Hình 5. Cấu trúc ảnh Index Hình 6. Ánh xạ bản đồ màu trong ảnh Index Hình 7. Ảnh Grayscale Hình 8. Ảnh nhị phân Hình 9. Cấu trúc ảnh RGB Hình 10. Mô tả 3 thành phần màu trong ảnh RGB Hình 11. Phương pháp biến đổi Radon Hình 12. Ảnh định dạng GIF Hình 13. Sơ đồ thuật toán LZW8 Hình 14. Khả năng nén của định dạng JPEG Hình 15. Quá trình biến đổi DCT và DCT ngược Hình 16. Ví dụ biến đổi DCT và DCT ngược khôi phục lại ảnh Hình 17. Ví dụ về ảnh TIF Hình 18. Cấu trúc lớp màu trong định dạng PNG Hình 19. Ánh xạ bản đồ màu và kênh Alpha Hình 20. Một số loại điểm ảnh trong PNG Hình 21. Ảnh 24bit màu định dạng PNG Hình 22. Đọc file JPEG Hình 23. Xuất file PNG Hình 24. Tạo khung giao diện trong Guide Hình 25. Các thuộc tính của đối tượng trong Guide Hình 26. Ảnh chuyển sang định dạng .tif Hình 27. Mô hình biến đổi DCT ảnh xám Hình 28. Giao diện mô phỏng Hình 29. Ảnh nhập vào Hình 30. Hiển thị ảnh gốc Hình 31. Ảnh sau khi biến đổi DCT Hình 32. Pixel ảnh gốc Hình 33. Pixel ảnh sau khi biến đổi DCT 4 Danh mục bảng biểu Bảng 1. Tần suất và sác xuất xuất hiện một số ký tự Bảng 2. từ mã gán cho các kí tự bởi mã Huffman.............................................................30 Bảng 3: So sánh một số định dạng file ảnh thông thường Danh mục chữ viết tắt Tên viết tắt JPG PNG TIFF BMT DPI PPI Tên đầy đủ Photographic Experts Group Portable Network Graphics Tag Image File Format Windows bitmap Dots Per Inch Pixels Per Inch 5 Dịch nghĩa Định dạng file JPEG Định dạng file PNG Định dạng file TIFF Định dạng file BMP Số Dots trên một Inch Số Pixel trên một Inch Chương I. Tổng quan về định dạng file ảnh 1.1 Khái niệm ảnh số Ảnh số được tạo nên từ hàng trăm ngàn cho đến hàng triệu ô vuông rất nhỏ - được coi là những thành tố của bức ảnh và thường được biết dưới tên gọi là pixels. Máy tính hay máy in sử dụng những ô vuông nhỏ này để hiển thị hay in ra bức ảnh. Để làm được điều đó máy tính hay máy in chia màn hình, trang giấy thành một mạng lưới chứa các ô vuông, sau đó sử dụng các giá trị chứa trong file ảnh để định ra mầu sắc, độ sáng tối của từng pixel trong mạng lưới đó - ảnh số được hình thành. 1.2 Pixel Pixel là một điểm vật lý trong một hình ảnh raster hoặc một khối màu rất nhỏ và là đơn vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số. Mỗi điểm ảnh là một mẫu của một hình ảnh ban đầu, nhiều điểm ảnh hơn thường cung cấp đại diện chính xác hơn của bản gốc. Hình ảnh trong hệ thống màu sắc, màu sắc thường là ba hoặc bốn đại diện trong cường độ thành phần như màu đỏ, xanh lá cây, và màu xanh, hoặc màu lục lam, đỏ tươi… Hình 1. Pixel Hầu hết các chương trình ứng dụng đồ họa đều diễn tả độ phân giải của hình ảnh bằng pixel dimensions - kích thước pixel. Ví dụ, một hình ảnh có kích thước là “2592x1944” sẽ chứa 2,592 pixel trên mỗi hàng ngang và 1,944 pixel trên mỗi hàng dọc. Hình 2. Chia khung ảnh thành các ô (Pixel) 6 1.3 Độ phân giải (dpi,ppi) Khái niệm resolution - độ phân giải chỉ lượng thông tin được chứa đựng trong một tập tin ảnh kỹ thuật số được hiển thị trên các thiết bị hoặc được in ra, thông thường được đo bằng pixel. Nói một cách tổng quát, độ phân giải của bức ảnh càng cao, thì việc hiển thị nó trên website hoặc trang in càng chi tiết và mượt mà - do đó một vài bức ảnh có độ phân giải rất cao có thể chứa nhiều pixels hơn mức mà mà mắt người có thể nhìn thấy. Sự khác biệt giữa Pixels Per Inch và Dots Per Inch. Mặc dù thường được dùng thay thế cho nhau, tuy nhiên, về mặt kỹ thuật, pixels per inch (PPI) và dots per inch (DPI) không phải là một. PPI chỉ số lượng pixel có trên 1 inch của một bức ảnh số hoặc màn hình máy tính. PPI tuy không ảnh hưởng đến chất lượng thực sự của bản thân bức ảnh nhưng nó có thể ảnh hưởng đến việc hiển thị bức ảnh đó trên trang web hoặc bản in. DPI, ở một khía cạnh khác, lại chỉ độ phân giải của các bản in mà máy in có thể tạo ra. Đây là một đặc tính vật lý của máy in. Mỗi dot của máy in đều có kích thước vật lý xác định. Máy in sử dụng các dot mực để hiển thị hình ảnh; máy in tạo ra càng nhiều dot trên một inch vuông thì chất lượng bản in càng cao. Các dòng máy in cấp thấp có DPI thấp trong khi các dòng máy in cấp cap sẽ có DPI cao. Ví dụ, một máy in hỗ trợ 1200DPI có nghĩa là máy thể in 1200 điểm trên 1 inch (theo cả chiều ngang lẫn chiều dọc). Khi in ấn, một điểm quan trọng cần chú ý, đó là phải đảm bảo rằng DPI phải lớn hơn hoặc bằng PPI. Nếu DPI nhỏ hơn PPI, máy in sẽ không thể thể hiện được đầy đủ được độ phân giải cao của tấm ảnh. Nếu DPI lớn hơn PPI, máy in sẽ sử dụng nhiều dot mực để biểu diễn một pixel. Trái ngược với PPI, DPI không phụ thuộc vào kích cỡ trang in. DPI là một chỉ số cố định với một máy in cho trước. 1.4 Lý thuyết màu Hình 3. Nguyên lý trộn màu Màu sắc được lưu trong dữ liệu số hóa theo hai chế độ chính: RGB và CMYK. RGB(Red, Green, Blue) các màu trong hình khối được tạo và lưu theo tỷ lệ của 3 màu cơ bản: đỏ, xanh da trời và xanh lá cây. Phần lớn các máy tính hiện nay đều sử dụng chế độ này. Thang màu được chỉ định từ 0 đến 255. Ảnh RGB sử dụng ba màu để tái tạo đến 16.7 triệu màu sắc tự nhiên. RGB là chế độ mặc định cho các ảnh trong Paint. Màn hình máy tính luôn luôn hiển thị các màu sử dụng mô hình RGB. Một số ưu điểm khi sử dụng màu RGB: - Tiết kiệm dung lượng nhớ và cải thiện hiệu suất làm việc trong quá trình tách màu. 7 - Độc lập cao đối với thiết bị, do không gian màu RGB không phụ thuộc vào màn hình hoặc mực in. CMYK (Cyan, Magenta, Yellow, Black) là các màu bù với màu cơ bản RGB trong vòng tròn màu. Các màu này thường được sử dụng trong ngành công nghiệp in ấn và xuất bản. Màu CMYK là phần màu được sử dụng tạo ra màu sắc cho việc in ảnh trong máy in. Mô hình CMYK dựa trên chất lượng hấp thụ ánh sáng của mực in trên giấy. Khi ánh sáng trắng va đập trên mực, một phần của phổ bị hấp thụ và một phần phản xạ trở lại đến mắt con người. Về lý thuyết, các sắc tố tinh khiết, xanh lơ (C) đỏ thẫm (M) và vàng (Y) phải kết hợp với nhau để hấp thụ toàn bộ màu và tạo ra màu đen. Trong ảnh CMYK màu trắng thuần tuý được tạo ra khi cả bốn thành phần đều có giá trị bằng 0. Các màu cơ bản được sử dụng là: Xanh lơ, Đỏ tươi, Vàng và Đen. 1.5 Độ sâu màu Là tổng số màu được sử dụng trong một ảnh, điều này tuỳ thuộc vào kích thước, chất lượng, độ phân giải, cũng như định dạng ảnh. Độ sâu màu được tính bằng số pixel màu hiển thị. Một bit ảnh thể hiện 2 màu. Đối với ảnh đen trắng độ sâu màu là 1 bit, ảnh đa cấp xám là 8 bit (256 màu), ảnh đầy đủ màu sắc gồm 256 màu. Mỗi ảnh RGB có 24 bit (16.7 triệu) màu, với các ảnh chuyên nghiệp độ sâu màu là 30~48 bit (10~16 triệu) màu. 1.6 Định dạng ảnh bitmap 1.5.1. Khái niệm Ảnh Bitmap được xây dựng từ các điểm ảnh màu (pixels) là một khối nhỏ màu hình chữ nhật. Tất cả các điểm màu được sắp xếp với nhau theo một trật tự tạo thành ảnh. Định dạng ảnh bitmap được thiết kế sử dụng đối với các điểm ảnh hoặc hình đồ hoạ tương tự nhau. Một bức ảnh được tạo nên từ rất nhiều các điểm pixels. Các ảnh có độ phân giải cao (chất lượng ảnh tốt) bao gồm nhiều pixels và chiếm nhiều không gian bộ nhớ hơn so với cùng bức ảnh có độ phân giải thấp. Trong quá trình tạo ảnh cho trang Web, file ảnh được chỉnh sửa và thường lưu lại với độ phân giải là 72 pixels/inch (1 inch = 2.54 cm). Màn hình máy tính có độ phân giải là 2-96 pixel trên 1 inch tuỳ thuộc vào hãng sản xuất máy tính. Người ta sử dụng lớp ảnh bitmap cho đồ hoạ văn bản tạo vì tính năng tiện lợi trong việc chỉnh sửa sau này cũng như việc lưu mỗi đối tượng tạo ra trên các lớp. 1.5.2 Đặc điểm Ảnh Bitmap phụ thuộc vào độ phân giải. Độ phân giải được hiểu là tập hợp các điểm pixel trong 1 ảnh và tính bằng dpi (dots per inch) hoặc ppi (pixels per inch). Ảnh Bitmap hiển thị trên máy tính có độ phân giải là: 72 hoặc 96 ppi. Tuy nhiên khi in ảnh bitmap đạt chất lượng cao chúng ta cần đặt độ phân giải khoảng 150-300. Đối với ảnh Bitmap chúng ta không thể phóng to, thu nhỏ kích thước ảnh mà vẫn giữ nguyên chất lượng ảnh. Giảm kích thước ảnh Bitmap đồng nghĩa với việc chúng ta xoá đi một số điểm pixel và không thể khôi phục lại được. Tăng kích thước ảnh Bitmap bằng cách tạo mới thêm các điểm pixel, chương trình xử lý ảnh sẽ ước lượng giá trị màu dựa trên các điểm màu gần nó, quá trình đó gọi là Inter polation. 8 Việc thay đổi kích thước ảnh được gọi chính xác là quá trình “điều chỉnh tỷ lệ” (trong đồ hoạ trình diễn, đây là sự điều chỉnh trục y - trục giá trị được chọn bởi chương trình, sao cho các cách biệt về dữ liệu được rõ ràng. Mọi chương trình đồ hoạ đều có khả năng chia thang tỷ lệ trên trục y, nhưng thang đó có thể không thoả mãn. Điều chỉnh thang bằng tay sẽ cho kết quả tốt hơn). Tuy nhiên khi tăng kích thước ảnh lên chúng ta cần chú ý tới hạn định sự xuất hiện bề mặt lởm chởm răng cưa. Điều chỉnh tỷ lệ kích thước ảnh Bitmap nhỏ đi sẽ không tạo bất kỳ hiệu ứng nào. Thực tế khi thu nhỏ ảnh chúng ta đã tăng độ phân giải của ảnh. Ảnh Bitmap nói chung không trợ giúp việc tạo nền trong suốt, ngoại trừ hai định dạng file ảnh GIF và PNG trợ giúp hiệu ứng này. Cần chú ý rằng các phần mềm sửa đổi ảnh đều trợ giúp việc tạo hiệu ứng trong suốt nhưng chỉ có 2 định dạng file trên mới lưu được hiệu ứng này. Một quan niệm sai lầm khi cho rằng vùng ảnh được tạo trong suốt sẽ duy trì hiệu ứng đó khi file ảnh được lưu dưới bất kỳ định dạng ảnh nào hoặc khi ta sao chép và dán sang một chương trình khác. Thực tế, hiệu ứng đó sẽ không còn, tuy nhiên trong một số phần mềm xử lý ảnh thông dụng ta có thể giấu, lưu vùng ảnh bitmap được tạo trong suốt. Một số định dạng ảnh Bitmap thông dụng: • BMP • GIF • JPEG, JPEG2000 • PNG • TIFF 1.7. Định dạng ảnh vector 1.7.1 Khái niệm Ảnh Vector được tạo mới từ rất nhiều đối tượng khác nhau. Đối tượng Vector được xác định bởi các hàm toán học mà không phải là các điểm ảnh, ảnh vector cho chất lượng ảnh cao hơn ảnh Bitmap. Các đối tượng cơ bản bao gồm đường thẳng, đường cong và một số hình toán học gốc với các thuộc tính màu sắc, độ dày đường thẳng... 1.7.2 Đặc điểm Người ta hoàn toàn có thể thay đổi các thuộc tính đối tượng ảnh vector mà không ảnh hưởng tới đối tượng cơ bản đó. Đối với ảnh vector chúng ta không chỉ thay đổi thuộc tính mà còn có thể thay đổi hình dạng và sự hiển thị ảnh qua các điểm nút của ảnh. Ảnh vector cho phép biến đổi theo tỷ lệ do đó chúng không phụ thuộc vào độ phân giải. Ta có thể tăng giảm kích thước cả trên màn hình hay khi in mà không ảnh hưởng tới chất lượng ảnh. Một ưu điểm nổi bật khác của ảnh vector là chúng không hạn chế về hình dạng các điểm như trong ảnh bitmap. Đối tượng vector này có thể thay thế hoàn toàn bởi đối tượng vector khác. Bên cạnh những ưu điểm nổi bật, hạn chế cơ bản nhất của ảnh vector là sự không thích hợp đối với các ảnh tự nhiên, ảnh chụp từ máy kỹ thuật số. Ảnh vector được tạo từ các vùng màu thuần nhất hoặc vùng màu xám nhưng chúng không thể mô tả các màu sắc tinh tế khác 9 nhau trong một bức ảnh. Đó cũng chính là lý do tại sao chúng ta không thấy ảnh vector xuất hiện nhiều trong các bức tranh nghệ thuật, tranh truyện cũng như hình biếm họa. Tuy nhiên ngày nay công cụ tạo ảnh vector trợ giúp chúng ta ứng dụng đối tượng bề mặt ảnh bitmap giống như cảnh tự nhiên và trên đó ta hoàn toàn có thể tạo hiệu ứng, tạo cảnh nền trong suốt, tạo bóng cho từng đối tượng để có các cảnh khác nhau tuỳ theo mục đích sử dụng. Các đối tượng Vector cơ bản được xây dựng sẵn trong phần mềm, chúng ta không thể quét một ảnh vào và lưu dưới dạng ảnh vector mà không sử dụng phần mềm chuyển đổi đặc biệt. Ảnh vector dễ dàng chuyển đổi sang ảnh bitmap. Khi chuyển đổi ta có thể xác định bất kỳ kích thước nào cho ảnh bitmap mà không ảnh hưởng tới chất lượng ảnh. Tuy vậy, điều cần nhớ trước khi chuyển ảnh là phải lưu lại ảnh vector gốc bởi lẽ ảnh bitmap đã mất đi toàn bộ chất lượng và trạng thái vector của các đối tượng trong ảnh. Chú ý rằng khi ta mở ảnh vector trong phần mềm chỉ trợ giúp ảnh bitmap thì tất cả các thuộc tính, chất lượng ảnh vector sẽ bị chuyển đổi thành dữ liệu ảnh bitmap. Lý do quan trọng nhất khi ta quyết định chuyển đổi ảnh vector sang ảnh bitmap là khi chúng được sử dụng trên trang Web. Tại thời điểm hiện nay, các trang Web đều chưa hỗ trợ định dạng ảnh vector một cách hiệu quả. Chúng ta có thể sử dụng ảnh vector trên Macromedia Flash nhưng định dạng file này yêu cầu phải hỗ trợ Plug-in. Định dạng SVG được coi là định dạng chuẩn ảnh vector trên Web. Ảnh gốc Ảnh bitmap (400%) Ảnh vector (400%) Ảnh vector có chế độ phân giải không phụ thuộc vào kích thước ảnh, chúng không biến đổi khi ta phóng to, thu nhỏ ảnh như đối với ảnh bitmap. Do đối tượng vector được xây dựng từ các phương trình toán học khác với đối tượng bitmap được tạo thành từ các điểm ảnh, kích thước file ảnh vector nhỏ hơn nhiều so với kích thước cùng ảnh bitmap. Metafiles là ảnh đồ họa chứa cả dữ liệu ảnh bitmap và ảnh vector. Ví dụ một ảnh vector có thể chứa đối tượng mẫu được tạo thành từ các điểm pixel như là tô màu vùng. Lúc đó file này chứa ảnh vector nhưng thuộc tính tô màu được ghi dưới dữ liệu ảnh bitmap. Một số định dạng ảnh Vector thông dụng: • AI (Adobe Illustrator) • CDR (CorelDRAW) • CMX (Corel Exchange) • CGM Computer Graphics Metafile • DRW (Micrografx Draw) • DXF AutoCAD • WMF Windows Metafile 1.7.3 So sánh ảnh bitmap với ảnh vector a. Ảnh bitmap • Tập hợp các điểm màu pixels • Phụ thuộc vào chế độ phân giải • Chất lượng giảm khi thay đổi lại kích thước ảnh • Dễ dàng chuyển đổi giữa các định dạng ảnh • Hạn chế là hình dạng, kích thước ảnh luôn luôn là hình chữ nhật 10 Chỉ có một số (rất ít) định dạng ảnh trợ giúp tạo hiệu ứng trong suốt b. Ảnh vector • Được xác định bằng các đường toàn học, dễ dàng thay đổi, điều chỉnh tỷ lệ, hình dạng và tạo các hiệu ứng trên ảnh • Chất lượng ảnh không phụ thuộc vào độ phân giải, phóng to, thu nhỏ ảnh • Không tạo nền, luôn có mặc định hỗ trợ hiệu ứng trong suốt • Thường tạo các cảnh khung, xương sống ảnh có sẵn qua các hình dạng, đối tượng toán học cơ bản Không thích hợp đối với các ảnh nghệ thuật cao, ảnh tự nhiên, hay ảnh chụp kỹ thuật số. • Hình 4. Sự khác nhau giữa ảnh bitmap và ảnh vector 11 Chương II. Chuyển đổi định dạng file ảnh 2.1 Các kiểu ảnh trong matlab 2.1.1 Ảnh Index Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu) map. Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double. Hình 5. Cấu trúc ảnh Index Ma trận màu là một ma trận kich thước m x 3 gồm các thành phần thuộc kiểu double có giá trị trong khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red, green, blue của một màu trong tổng số m màu được sử dụng trong ảnh. Giá trị của một phần tử trong ma trận dữ liệu ảnh cho biết màu của điểm ảnh đó nằm ở hàng nào trong ma trận màu. Hình 6. Ánh xạ bản đồ màu trong ảnh Index 12 2.1.2 Ảnh Grayscale Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đó giá trị của mỗi phần tử cho biết độ sáng (hay mức xám) của điểm ảnh đó. Ma trận này có thể một trong các kiểu uint8, uint16 hoặc double. Ảnh biểu diễn theo kiểu này còn gọi là ảnh “trắng đen”. Hình 7. Ảnh Grayscale 2.1.3 Ảnh nhị phân Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh chỉ có thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng) Hình 8. Ảnh nhị phân 13 2.1.4 Ảnh RGB Còn gọi là ảnh “truecolor” do tính trung thực của nó. Ảnh này được biểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh, các phần tử của nó có thể thuộc kiểu uint8, uint16 hoặc double. Hình 9. Cấu trúc ảnh RGB Hình 10. Mô tả 3 thành phần màu trong ảnh RGB 14 2.2 Các phép biến đổi ảnh số 2.2.1 Phép biển đổi Fourier Phép biến đổi Fourier biểu diễn ảnh dưới dạng tổng của các lũy thừa phức của các thành phần biên độ, tần số, pha khác nhau của ảnh. Nếu f(m,n) là một hàm của hai biến không gian rời rạc m và n, thì biến đổi Fourier hai chiều của f(m,n) được định nghĩa: Nếu f(m,n) biểu diễn độ sáng của ảnh X ở vị trí pixel (m,n) thì F(w1,w2) chính là biến đổi Fourier của ảnh X. Do các dữ liệu trên máy tính được lưu trữ dưới dạng rời rạc, cụ thể là dữ liệu ảnh được tổ chức theo đơn vị pixel nên phép biến đổi Fourier cũng được rời rạc hóa thành biến đổi Fourier rời rạc (DFT). Các phép biến đổi DFT thuận và nghịch kích thước M x N được định nghĩa như sau: F(p,q) gọi là các hệ số của biến đổi DFT. Với các ứng dụng trong xử lý ảnh, chúng ta chỉ quan tâm đến các hàm fft2 và ifft2. Cú pháp: F=fft2(X,Mrows,Ncols) f=ifft2(F,mrows,ncols) Nếu ảnh ban đầu có kích thước nhỏ hơn thì Matlab tự động thêm vào các zero pixel trước khi biến đổi. Sau khi thực hiện biến đổi DFT bằng fft2, thành phần DC sẽ nằm ở góc trên bên trái của ảnh. Ta có thể dùng hàm fftshift để dịch thành phần DC này về trung tâm của ảnh. 2.2.2. Biến đổi DCT Biến đổi cosine rời rạc (DCT) biểu diễn ảnh dưới dạng tổng của các cosine của các thành phần biên độ và tần số khác nhau của ảnh. Hàm dct2 tính DCT hai chiều của một ảnh. DCT có tính chất mà với các ảnh điển hình, hầu hết các thông tin về ảnh chỉ tập trung trong một vài hệ số của DCT, trong khi các hệ số còn lại chỉ chứa rất ít thông tin. Vì lý do này, DCT thường được sử dụng trong các ứng dụng nén ảnh khác nhau nhờ hiệu suất gần như tối ưu của nó đối với các ảnh có độ tương quan cao giữa các điểm ảnh lân cận. Chẳng hạn, DCT là trung tâm của giải thuật nén ảnh theo chuẩn quốc tế thường được biết với tên JPEG (tên này do nhóm phát triển đặt ra: Joint Photographic Experts Group) DCT hai chiều của ma trận A có kích thước MxN được định nghĩa như sau : M −1 N −1 B pq = α pα q ∑ ∑ Amn cos m=0 n = 0 0 ≤ p ≤ M −1 π (2m + 1) p π (2n + 1)q cos 2M 2N 0 ≤ q ≤ N −1 với 15 1/ M p=0 αp =   (2 / M ) 0 ≤ p ≤ M − 1 1/ N q=0 αq =   (2 / N ) 0 ≤ q ≤ N − 1 1/ M p=0 αp =   (2 / M ) 0 ≤ p ≤ M − 1 1/ N q=0 αq =   (2 / N ) 0 ≤ q ≤ N − 1 Trong đó: và Các giá trị Bpq được gọi là các hệ số của biến đổi DCT. DCT có thể biến đổi ngược được và biến đổi ngược của nó cho bởi công thức : M −1 N −1 0 ≤ m ≤ M −1 π (2m + 1) p π (2n + 1)q Amn = ∑ ∑ α pα q B pq cos cos 2M 2N p=0 q =0 0 ≤ n ≤ N −1 với Trong đó: và Biểu thức DCT ngược có thể được xem xét khi coi rằng mọi ma trận A kích thước MxN như là tổng của MN hàm có dạng : π (2m + 1) p π (2n + 1) q α pα q B pq cos cos 2M 2N Những hàm này đựơc gọi là những hàm cơ sở của DCT. Hệ số DCT B pq có thể được xem như trọng số cho mỗi hàm cơ sở. 2.2.3 Biến đổi Radon Phép biến đổi Radon được thực hiện bởi hàm radon trong Matlab, biểu diễn ảnh dưới dạng các hình chiếu của nó dọc theo các hướng xác định. Hình chiếu của một hàm hai biến f(x,y) là tập hợp các tích phân đường. Hàm radon tính các tích phân đường từ nhiều điểm nguồn dọc theo các đường dẫn song song, gọi là các tia chiếu, theo một hướng xác định nào đó. Các tia chiếu này nằm cách nhau 1 pixel. Để biểu diễn toàn bộ ảnh, hàm radon sẽ lấy nhiều hình chiếu song song của ảnh từ các góc quay khác nhau bằng cách xoay các điểm nguồn quanh tâm của ảnh. Biến đổi Radon của f(x,y) tương ứng với góc quay Ѳ là tích phân đường của f dọc theo trục y’: RѲ (x’) Khi: = 16 Hình 11. Phương pháp biến đổi Radon Trong Matlab, biến đổi Radon được tính bằng hàm Radon có cú pháp như sau: [R,Xp] = radon(I,theta) 2.3 Một số định dạng ảnh bitmap thông dụng Ảnh thu được sau quá trình số hóa thường được lưu lại cho các quá trình xử lý ảnh tiếp theo hoặc truyền đi. Trong quá trình phát triền của kỹ thuật xử lý ảnh, tồn tại nhiều định dạng ảnh khác nhau từ đên trắng tới ảnh màu (BMP, JPEG, GIF,…). Tuy các định dạng này khác nhau nhưng chúng đều tuân theo một cấu trúc chung nhất. Nhìn chung, một tệp ảnh bất kỳ gồm 3 phần: - Phần đầu tệp (Header) - Phần dữ liệu nén (Data compression) - Bảng màu (Palette Color) Trong đó Phần đầu tệp là phần chưa thông tin về kiểu ảnh, kích thước, độ phân giải, số bít dùng cho 1 pixel, cách mã hóa và vị trí bảng màu. Phần dữ liệu nén: Lưu dữ liệu được nén bởi thuật toán khai bảo ở phần Header. Phần cuối Bảng màu. Phần này không nhất thiết phải có ví dụ như ảnh đen trắng. Nếu có, bảng màu cho biết số màu dùng trong ảnh và bảng màu được sử dụng để hiển thị màu của ảnh. Một số các đinh dạng khác nhau, cấu hình khác nhau, đặc trưng khác nhau mà các tham số này có thể khác nhau. 2.3.1 Định dạng ảnh GIF GIF (từ viết tắt của Graphics Interchange Format) là một kiểu định dạng ảnh bitmap ra đời năm 1987 bởi hãng CompuServe, sử dụng thuật toán nén không mất dữ liệu(thông tin) LZW. Ảnh GIF có tối đa 256 màu (8 bits), được đánh chỉ số index trong bảng màu, cho phép tạo màu nền trong suốt. 17 Hình 12. Ảnh định dạng GIF 2.3.1.1 Phương pháp nén LZW trong ảnh GIF Giải thuật nén LZW xây dựng một từ điển lưu các mẫu có tần suất xuất hiện cao trong ảnh. Từ điển là tập hợp những cặp từ vựng và nghĩa của nó. Trong đó, từ vựng sẽ là các từ mã được sắp xếp theo thứ tự nhất định. Nghĩa là một chuỗi con trong dữ liệu ảnh. Từ điển được xây dựng đồng thời với quá trình đọc dữ liệu. Sự có mặt của một chuỗi con trong từ điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phần dữ liệu đã đọc. Thuật toán liên tục “tra cứu” và cập nhật từ điển sau mỗi lần đọc một ký tự ở dữ liệu đầu vào. Do kích thước bộ nhớ không phải vô hạn và để đảm bảo tốc độ tìm kiếm, từ điển chỉ giới hạn 4096 ở phần tử dùng để lưu lớn nhất là 4096 giá trị của các từ mã. Như vậy độ dài lớn nhất của từ mã là 12 bits (4096 = 2^12). Hình 13. Sơ đồ thuật toán LZW 18 + 256 từ mã đầu tiên theo thứ tự từ 0…255 chữa các số nguyên từ 0…255. Đây là mã của 256 kí tự cơ bản trong bảng mã ASCII. + Từ mã thứ 256 chứa một mã đặc biệt là “mã xóa”. Mục đích việc dùng mã xóa nhằm khắc phục tình trạng số mẫu lặp trong ảnh lớn hơn 4096. Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một bộ từ điển gồm nhiều từ điển con. Cứ hết một mảnh ảnh người ta lại gửi một mã xóa để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng thời khởi tạo lại từ điển cho mảnh ảnh mới. Mã xóa có giá trị là 256. + Từ mã thứ 257 chứa mã kết thúc thông tin. Mã này có giá trị là 257. Như chúng ta đã biết, một file ảnh GIF có thể chứa nhiểu ảnh. Mỗi một ảnh sẽ được mã hóa riêng. Chương trình giải mã sẽ lặp đi lặp lại thao tác giải mã từng ảnh cho đến khi gặp mã kết thúc thông tin thì dừng lại. + Các từ mã còn lại (từ 258 đến 4095) chứa các mẫu thương lặp lại trong ảnh. 512 phần tử đầu tiên của từ điển biểu diễn bằng 9 bit. Các từ mã từ 512 đến 1023 biểu diễn bởi 10 bit, từ 1024 đến 2047 biểu diễn bởi 11 bit và từ 2048 đến 4095 biểu diễn bởi 12 bit. 2.3.1.2 Đánh giá định dạng ảnh GIF GIF là một tập tin màu 8-bit, có nghĩa là hình ảnh mà tập tin cho ra bị giới hạn bởi 1 bảng gồm 256 màu sắc. Có 2 điều đặc biệt về định dạng GIF đó là tập tin có khả năng lưu lại màu trong suốt và hỗ trợ hình ảnh động. Tập tin GIF dùng nén dữ liệu bảo toàn trong đó kích thước tập tin có thể được giảm mà không làm chất lượng hình ảnh kém đi (cho những hình ảnh có ít hơn 256 màu). Số lượng tối đa 256 màu làm cho định dạng này không phù hợp cho các hình chụp (thường có nhiều màu sắc), tuy nhiên các kiểu nén dữ liệu bảo toàn cho hình chụp nhiều màu cũng có kích thước quá lớn đối với truyền dữ liệu trên mạng hiện nay. So với định dạng JPEG là dạng nén dữ liệu thất thoát có thể được dùng cho các ảnh chụp, nhưng lại làm giảm chất lượng cho các bức vẽ ít màu, tạo nên những chỗ nhòe thay cho các đường sắc nét, đồng thời độ nén cũng thấp cho các hình vẽ ít màu. Như vậy, GIF thường được dùng cho sơ đồ, hình vẽ nút bấm và các hình ít màu, còn JPEG được dùng cho ảnh chụp. Ưu điểm: • • • • • Được phổ biến rộng rãi nhất Hỗ trợ tạo mức hiệu ứng nền trong suốt transparency Có khả năng tạo chỉ số trong bảng màu Nén không mất dữ liệu (thông tin) Thích hợp cho các ảnh có số màu hiển thị không quá nhiều như ảnh đen trắng, ảnh có từng vùng màu đơn như truyện tranh, đường kẻ nghệ thuật. Nhược điểm: • • Số màu tối đa sử dụng là 256 màu Không thể thay đổi, điều khiển được tỷ lệ nén 19 • Vì số màu được dùng hạn chế như thế nên không phù hợp với ảnh chất lượng cao, ảnh nhiều màu đa dạng trong tự nhiên 2.3.2 Định dạng ảnh BMP Định nghĩa: BMP là một định dạng ảnh chuẩn bitmap trong môi trường Microsoft Windows. Ảnh được lưu có chỉ số hay không chỉ số các dữ liệu điểm ảnh RGB (tính theo pixel) với độ lớn (kích thước 1, 4, 8, hay 24 bit) một cách có hiệu quả. Dữ liệu lưu có thể không nén hay nén theo thuật toán nén dữ liệu 4-8 bit RLE. BMP là sự lựa chọn tốt nhất đối với các định dạng ảnh bitmap đơn giản có hỗ trợ phạm vi dữ liệu điểm ảnh RGB rộng. Trong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng Anh khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến. Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap). Các thuộc tính tiêu biểu của một tập tin ảnh BMP (cũng như file ảnh nói chung) là • Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP nbit có màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu). Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất. • Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel). • Chiều rộng của ảnh (width), cho bởi điểm ảnh. Cấu trúc tập tin ảnh BMP bao gồm 4 phần • Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap. • Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị ảnh. • Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ được sử dụng trong ảnh. • Bitmap Data: lưu dữ liệu ảnh. Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ảnh thường không được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin - một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh. Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với các ảnh được nén (chẳng hạn GIF, JPEG hay PNG). Quá trình nén trong BMP Bitmap là một chuỗi đơn giản của các điểm ảnh xếp chồng lên nhau. Tuy nhiên, cùng một hình ảnh được lưu trong định dạng GIF hoặc JPEG sử dụng ít byte để lưu trữ cho các tập tin. Bitmap có thể được nén đến một điểm. Quá trình này được gọi là mã hóa Run Length Encoding. RLE mã hóa tất cả các điểm cùng một màu sắc được kết hợp thành một điểm ảnh. Một sự khác biệt là Bitmap thông thường có thể chấp nhận 16 triệu màu sắc khác nhau cho mỗi điểm ảnh. Tiết kiệm cùng một hình ảnh trong mã hóa loạt dài giảm các bit-perpixel xuống 8. Giảm mức độ của màu sắc trong không nhiều hơn 256. 20 2.3.3 Định dạng ảnh JPEG Định nghĩa: JPEG viết tắt của Joint Photographic Experts Group, một tổ chức tạo ra định dạng ảnh đồ họa. JPEG sử dụng thuật toán nén mất thông tin. Ảnh JPEG có tối đa 16 triệu màu (24-bit), cung cấp thông tin định rõ tỷ lệ, mức độ nén. JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần. Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu. Chất lượng ảnh bị suy giảm sau khi giải nén. Sự suy giảm này tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin này là có thể chấp nhận được và việc loại bỏ những thông tin không cần thiết được dựa trên những nghiên cứu về hệ nhãn thị của mắt người. Phần mở rộng của các file JPEG thường có dạng .jpeg, .jfif, .jpg, .JPG, hay .JPE. dạng .jpg là dạng được dùng phổ biến nhất. Hiện nay dạng nén ảnh JPEG rất được phổ biến trong ĐTDD cũng như những trang thiết bị lưu giữ có dung lượng nhỏ. Mức độ nhạy cảm của mắt người: Trong không gian màu YUV, nhãn thị của con người rất nhạy cảm với thành phần Y và kém nhạy cảm với hai loại U và V. Phương pháp nén JPEG đã nắm bắt phát hiện này để tách những thông tin thừa của ảnh. Hệ thống nén thành phần Y của ảnh với mức độ suy giảm ít hơn so với U, V, bởi người ta ít nhận thấy sự thay đổi của U và V so với Y. Sự khác biệt giữa nén 1% và 50% không phải là quá xấu, nhưng sự sụt giảm byte là ấn tượng. Các con số tôi cho thấy một số lượng lưu trữ, số lượng không gian ổ đĩa cứng hình ảnh chiếm. Có lẽ ta đã phỏng đoán rằng 50% có nghĩa là 50% của hình ảnh được bao gồm trong thuật toán nén. Nếu không đặt một hình ảnh nén 50% bên cạnh một hình ảnh trùng lặp chính xác ở nén 1%, thì có vẻ khá tốt. Nhưng những gì về hình ảnh đó nén 99%? Có vẻ khủng khiếp. Nhìn vào nó một lần nữa. Xem làm thế nào nó được thực hiện của các khối? Đó là những gì có nghĩa là bởi lossy. Bytes bị mất tại các chi phí của các chi tiết. Ta có thể thấy nơi mà các thuật toán nén được tìm thấy nhiều nhóm pixel rằng tất cả các xuất hiện để được gần gũi trong màu sắc và chỉ cần nhóm lại tất cả chúng với nhau như một. 21 Hình 14. Khả năng nén của định dạng JPEG Mã hóa Công đoạn chính là chia nhỏ bức ảnh thành nhiều vùng nhỏ (thông thường là những vùng 8x8 pixel) rồi sử dụng biến đổi cosin rời rạc để biến đổi những vùng thể hiện này thành dạng ma trận có 64 hệ số thể hiện "thực trạng" các pixel. Điều quan trọng là ở đây hệ số đầu tiên có khả năng thể hiện "thực trạng" cao nhất, khả năng đó giảm rất nhanh với các hệ số khác. Nói cách khác thì lượng thông tin của 64 pixels tập trung chủ yếu ở một số hệ số ma trận theo biến đổi trên. Trong giai đoạn này có sự mất mát thông tin, bởi không có biến đổi ngược chính xác. Nhưng lượng thông tin bị mất này chưa đáng kể so với giai đoạn tiếp theo. Ma trận nhận được sau biến đổi cosin rời rạc được lược bớt sự khác nhau giữa các hệ số. Đây chính là lúc mất nhiều thông tin vì người ta sẽ vứt bỏ những thay đổi nhỏ của các hệ số. Như thế khi bung ảnh đã nén ta sẽ có được những tham số khác của các pixel. Các biến đổi trên áp dụng cho thành phần U và V của ảnh với mức độ cao hơn so với Y. Sau đó thì áp dụng phương pháp mã hóa của Gernot Hoffman: phân tích dãy số, các phần tử lặp lại nhiều được mã hóa bằng ký hiệu ngắn (marker). Khi bung ảnh người ta chỉ việc làm lại các bước trên theo quá trình ngược lại cùng với các biến đổi ngược. Nhược điểm lớn nhất là chất lượng ảnh đã bị nén mất đi (lossy), một số đường bao giữa các khối màu sẽ xuất hiện điểm mờ, và các vùng sẽ mất đi sự rõ nét. Và giống như dạng mp3, JPEG sẽ không thể phục hồi giống như hình ảnh ban đầu dù dung lượng được tăng lên giống dung lượng ảnh thật. Các ảnh JPEG không thể làm trong suốt hoặc chuyển động. 2.3.3.1 Quá trình biến đổi DCT trong định dạng JPEG Ta có quá trình biến đổi DCT và mã hóa dữ liều theo sơ đồ sau: 22 Hình 15. Quá trình biến đổi DCT và DCT ngược Ví dụ Dưới đây là ví dụ về quá trình biến đổi DCT và quá trình biến đổi DCT ngược, khôi phục lại ảnh gốc của một bức ảnh 8x8 như hình dưới: 23 Hình 16. Ví dụ biến đổi DCT và DCT ngược khôi phục lại ảnh Code mô phỏng DCT trong matlab T = dctmtx(8); dct = @(block_struct) T * block_struct.data * T'; B = blockproc(I,[8 8],dct); mask = [1 1 1 1 0 0 0 0 11100000 11000000 10000000 00000000 00000000 00000000 0 0 0 0 0 0 0 0]; B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data); invdct = @(block_struct) T' * block_struct.data * T; I2 = blockproc(B2,[8 8],invdct); imshow(I), figure, imshow(I2) 2.3.3.2 Đánh giá ảnh nén bằng chuẩn JPEG Ưu điểm: • • • • • Có nhiều tỷ lệ nén mất dữ liệu khác nhau Có thể nén với tỷ lệ nén rất cao Cung cấp 24-bit màu (16 triệu màu) Định dạng tốt nhất đối với các ảnh cần nhiều màu sắc tự nhiên (màu liên tiếp nhau trong bảng màu) như ảnh chụp phong cảnh, ảnh và các minh hoạ trên sách báo, ảnh 3 chiều. Có thể tải từng phần ảnh trên mạng vào từng thời điểm khác nhau (quá trình "progressive JPEGs") Nhược điểm: • • Không thể đánh chỉ số màu trong bảng màu Không hỗ trợ tạo ảnh nền trong suốt 24 • • Nén mất dữ liệu Không phải mọi máy tính đề hiển thị tốt, cố định 24-bit màu 2.3.4 Định dạng ảnh TIF, TIFF Định nghĩa: Tiff (Tag Image File Format) Loại file ảnh bitmap này sử dụng thuật toán nén không mất dữ liệu và chúng ta có thể ghi lại dưới các định dạng file khác nhau, TIF và TIFF được sử dụng rộng rãi. Photoshop cho phép chuyển đổi TIF sang định dạng ảnh vector và có thể lưu tới 4 kênh màu. Với ảnh đồ hoạ trên web, chúng ta không thể thực hiện được 3 kênh màu sử dụng trong chế độ màu RGB (độ sâu màu là 24 bit). Hình 17. Ví dụ về ảnh TIF Đặc điểm:  Không sử dụng nén: 8bit, 12bit, 14bit, 16bit, 24bit…  Nếu nén có thể dùng: Lossless = LZW; Lossy JPEG, JBIG & JPEG2000  Độ phân dải: (khoảng 100-10,000 ppi) , rất lớn  Giới hạn cỡ ảnh: 4G  Giới hạn kiến trúc: 32bit  Hỗ trợ thuộc tính ICC  Hỗ trợ Metadata (EXIF) 2.3.4.1 Đánh giá ảnh lưu định dạng TIF,TIFF Ưu điểm: Đây là định dạng tập tin “không làm mất dữ liệu” của hình ảnh trong quá trình lưu trữ hay nén file. Uy tín trong việc bảo lưu chất lượng hình ảnh giúp TIFF là định dạng mẫu mực trong việc lưu trữ tư liệu hình ảnh. Nhược điểm: Khuyết điểm duy nhất của file TIFF chính là dung lượng cồng kềnh. Do định dạng tập tin này lưu trữ toàn bộ thông tin của các pixel trong dữ liệu nén chung của bức ảnh nên dung lượng của nó luôn lớn hơn rất nhiều nếu so với file JPEG. Điều này khiến việc lưu trữ file TIFF luôn tốn nhiều dung lượng bộ nhớ. Với những ai quan tâm đến chất lượng hình ảnh và sợ file bị hỏng, TIFF luôn là lựa chọn hàng đầu về độ tin cậy. Nhưng luôn nhớ rằng file TIFF nén cũng không giảm dung lượng bao nhiêu so với file TIFF không nén. 25 2.3.5 Định dạng ảnh PNG PNG (Portable Network Graphics) là một định dạng ảnh đồ hoạ bitmap được phát triển thành định dạng ảnh chuẩn bởi W3C. PNG cho phép chúng ta sử dụng tới 256 chỉ số màu, hỗ trợ 16~256 triệu màu (24- 48 bit màu), hỗ trợ việc tạo và lưu alpha kênh, tạo ảnh nền trong suốt, đặc trưng riêng của ảnh PNG là thuật toán nén không mất dữ liệu (thông tin), tốt hơn 10 ~ 30 % so với ảnh GIF. Hình 18. Cấu trúc lớp màu trong định dạng PNG 26 Hình 19. Ánh xạ bản đồ màu và kênh Alpha Hình 20. Một số loại điểm ảnh trong PNG 1. Màu chân thực với kênh alpha: mỗi điểm ảnh bao gồm bốn mẫu: đỏ, xanh lá cây, xanh da trời, và alpha. 2. Ảnh xám với kênh alpha: mỗi điểm ảnh bao gồm hai mẫu: màu xám và alpha. 3. Màu chân thực: mỗi điểm ảnh bao gồm ba mẫu: đỏ, xanh lá cây, và màu xanh. Kênh alpha có thể được đại diện bởi một giá trị pixel duy nhất. Pixel phù hợp là hoàn toàn nhìn thấy, và tất cả những pixel khác là hoàn toàn ẩn. Nếu các kênh alpha không được đại diện bằng cách này, tất cả các điểm ảnh là hoàn toàn ẩn. 4. Ảnh xám: mỗi điểm ảnh bao gồm một mẫu duy nhất: màu xám. Kênh alpha có thể được đại diện bởi một giá trị pixel duy nhất như trong trường hợp trước. Nếu các kênh alpha không được đại diện bằng cách này, tất cả các điểm ảnh là hoàn toàn ẩn. 5. Chỉ số màu: mỗi điểm ảnh bao gồm một chỉ số vào một bảng (một bảng liên quan đến các giá trị alpha, nếu có). Các định dạng của mỗi điểm ảnh phụ thuộc vào loại hình ảnh PNG và độ sâu bit. Đối với các loại hình ảnh PNG khác hơn được lập chỉ mục màu sắc, độ sâu bit xác định số bit cho mỗi mẫu, không phải là tổng số bit cho mỗi điểm ảnh. Đối với các hình ảnh được lập chỉ mục màu sắc, độ sâu bit quy định cụ thể số lượng các bit trong mỗi chỉ số bảng màu, độ sâu mẫu của các màu sắc trong bảng màu hoặc bảng alpha. Trong các điểm ảnh mẫu xuất hiện theo thứ tự định trước, tùy thuộc vào loại hình ảnh PNG. 27 2.3.5.1 Phương pháp mã hóa Huffman PNG sử dụng nén LZW hoặc mã hóa theo phương pháp Huffman nên hiệu quả hơn nén mất dữ liệu. Nguyên tắc Phương pháp mã hóa Huffman là phương pháp dựa vào mô hình thông kê. Dựa vào dữ liệu gốc, người ta tính tần suất xuất hiện của các ký tự. Việc tính tần suất được thực hiện bởi cách duyệt tuần tựtệp gốc từ đầu đến cuối. Việc xửlý ở đây tính theo bit. Trong phương pháp này người ta gán cho các ký tựcó tần suất cao một từmã ngắn, các ký tựcó tần suất thấp từmã dài. Nói một cách khác, các ký tựcó tần suất càng cao được gán mã càng ngắn và ngược lại. Rõ ràng với cách thức này, ta đã làm giảm chiều dài trung bình của từmã hóa bằng cách dùng chiều dài biến đổi. Tuy nhiên, trong một sốtình huống khi tần suất là rất thấp, ta có thểkhông được lợi một chút nào, thậm chí còn bịthiệt một ít bit. Thuật toán Thuật toán bao gồm 2 bước chính: - Giai đoạn thứ nhất: tính tần suất của các ký tự trong dữ liệu gốc: duyệt tệp gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp sau đó là sắp xếp lại bảng mã theo thứ tự tần suất giảm dần. - Giai đoạn thứ hai: mã hóa: duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có tần suất xuất hiện thấp nhất thành một phần tử duy nhất. Phần tử này có tần suất bằng tổng 2 tần suất thành phần. Tiến hành cập nhật lại bảng và đương nhiên loại bỏ 2 phần tử đã xét. Quá trình được lặp lại cho đến khi bảng chỉ có một phần tử. Quá trình này gọi là quá trình tạo cây mã Huffman vì việc tập hợp được tiến hành nhờ một cây nhị phân 2 nhánh. Phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Với cách tạo cây này, tất cả các bit dữ liệu/ký tự là nút lá, các nút trong là các nút tổng hợp. Sau khi cây đã tạo xong, người ta tiến hành gán mã cho các nút lá. Việc mã hóa rất đơn giản: mỗi lần xuống bên phải ta thêm 1 bit “1” vào từ mã, mỗi lần xuống bên trái ta thêm một bit “0”. Tất nhiên có thể làm ngược lại, chỉ có giá trên mã thay đổi còn tổng chiều dài là không đổi. Cũng chính do lý do này mà cây có tên gọi là cây mã Huffman như trên đã gọi. Quá trình giải nén tiến hành theo chiều ngược lại khá đơn giản. Người ta cũng phải dựa vào bảng mã tạo ra trong giai đoạn nén (bảng này được giữ lại trong cấu trúc của tệp nén cùng với dữ liệu nén). Thí dụ, với một tệp dữ liệu mà tần suất các ký tự cho bởi. Bảng 1. Tần suất và sác xuất xuất hiện một số ký tự Ký tự Tần suất Xác suât Ký tự “0” 1532 0.2770 “7” “1” 152 0.0275 “8” “2” 323 0.0585 “9” “3” 112 0.0746 “+” “4” 226 0.0409 “-” “5” 385 0.0696 “,” “6” 602 0.1088 “” Tần suất 92 112 87 220 315 536 535 Xác suất 0.0167 0.0203 0.0158 0.0396 0.0569 0.0969 0.0967 Lưu ý rằng, trong phương pháp Huffman, mã của ký tự là duy nhất và không mã nào là 28 phần bắt đầu của mã khác. Vì vậy, khi đọc tệp nén từng bit từ đầu đến cuối ta có thể duyệt cây mã cho đến một lá, tức là ký tự đã được giải nén. Bảng 2. từ mã gán cho các kí tự bởi mã Huffman “0” 10 “-” “6” 010 “4” “.” 001 “+” “” 000 “1” “3” 1110 “8” “5” 1100 “7” “2” 0111 “9” 0110 11110 11011 111111 111110 110101 110100 2.3.5.2 Đánh giá định dạng PNG PNG là dạng hình ảnh sử dụng phương pháp nén dữ liệu mới mà không làm mất đi dữ liệu gốc. PNG được tạo ra nhằm cải thiện và thay thế định dạng ảnh GIF. PNG là định dạng tập tin tuyệt vời cho các ảnh số trên mạng Internet bởi vì PNG hỗ trợ màu trong suốt trong tất cả các trình duyệt web với những tính năng mà GIF không có. PNG hỗ trợ màu 8-bit giống như GIF, đồng thời cũng hỗ trợ màu 24-bit RGB như JPG. Khi bạn nén một bức ảnh bằng định dạng PNG, bức ảnh đó sẽ không hề bị giảm chất lượng. Chính vì thế dung lượng các bức ảnh PNG rất lớn. Nhược điểm của ảnh dạng PNG đó là không được hỗ trợ trên các trình duyệt web cũ, không phổ biến nhiều bằng JPG. Hình 21. Ảnh 24bit màu định dạng PNG Ưu điểm: • Cho phép tạo 256 chỉ số màu • Hỗ trợ 24 ~ 48 bit màu • Hỗ trợ việc tạo, lưu alpha channel và tạo nền trong suốt • Đặc biệt tỷ lệ nén không mất dữ liệu tốt hơn GIF từ 10 ~ 30 % 29 Nhược điểm: • Không phải là chuẩn được sử dụng rộng rãi, các trình duyệt Web chưa hoàn toàn hỗ trợ định dạng file này. 2.4 So sánh tổng quan giữa các định dạng ảnh Bảng 3: So sánh một số định dạng file ảnh thông thường Loại định dạng Phần mở rộng Độ sâu bit Phương pháp nén Loại màu TIFF 6.0 GIF 89a JPEG JP2-JPX/ JPEG 2000 PNG 1.2 .tif, .tiff .gif .jpeg, jpg, .jp2, .jpx,.j2c .png 1-bit; 4- or 8-bit 8-bit ảnh Hỗ trợ lên tới 1-48bit màu, 14 ảnh xám hoặc ảnh 1-8 bit xám, 24bit 2 kênh, mỗi cái 24/48bit palette lên tới 64 ảnh màu ảnh màu 1-38 bit màu truecolor bit màu -Không nén - Lossless: LZW... Lossless: - Lossy: JPEG LZW RGB YCbCr, CMYK Lossy: JPEG Palette YCbCr - Không nén - Lossless: -Lossless/Lossy: Deflate,LZW, Wavelet Huffman… Palette, YCbCr, RGB, sRGB Palette, sRGB, ICC (bản đồ màu) 2.5 Một số thuật toán chuyển đổi định dạng ảnh. 2.5.1 Chuyển đổi định dạng từ ảnh bitmap sang bitmap Chuyển đổi một định dạng bitmap tới một định dạng bitmap thường rất đơn giản. Tất cả các hình ảnh bitmap bao gồm các điểm ảnh, và cuối cùng tất cả các dữ liệu bitmap được chuyển đổi sang định dạng bitmap khác tại một thời điểm. Tiêu đề Bitmap và các dữ liệu chứa trong chúng có thể khác nhau đáng kể, nhưng các dữ liệu chứa trong chúng có thể được thêm vào hoặc loại bỏ theo quyết định của phần mềm chuyển đổi để làm cho việc chuyển đổi tốt nhất có thể. Thông thường, một số sắp xếp lại các dữ liệu màu sắc là cần thiết. Điều này có thể mang hình thức tách dữ liệu pixel thành dữ liệu bản đồ màu, hoặc bổ sung, loại bỏ bản đồ màu. Nó thậm chí có thể dẫn đến chuyển đổi sang những mô hình màu khác. Việc không thành công khi chuyển đổi bitmap sang bitmap xảy ra thường xuyên nhất là khi chuyển một tập tin được viết trong một định dạng hỗ trợ các dữ liệu pixel sâu để chuyển sang một định dạng ít màu sắc, ví dụ, nó chỉ hỗ trợ bảng màu. Điều này có thể xảy ra khi bạn đang chuyển đổi giữa các định dạng hỗ trợ 24-bit dữ liệu và một định dạng hỗ trợ chỉ có 8-bit dữ liệu. Định dạng bảng màu có thể không hỗ trợ lưu trữ đủ dữ liệu cần thiết để sản xuất một bản vẽ chính xác của hình ảnh. Thông thường, một số hoạt động xử lý hình ảnh (quantization) là cần thiết để nâng cao chất lượng của hình ảnh được chuyển. Hoạt động của loại này nhất thiết sẽ làm cho hình ảnh chuyển đổi xuất hiện khác với bản gốc, và do đó về mặt kỹ thuật hình ảnh sẽ không được bảo quản trong quá trình chuyển đổi. 30 Vấn đề chính khác xảy đến khi hình ảnh được chuyển phải được thực hiện nhỏ hơn hoặc lớn hơn so với bản gốc. Nếu hình ảnh chuyển đổi là nhỏ hơn so với các thông tin ban đầu trong hình ảnh ban đầu thì phải được vứt bỏ. Mặc dù các chiến lược xử lý hình ảnh có thể được sử dụng để cải thiện chất lượng hình ảnh, một số thông tin được loại bỏ khi các tập tin ban đầu được thu nhỏ lại. Nếu hình ảnh chuyển đổi là lớn hơn so với bản gốc, tuy nhiên, thông tin phải được tạo ra để điền vào các không gian xuất hiện giữa các pixel liền kề trước tức là hình ảnh ban đầu được mở rộng. Không có cách nào hoàn toàn thỏa đáng để làm điều này và các quá trình hiện đang được sử dụng thường chỉ là tương đối. 2.5.1.1 Chuyển đổi định dạng JPG sang PNG B1. Đọc ảnh JPG vào trong matlab A=imread (‘đường dẫn ảnh.định dạng’); Vd: A=imread (‘C:/Users/Trung_tks/Desktop/MoPhong/Avatar.jpg’); Có thể hiển thị ảnh vừa đọc bằng cách Imshow (A); %Anh vừa nhập sẽ hiển thị trên matlab Hình 22. Đọc file JPEG Xem thông số của ảnh bằng hàm imfinfo (); B2. Lưu ảnh đã đọc dưới định dạng PNG A=imwrite (A, “đường dẫn file ảnh.png”,png); VD: A=imwrite (A,“C:/Users/Trung_tks/Desktop/MoPhong/Avatar.png”,“png”); Xem các thông số cơ bản của ảnh bằng cách. Info = imfinfo (“C:/Users/Trung_tks/Desktop/MoPhong/Avatar.png”); Hiển thị ảnh vừa chuyển: Imshow(A) 31 Hình 23. Xuất file PNG Info.BitDepth: Hiển thị độ sâu bit (24bit) Info.Format: Hiển thị định dạng file ảnh (PNG) Info.ColorType: Hiển thị loại màu file ảnh. (Truecolor) Info.Width: Hiển thị chiều rộng khung ảnh (720) Info.Height: Hiển thị chiều cao khung ảnh. (540) Về chất lượng ảnh thì cả 2 đều hỗ trợ 24bit màu nên không có sự khác biệt nếu nhìn bằng mắt thường. Chỉ khác biệt ở dung lượng. File gốc (.jpg) dung lượng lưu trữ: 42.6kB còn file chuyển .PNG có dung lượng tới 386kB. Rõ ràng là lớn hơn rất nhiều lần so với ảnh gốc. 2.5.2 Chuyển đổi định dạng từ ảnh vector sang vector Chuyển đổi giữa các định dạng vector là có thể và đôi khi khá dễ dàng. Hai vấn đề nghiêm trọng có thể xảy ra. Đầu tiên là do sự khác biệt về số lượng và kiểu của các đối tượng có sẵn trong các định dạng vector khác nhau. Một số định dạng, ví dụ, cung cấp hỗ trợ cho chỉ có một yếu tố hình ảnh đơn giản, chẳng hạn như vòng tròn và hình chữ nhật. Định dạng phong phú hơn cũng có thể cung cấp hỗ trợ cho nhiều yếu tố bổ sung phức tạp, chẳng hạn như mô hình đầy, thả bóng, phông chữ văn bản, b-spline, và các đường cong Bezier. Cố gắng để chuyển đổi một tập tin được viết trong một định dạng phức tạp phong phú trong các yếu tố để một định dạng đơn giản sẽ cho kết quả trong một xấp xỉ của hình ảnh ban đầu. Vấn đề thứ hai xuất phát từ thực tế là có mỗi định dạng vector có giải thích riêng của mình về các phép đo và sự xuất hiện của các yếu tố hình ảnh và nguyên thủy. Hiếm khi nào hai định dạng đồng ý một cách chính xác vào vị trí và sự xuất hiện của các yếu tố hình ảnh thậm chí đơn giản. 2.5.3 Chuyển đổi định dạng từ ảnh vecto sang bitmap Chuyển đổi các tập tin định dạng vector sang các tập tin định dạng bitmap nói chung là khá dễ dàng. Một hình ảnh vector có thể được chuyển vào một bitmap chỉ đơn giản bằng 32 cách chia nó ra thành pixels thành phần và sau đó viết những điểm ảnh vào một mảng trong bộ nhớ trong tương đương với bộ nhớ của một màu sắc tương phản. Mảng sau đó có thể được lưu trong một định dạng tập tin bitmap. Tuy nhiên, nó được lưu trữ trong một tập tin bitmap như là một loạt các điểm ảnh màu chứ không phải là dữ liệu toán học mô tả vị trí của các đường lên hình ảnh. Chất lượng cuối cùng của hình ảnh bitmap kết quả sẽ phụ thuộc vào độ phân giải của bitmap được thực hiện và sự phức tạp (màu sắc, điểm ảnh chiều sâu, và các tính năng hình ảnh) của hình ảnh vector ban đầu. Vấn đề phổ biến nhất xảy ra với loại hình chuyển đổi này là răng cưa, một phần là do độ phân giải tương đối thấp của các bitmap đầu ra. 2.5.4 Chuyển đổi định dạng từ ảnh bitmap sang vecto Chuyển đổi các tập tin định dạng bitmap sang các tập tin định dạng vector thường là khó khăn nhất và hiếm khi đạt được bất kỳ loại kết quả nào có thể sử dụng. Điều này là do thực tế là thuật toán xử lý ảnh phức tạp và chẩn đoán là cần thiết để tìm tất cả các dòng và các cạnh trong hình ảnh bitmap. Một khi được tìm thấy, họ phải được công nhận và chuyển đổi sang vector với các yếu tố tương đương của họ và mỗi bước chuyển là dễ bị lỗi. Hình ảnh bitmap đơn giản có thể được xấp xỉ như hình ảnh vector, thường là các đường kẻ màu đen và trắng, nhưng loại hình ảnh nhiếp ảnh phức tạp hơn là gần như không thể tái tạo chính xác. Một vấn đề khác vốn có trong việc chuyển đổi các tập tin định dạng bitmap sang vector là màu sắc. Mặc dù hầu hết các tập tin bitmap kết hợp nhiều màu sắc, nhưng định dạng vector hiếm khi cung cấp hỗ trợ nhiều. Việc chuyển đổi một tập tin bitmap gốc vào một tập tin vector có thể dẫn đến một sự mất mát của màu sắc trong hình ảnh được chuyển. Tái tạo vector gần với các hình ảnh bitmap thông thường là không thể, trừ khi dữ liệu bitmap là rất đơn giản. 33 Chương III. Mô phỏng kết quả trên matlab 3.1 Các hàm xử lý ảnh sử dụng matlab 3.1.1 Đọc và ghi dữ liệu ảnh  Hàm imread đọc các file ảnh với bất kỳ các định dạng ảnh đã biết hiện nay và lưu lại dưới dạng một ma trận biểu diễn ảnh trong Matlab. Cú pháp: A=imread(filename,fmt)  Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh dưới một trong các định dạng đã biết. Cú pháp: imwrite(A,filename,fmt)  Hàm imfinfo dùng để xem các thông số của một file ảnh nào đó. Cú pháp: imfinfo(filename,fmt) Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemoddate, filesize, format, formatversion, width, height, bitdepth, colortype. 3.1.2 Chuyển đổi giữa các kiểu dữ liệu, kiểu ảnh a. Chuyển đổi giữa các kiểu dữ liệu ảnh Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao gồm: im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện chuyển kiểu giữa các dữ liệu ảnh cần lưu ý một số điều sau:  Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng it bit hơn thì một số thông tin chi tiết về bức ảnh ban đầu sẽ bị mất.  Không phải lúc nào cũng có thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh indexed, vì các giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ không phải là giá trị màu, do đó không thể lượng tử hóa được. b. Chuyển đổi giữa các kiểu ảnh  Dither: dither(RGB,map) dither(I)  Gray2ind: [X, Map] = gray2ind(I, N) [X, Map] = gray2ind(BW, N)  Grayslice: x=grayslice(I, N) x=grayslice(I, V)  Im2bw: bw=im2bw(I, level) bw=im2bw(x,map, level) bw=im2bw(rgb, level)  Ind2gray: i=ind2gray(x, map)  Ind2rgb: rgb=ind2rgb(x, map)  Mat2gray: i=mat2gray(a, [amin amax])  Rgb2gray: i=rgb2gray(rgb)  Rgb2ind: [x, map]=rgb2ind(rgb, n) x=rgb2ind(rgb, map) [x, map]=rgb2ind(rgb, tol) 34 3.1.3 Các phép toán cơ bản đối với dữ liệu ảnh Các phép toán số học cơ bản trên các dữ liệu ảnh bao gồm các phép cộng, trừ, nhân và chia. Tuy nhiên, Matlab chỉ hỗ trợ các phép toán này trên kiểu double nên cần thực hiện chuyển đổi kiểu trước khi thực hiện. Để giảm bớt thao tác này, trong matlab có cung cấp các hàm thực hiện các phép toán số học trên ảnh mà có thể chấp nhận bất kỳ kiểu dữ liệu ảnh nào và trả về kết quả thuộc cùng kiểu với các toán hạng. Các hàm này cũng xử lý các dữ liệu tràn một cách tự động.  Imabsdiff: z=imabsdiff(x,y)  Imadd: z=imadd(x,y,out_class)  Imcomplement: im2=imcomplement(im)  Imdivide: z=imdivide(x,y)  Imlincomb: z=imlincomb(k1,a1,k2,a2,…,kn,an,k,out_class)  Immultiply: z=immultiply(x,y)  Imsubstract: z=imsubstract(x,y) 3.1.4 Các hàm hiển thị trong matlab     Matlab cung cấp hai hàm hiển thị cơ bản là image và imagesc. Ngoài ra trong Matlab cũng có hai hàm hiển thị ảnh khác, đó là imview và imshow. Hàm image(X,Y,C) hiển thị hình ảnh biểu diễn bởi ma trận C kích thước M x N lên trục tọa độ hiện hành. X, Y là các vector xác định vị trí các pixel C(1,1) và C(M,N) trong hệ trục hiện hành. Hàm imagesc có chức năng tương tự như hàm image, ngoại trừ việc dữ liệu ảnh sẽ được co giãn để sử dụng toàn bộ bản đồ màu hiện hành. Hàm imview cho phép hiển thị hình ảnh trên một cửa sổ riêng, nền Java, gọi là image Viewer. Image Viewer cung cấp các công cụ dò tìm và xác định các giá trị pixel một cách linh hoạt. Hàm imshow cũng tạo một đối tượng đồ họa thuộc loại image và hiển thị ảnh trên một figure. Hàm imshow sẽ tự động thiết lập các giá trị của các đối tượng image, axes và figure để thể hiện hình ảnh. 3.1.5 Các phép biến đổi hình học a. Phép nội suy Nội suy là quá trình ước lượng giá trị của một điểm nằm giữa hai pixel có giá trị đã biết. IPT cung cấp 3 phương pháp nội suy ảnh: nội suy theo các lân cận gần nhất, nội suy song tuyến tính và nội suy bicubic. Cả 3 phương pháp đểu thực hiện theo nguyên tắc chung: đểxác định giá trị của một pixel ảnh nội suy, ta tìm một điểm trong ảnh ban đầu tương ứng với pixel đó, sau đó giá trị của pixel ở ảnh mới sẽ được tính bằng trung bình có trọng số của một tập các pixel nào đó ở lân cận của điểm vừa xác định, trong đó trọng số c ủa các pixel phụ thuộc vào khoảng cách tới điểm này.  Phương pháp lân cận gần nhất (nearest neighbor): pixel mới sẽ được gán giá trị của pixel chứa điểm tương ứng của nó trong ảnh ban đầu  Phương pháp song tuyến tính (bilinear interpolation): pixel mới sẽ được gán là trung bình có trọng số của các pixel trong một lân cận kích thước 2 x 2.  Phương pháp bicubic, pixel mới sẽ được gán là trung bình có trọng số của các pixel trong một lân cận kích thước 4 x 4. 35 b. Thay đổi kích thước ảnh Hàm imresize cho phép người sử dụng thay đổi kích thước ảnh. Ngoài kích thước ảnh mới, người sử dụng còn có thể xác định phương pháp nội suy sẽ dùng và loại bộ lọc dùng để chống aliasing. Cú pháp: b=imresize(a,m, method):tạo ảnh gấp m lần ảnh a. b=imresize(a,[mrows mcols],method) b=imresize(a,[mrows mcols],method,N) b=imresize(a,[mrows mcols],method,h) 3.2 Mô phỏng kêt quả chuyển đổi giữa các định dạng ảnh bitmap 3.2.1 Guide và giao diện mô phỏng - Guide là giao diện bằng hình ảnh của chương trình. Guide bao gồm các nút nhấn, hộp liệt kê, thanh trượt, menu… chúng cung cấp cho người dùng sử dụng một môi trường làm việc thân thiện để họ tập trung vào các ứng dụng của chương trình hơn là đi tìm hiểu cách thức làm việc của chương trình đó.  Để mở công cụ tạo Gui : File -> New -> GUI  Khi lưu giao diện vừa tạo, Matlab sẽ tạo ra hai file có cùng tên nhưng khác phần mở rộng: - File có phần mở rộng .fig chứa nội dung của giao diện - File có phần mở rộng .m chứa những đoạn mã liên quan đến giao diện Hình 24. Tạo khung giao diện trong Guide  Khi thiết kế bất cứ thành phần nào của Guide ta cần thiết lập thuộc tính cho thành phần đó.  Để thiết lập các thuộc tính ta có thể chọn mục “ Property Inspector” trên thanh công cụ hoặc right-click vào đối tượng và chọn mục “Inspector Properties”  Hai thuộc tính quan trọng mà ta cần xác lập: “String Property” và “ Tag Property” - String property : dòng ký tự xuất hiện trên đối tượng. - Tag property : tên của đối tượng. 36  Khi click chuột vào 1 đối tượng, Matlab sẽ gọi hàm tương ứng với đối tượng đó. Tên của hàm chính là tên của đối tượng cộng với “_Callback” Hình 25. Các thuộc tính của đối tượng trong Guide 3.2.2 Một số hàm sử dụng trong Guide  Set : Thay đổi giá trị của các thuộc tính của một đối tượng giao diện Vd: set(handles.TextBox,‟String‟,str);  Get: Truy xuất giá trị của thuộc tính của một đối tượng giao diện Cd: get(handles.EditBox,‟String‟); Ngoài ra còn có các hàm như axes, guide, num2str(), str2num()… để chuyển đổi kiểu dữ liệu…. 3.2.3 Mô phỏng chuyển đổi ảnh JPG sang PNG và TIF Đối với nút Display % --- Executes on button press in Display. function Display_Callback(hObject, eventdata, handles) % hObject handle to Display (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) A=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg'); info=imfinfo('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg'); set(handles.Width,'string',info.Width); set(handles.Height,'string',info.Height); set(handles.BitDepth,'string',info.BitDepth); set(handles.ColorType,'string',info.ColorType); set(handles.Format,'string',info.Format); set(handles.FormatSignature,'string',info.FormatSignature); set(handles.Pic1,'string',imshow(A)); 37 Đối với nút PNG (chuyển ảnh sang PNG) % --- Executes on button press in PNG. function PNG_Callback(hObject, eventdata, handles) % hObject handle to PNG (see GCBO) B=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg'); imwrite (B,'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png','png'); inf=imfinfo ('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png') set(handles.Width,'string',inf.Width); set(handles.Height,'string',inf.Height); set(handles.BitDepth,'string',inf.BitDepth); set(handles.ColorType,'string',inf.ColorType); set(handles.Format,'string',inf.Format); set(handles.FormatSignature,'string',inf.FormatSignature); set(handles.Pic1,'string',imshow(B)); Đối với nút PNG (chuyển ảnh sang PNG) % --- Executes on button press in TIF. function TIF_Callback(hObject, eventdata, handles) C=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.jpg'); imwrite (C,'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif','tif'); info1=imfinfo ('C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif') set(handles.Width,'string',info1.Width); set(handles.Height,'string',info1.Height); set(handles.BitDepth,'string',info1.BitDepth); set(handles.ColorType,'string',info1.ColorType); set(handles.Format,'string',info1.Format); set(handles.FormatSignature,'string',info1.FormatSignature); set(handles.Pic1,'string',imshow(C)); 38 Hình 26. Ảnh chuyển sang định dạng .tif Kết quả: ảnh lưu định dạng TIF - Filename: 'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.tif' - FileSize: 1057984 % Dung lượng ~1MB - Format: 'tif' % Định dạng TIF - Width: 720 % Chiều rộng - Height: 540 % Chiều cao - BitDepth: 24 % Độ sâu bit màu - ColorType: 'truecolor' %Loại màu - BitsPerSample: [8 8 8] % Số bit trên 1 mẫu - Compression: 'PackBits' % Loại nén sử dụng - PhotometricInterpretation: 'RGB' - SamplesPerPixel: 3 % Số mẫu trên 1 Pixel - XResolution: 72 % Phân dải chiểu X - YResolution: 72 % Phân dải chiều Y - ResolutionUnit: 'Inch' % Bộ phân dải Ảnh lưu định dạng PNG - Filename: 'C:/Users/Trung_tks/Desktop/MoPhongMatlab/moe.png' - FileSize: 395311 % Dung lượng: ~386Kb - Format: 'png' % Định dạng PNG - Width: 720 - Height: 540 - BitDepth: 24 % 24bit màu - ColorType: 'truecolor' - FormatSignature: [137 80 78 71 13 10 26 10] Nhận xét kết quả Ảnh bitmap ban đầu là định dạng JPEG với 24bit màu có nén. Sau khi chuyển sang 2 định dạng là PNG và TIF, về cơ bản chất lượng và độ sau màu không khác biệt. Độ cảm nhận sắc nét về hình ảnh không có sự khác biết rõ rệt. Tuy nhiên dung lượng lưu trữ các file định dạng này khác nhau. Đối với JPEG là 44.6KB, trong khi PNG và TIF lần lượt là 368KB và 1MB. 39 Điều này nói lên rằng 2 định dạng PNG và TIF sử dụng phương thức nén không mất thông tin nên dung lượng lưu trữ lơn hơn nhiều so với ảnh lưu với định dạng JPEG. Thứ 2, chất lượng về cơ bản không khác nhau nhiều do đó có thể thấy được phương pháp nén sử dụng trong định dạng JPEG tỏ ra rất hiệu quả. Vừa k làm giảm chất lượng hình ảnh, vừa lưu trữ với dung lượng thấp hơn nhiều. Mặc dù xét về độ trung thực thì không bằng hai định dạng kia. 3.2.4 Mô phỏng quá trình biến đổi DCT trong định dạng file JPEG 3.2.4.1 Mô hình biến đổi DCT ảnh xám Ảnh con 8x8 Bảng lượng tử hóa Ảnh con 8x8 Ảnh Gốc Ảnh con 8x8 … Lượng tử hóa DCT Mã hóa Ảnh con 8x8 Ảnh nén Hình 27. Mô hình biến đổi DCT ảnh xám 40 3.2.4.2 Thiết kế giao diện và viết chương trình Hình 28. Giao diện mô phỏng Quá trình chọn ảnh function ChonAnh_Callback(hObject, eventdata, handles) % hObject handle to ChonAnh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg'); axes(handles.HT1); imshow(S); guidata(hObject, handles); Quá trình nén DCT function NenDCT_Callback(hObject, eventdata, handles) % hObject handle to NenDCT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg'); axes(handles.HT2); if size(S,3)==3 S=rgb2gray(S); end 41 I = im2double(S); T = dctmtx(8); B = blkproc(I,[8 8],'P1*x*P2',T,T'); mask = [1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2 = blkproc(B,[8 8],'P1.*x',mask); I2 = blkproc(B2,[8 8],'P1*x*P2',T',T); imshow(I2) handles.I2=I2; guidata(hObject, handles); Hiển thị Pixel ảnh gốc function PixelAnh_Callback(hObject, eventdata, handles) % hObject handle to PixelAnh (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg'); axes(handles.HT3); if size(S,3)==3 S=rgb2gray(S); end I=im2double(S); I1=imresize(I,[8 8]); himage=imshow(I1); hfigure=figure; hpanel=impixelregionpanel(hfigure,himage); Hiển thị Pixel ảnh nén sau khi biến đổi DCT function PixelDCT_Callback(hObject, eventdata, handles) % hObject handle to PixelDCT (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg'); axes(handles.HT4); if size(S,3)==3 S=rgb2gray(S); end I=im2double(S); I1=imresize(I,[8 8]); T=dct2(I1); himage=imshow(T); hfigure=figure; hpanel=impixelregionpanel(hfigure,himage); 42 So sánh giá trị từng Pixel ảnh gốc và ảnh đã biến đổi DCT (8x8) function KetQua_Callback(hObject, eventdata, handles) S=imread('C:/Users/Trung_tks/Desktop/MoPhongMatlab/Trung.jpg'); if size(S,3)==3 S=rgb2gray(S); end I=im2double(S); A=imresize(I,[8 8]); p=get(handles.TBHang,'string'); q=get(handles.TBCot,'string'); p=str2num(p); q=str2num(q); p=round(p); q=round(q); c=0; p1=0; q1=0; goc=0; if (p>0)&(q>0) if (p[...]... Web chưa hoàn toàn hỗ trợ định dạng file này 2.4 So sánh tổng quan giữa các định dạng ảnh Bảng 3: So sánh một số định dạng file ảnh thông thường Loại định dạng Phần mở rộng Độ sâu bit Phương pháp nén Loại màu TIFF 6.0 GIF 89a JPEG JP2-JPX/ JPEG 2000 PNG 1.2 tif, tiff gif jpeg, jpg, jp2, jpx,.j2c png 1-bit; 4- or 8-bit 8-bit ảnh Hỗ trợ lên tới 1-48bit màu, 14 ảnh xám hoặc ảnh 1-8 bit xám, 24bit 2 kênh,... tạo ảnh nền trong suốt 24 • • Nén mất dữ liệu Không phải mọi máy tính đề hiển thị tốt, cố định 24-bit màu 2.3.4 Định dạng ảnh TIF, TIFF Định nghĩa: Tiff (Tag Image File Format) Loại file ảnh bitmap này sử dụng thuật toán nén không mất dữ liệu và chúng ta có thể ghi lại dưới các định dạng file khác nhau, TIF và TIFF được sử dụng rộng rãi Photoshop cho phép chuyển đổi TIF sang định dạng ảnh vector và. .. dưới dạng một ma trận biểu diễn ảnh trong Matlab Cú pháp: A=imread(filename,fmt)  Hàm imwrite cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh dưới một trong các định dạng đã biết Cú pháp: imwrite(A,filename,fmt)  Hàm imfinfo dùng để xem các thông số của một file ảnh nào đó Cú pháp: imfinfo(filename,fmt) Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemoddate,... với các ảnh nghệ thuật cao, ảnh tự nhiên, hay ảnh chụp kỹ thuật số • Hình 4 Sự khác nhau giữa ảnh bitmap và ảnh vector 11 Chương II Chuyển đổi định dạng file ảnh 2.1 Các kiểu ảnh trong matlab 2.1.1 Ảnh Index Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu) map Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double Hình 5 Cấu trúc ảnh Index... trong ảnh lớn hơn 4096 Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một bộ từ điển gồm nhiều từ điển con Cứ hết một mảnh ảnh người ta lại gửi một mã xóa để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới đồng thời khởi tạo lại từ điển cho mảnh ảnh mới Mã xóa có giá trị là 256 + Từ mã thứ 257 chứa mã kết thúc thông tin Mã này có giá trị là 257 Như chúng ta đã biết, một file ảnh GIF... 20 2.3.3 Định dạng ảnh JPEG Định nghĩa: JPEG viết tắt của Joint Photographic Experts Group, một tổ chức tạo ra định dạng ảnh đồ họa JPEG sử dụng thuật toán nén mất thông tin Ảnh JPEG có tối đa 16 triệu màu (24-bit), cung cấp thông tin định rõ tỷ lệ, mức độ nén JPEG là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu... một số (rất ít) định dạng ảnh trợ giúp tạo hiệu ứng trong suốt b Ảnh vector • Được xác định bằng các đường toàn học, dễ dàng thay đổi, điều chỉnh tỷ lệ, hình dạng và tạo các hiệu ứng trên ảnh • Chất lượng ảnh không phụ thuộc vào độ phân giải, phóng to, thu nhỏ ảnh • Không tạo nền, luôn có mặc định hỗ trợ hiệu ứng trong suốt • Thường tạo các cảnh khung, xương sống ảnh có sẵn qua các hình dạng, đối tượng... một cách chính xác vào vị trí và sự xuất hiện của các yếu tố hình ảnh thậm chí đơn giản 2.5.3 Chuyển đổi định dạng từ ảnh vecto sang bitmap Chuyển đổi các tập tin định dạng vector sang các tập tin định dạng bitmap nói chung là khá dễ dàng Một hình ảnh vector có thể được chuyển vào một bitmap chỉ đơn giản bằng 32 cách chia nó ra thành pixels thành phần và sau đó viết những điểm ảnh vào một mảng trong... mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n Một ảnh BMP nbit có màu Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu) Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất • Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel) • Chiều rộng của ảnh (width),... trợ Metadata (EXIF) 2.3.4.1 Đánh giá ảnh lưu định dạng TIF,TIFF Ưu điểm: Đây là định dạng tập tin “không làm mất dữ liệu” của hình ảnh trong quá trình lưu trữ hay nén file Uy tín trong việc bảo lưu chất lượng hình ảnh giúp TIFF là định dạng mẫu mực trong việc lưu trữ tư liệu hình ảnh Nhược điểm: Khuyết điểm duy nhất của file TIFF chính là dung lượng cồng kềnh Do định dạng tập tin này lưu trữ toàn bộ thông

Ngày đăng: 12/10/2015, 10:32

Từ khóa liên quan

Mục lục

  • Danh mục hình vẽ

  • Danh mục bảng biểu

  • Danh mục chữ viết tắt

  • Chương I. Tổng quan về định dạng file ảnh

    • 1.1 Khái niệm ảnh số

    • 1.2 Pixel

    • Hình 1. Pixel

    • Hình 2. Chia khung ảnh thành các ô (Pixel)

    • 1.3 Độ phân giải (dpi,ppi)

    • 1.4 Lý thuyết màu

    • Hình 3. Nguyên lý trộn màu

    • 1.5 Độ sâu màu

    • 1.6 Định dạng ảnh bitmap

      • 1.5.1. Khái niệm

      • 1.5.2 Đặc điểm

      • 1.7. Định dạng ảnh vector

        • 1.7.1 Khái niệm

        • 1.7.2 Đặc điểm

        • 1.7.3 So sánh ảnh bitmap với ảnh vector

        • Hình 4. Sự khác nhau giữa ảnh bitmap và ảnh vector

        • Chương II. Chuyển đổi định dạng file ảnh

          • 2.1 Các kiểu ảnh trong matlab

            • 2.1.1 Ảnh Index

            • Hình 5. Cấu trúc ảnh Index

            • Hình 6. Ánh xạ bản đồ màu trong ảnh Index

              • 2.1.2 Ảnh Grayscale

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

Tài liệu liên quan